您的位置:

c语言40行代码,c语言400行代码大作业

本文目录一览:

求C语言编程例子40行的

因为我是学习计算机软件专业的,故对编写程序有着很深的体会。

对于 C 语言编程(或者是其它任何编程语言)来说,绝对不能够仅仅以编写源程序的行数多少作为衡量程序好坏的标准(仅仅是在凑行数)。而是必须要以程序结构的可读性、清晰性的好坏作为编程源代码好坏的标准。

谁帮我写一个50行的C语言代码啊~

#includestdio.h

#includestdlib.h

int next[50]; //存储next值的数组

int nextval[50];

typedef struct

{

char *ch;

int length; //串长度

}HString;

void StrAssign(HString *T,char *chars) //生成一个值等于串常量chars的串T

{

int i,j;

char *c;

if(T-ch)

free(T-ch); //释放T原有空间

for(i=0,c=chars; *c; ++i,++c) //求chars长度

;

if(!i)

{

T-ch = NULL;

T-length = 0;

}

else

{

if(!(T-ch=(char*)malloc((i+1)*sizeof(char))))

exit(1);

for(j=0;ji;++j)

T-ch[j] = chars[j];

T-ch[i] = '\0';

T-length = i;

}

}

int StrLength(HString s) //返回S的元素个数,称串的长度

{

return s.length;

}

int StrCompare(HString S,HString T) //串比较

{

//若ST,则返回值0;若S=T,则返回值=0,若ST,则返回值0;

int i;

for(i=0; iS.length iT.length; ++i)

if(S.ch[i]!=T.ch[i])

return S.ch[i] - T.ch[i];

return S.length - T.length;

}

void ClearString(HString *S) //将S清为空串

{

if(S-ch)

{

free(S-ch);

S-ch = NULL;

}

S-length = 0;

}

void Concat(HString *T,HString s1,HString s2)

{

//用T返回由s1,s2联接而成的新串

int i,j;

if(T-ch) free(T-ch); //释放旧空间

if(!(T-ch=(char*)malloc((s1.length+s2.length)*sizeof(char))))

exit(1);

T-length = s1.length + s2.length;

for(i=0;is1.length;++i)

T-ch[i] = s1.ch[i];

for(j=0;js2.length;++j,++i)

T-ch[i] = s2.ch[j];

}

void SubString(HString *sub,HString s,int pos,int len)

{

//用sub返回串s的第pos个字符起长度为len的子串

//其中,1=pos=strlenth(s)且0=len=strlength(s)-pos + 1.

int i,j;

if(pos1 || poss.length || len0 || lens.length-pos+1)

{

printf("SubString's Location error!\n");

exit(1);

}

if(sub-ch) free(sub-ch); //释放旧空间

if(!len)

{

sub-ch = NULL; sub-length = 0;

}

else

{

sub-ch = (char*)malloc((len+1)*sizeof(char));

for(i=0,j=pos-1;j=pos+len-2;++i,++j)

sub-ch[i] = s.ch[j];

sub-length = len;

sub-ch[sub-length] = '\0';

}

}

void get_next(char *chars,int next[]) //生成next值的函数

{

int i,j,temp;

i = 1;

j = 0;

next[1] = 0;

while(chars[i])

{

if(j==0 i==1) //第二位的next应该都为1

{

++i;++j;

next[i] = j;

}

else if(chars[i-1]!=chars[next[i]-1])//当测试next值上的数据与当前数据不等时进行

{

j = next[i]; //取得next值

while(chars[j-1]!=chars[i-1]) //如当前的值,与下一next值也不同,j值继续后退

{

temp = j; //取得前一next值

j = next[j]; //前一next值

if(j=0)

{

next[i+1] = 1;

++i;

break;

}

else if(chars[j-1]==chars[i-1])

{

next[i+1] = next[temp] + 1;//这里temp与J总是相隔一个位,所以是next[temp]

++i;

break;

}

}

}

else if(chars[i-1]==chars[next[i]-1]) //当测试next值上的数据与当前数据相等时进行

{

next[i+1] = next[i] + 1;

++i;

}

printf("next[%d]=%d\n",i,next[i]);

}

}

void next_change(char *chars,int nextval[])

{

int i,j,temp;

i = 1;

nextval[1] = 0;

for(j=1;chars[j];++j)

{

temp = next[j+1]; //取得当前的next[X]值

if(chars[j]==chars[temp-1]) //比较J位置上与相对于J位置的NEXT位上的元素值是否相等

{

nextval[j+1] = nextval[temp]; //如相等则将前面的nextval值赋给当前nextval的值

}

else nextval[j+1] = temp; //不相等则保留原next[]中的值

}

}

int Index(HString S,HString T,int pos)

{

int i,j;

i = pos-1;

j = 0;

get_next(T.ch,next);

next_change(T.ch,nextval);

while(i=S.length T.ch[j]) //字符串没到结尾不结束查找

{

if(S.ch[i]==T.ch[j])//相等则一起后移

{

i++;j++;

}

else if(S.ch[i]!=T.ch[j])

{

j = nextval[j+1]-1;//不相等时取得next值-1因为

//next是按1,2,3...算所以要-1

if(j=0 S.ch[i]!=T.ch[j])

{

i++;//J移到next值上如值是0则i向前移

j = 0;//因为j可以变成小于0

}

}

}

if(j=T.length) return i-T.length+1;

else return 0;

}

void StrInsert(HString *s,int pos,HString T) //在pos位置插入字符串T

{

int i,j;

if(pos1 || pos(s-length+1))

{

printf("strInsert's Location error!\n");

exit(1);

}

if(T.length)

s-ch = (char*)realloc(s-ch,(s-length+T.length+1)*sizeof(char)); //增加S的空间

for(j=s-length;j=pos-1;--j) //POS位置到最后的字符往后移

s-ch[j+T.length] = s-ch[j];

for(i=0;iT.length;++i) //T复制到S

{

s-ch[i+pos-1] = T.ch[i];

}

s-length = s-length + T.length;

}

void StrDelete(HString *s,int pos,int len)//S存在,从S中删除第POS个字符起长度为LEN的子串

{

int i,j;

if(pos1 || poss-length-len) //判断删除位置是否合理

printf("delete Location error!\n");

else

{

for(i=pos+len-1,j=0;is-length;++i,++j) //删除中间元素,后面的元素往前移

s-ch[pos-1+j] = s-ch[i];

s-length = s-length - len;

s-ch[s-length] = '\0';

}

}

void Replace(HString *s,HString t,HString v) //将V替换掉S中的T

{

int i;

i = Index(*s,t,1);

while(i0)

{

StrDelete(s,i,t.length);

StrInsert(s,i,v);

i = Index(*s,t,1);

}

}

void display(HString s)

{

printf("the string is :%s\n",s.ch);

}

int main(void)

{

HString obj,obj2,obj3,obj4;

obj.ch = NULL;//(char*)malloc(sizeof(char));

obj2.ch = NULL;

obj3.ch = NULL;

obj4.ch = NULL;

StrAssign(obj,"august");

StrAssign(obj2,"yx");

StrAssign(obj4,"ax");

display(obj);

display(obj2);

SubString(obj3,obj,3,3);

display(obj3);

StrInsert(obj3,1,obj2);

display(obj3);

Replace(obj3,obj2,obj4);

display(obj3);

StrDelete(obj3,1,3);

display(obj3);

return 0;

}

// 希望能够帮到你

求c语言程序源代码,主题随便,尽量超过40行!谢谢!!

#includestdio.h

#define

N

31

typedef

struct

{

long

num;

//学号

int

score;

//成绩

}Student;

void

sort(Student

stu[]);//排序函数

void

insert(Student

stu[],Student

stu1);//插入函数

void

count(Student

stu[]);//计算总分及平均分

void

search(Student

stu[],long

num);//查询函数

main()

{

Student

stu[N],stu1;

int

i;

long

num;

printf("输入30位学生的学号

成绩:\n");

for(i=0;iN-1;i++)

scanf("%ld%d",stu[i].num,stu[i].score);

sort(stu);

printf("输入欲插入的学生的学号

成绩:\n");

scanf("%ld%d",stu1.num,stu1.score);

insert(stu,stu1);

count(stu);

printf("输入欲查询的学生学号:");

scanf("%ld",num);

search(stu,num);

}

void

sort(Student

stu[])

{

int

i,j;

Student

t;

//冒泡法排序

for(i=0;iN-1;i++)

for(j=0;jN-1-i;j++)

if(stu[j].scorestu[j+1].score)

{t=stu[j];

stu[j]=stu[j+1];

stu[j+1]=t;}

//打印排序后的信息

printf("名次

学号

成绩\n");

for(i=0;iN-1;i++)

printf("第%d名

%-6ld%-6d\n",i+1,stu[i].num,stu[i].score);

}

void

insert(Student

stu[],Student

stu1)

{

int

i,j;

for(i=0;iN-1;i++)

{

if(stu1.scorestu[i].score)

{

for(j=N-1;ji;j--)

stu[j]=stu[j-1];

stu[i]=stu1;

break;

}

stu[N-1]=stu1;

}

//打印插入后的信息

printf("名次

学号

成绩\n");

for(i=0;iN;i++)

printf("第%d名

%-6ld%-6d\n",i+1,stu[i].num,stu[i].score);

}

void

count(Student

stu[])

{

long

sum=0;

int

i;

for(i=0;iN;i++)

sum+=stu[i].score;

printf("总分:%-3ld\n平均分:%-3ld\n",sum,sum/N);

}

void

search(Student

stu[],long

num)

{

int

i;

printf("名次

学号

成绩\n");

for(i=0;iN;i++)

{

if(num==stu[i].num)

{printf("第%d名

%-6ld%-6d\n",i+1,stu[i].num,stu[i].score);

return;

}

}

printf("无此学生\n");

}

求50行简单C语言程序代码,基础的就好

#include stdio.h

#include stdlib.h

#define NUM 10

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//冒泡排序算法

//基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

void bubbleSort(int *arr, int n) {

int i,j;

for (i = 0; in - 1; i++)

for (j = 0; j n - i - 1; j++) {

//如果前面的数比后面大,进行交换

if (arr[j] arr[j + 1]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

//最差时间复杂度为O(n^2),平均时间复杂度为O(n^2)。稳定性:稳定。辅助空间O(1)。

//升级版冒泡排序法:通过从低到高选出最大的数放到后面,再从高到低选出最小的数放到前面,

//如此反复,直到左边界和右边界重合。当数组中有已排序好的数时,这种排序比传统冒泡排序性能稍好。

//升级版冒泡排序算法

void bubbleSort_1(int *arr, int n) {

//设置数组左右边界

int left = 0, right = n - 1;

//当左右边界未重合时,进行排序

while (left=right) {

int i,j;

//从左到右遍历选出最大的数放到数组右边

for (i =left; i right; i++) {

if (arr[i] arr[i + 1]) {

int temp = arr[i];

arr[i] = arr[i + 1];

arr[i + 1] = temp;

}

}

right--;

//从右到左遍历选出最小的数放到数组左边

for (j = right; j left; j--) {

if (arr[j + 1] arr[j]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

left++;

}

}

int main(int argc, char *argv[]) {

int arr[NUM],i,j,temp;

printf("请输入10个数:\n");

for(i=0; iNUM; i++) {

printf("请输入第(%d)个数:",i+1);

scanf("%d",arr[i]);

}

printf("\n输入如下排列:\n");

for(i=0; iNUM; i++) {

printf("%4d",arr[i]);

}/*

for(i=0; iNUM; i++) {

for(j=i+1; jNUM; j++) {

if(arr[i]arr[j]) {

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}*/

bubbleSort_1(arr,NUM);

/*printf("\n从小到大如下排列:\n");

for(i=0; iNUM; i++) {

printf("%4d",arr[i]);

}*/

printf("\n从大到小如下排列:\n");

for(i=NUM-1; i=0; i--) {

printf("%4d",arr[i]);

}

return 0;

}

c语言100行简单一点的代码

登录幼儿园200个小朋友的数据:姓名、性别、年龄、身高、体重、出生日期,分别按年龄排序后输出。

#includestdio.h

#define N 200

struct child

{

char name[10];

char sex[3];

int age;

int height;

float weight;

struct {

int year;

int month;

int day;

}bdate;

}ch[N];

void input()

{

int i;

for(i=0;iN;i++)

{

printf("\n请输入第%d名小朋友信息:\n",i+1);

printf("姓名:");

scanf("%s",ch[i].name);

printf("性别:");

scanf("%s",ch[i].sex);

printf("年龄:");

scanf("%d",ch[i].age);

printf("身高:");

scanf("%d",ch[i].height);

printf("体重:");

scanf("%f",ch[i].weight);

printf("出生日期[YYYY-MM-DD]:");

scanf("%d-%d-%d",ch[i].bdate.year,ch[i].bdate.month,ch[i].bdate.day);

}

}

void sort()

{

struct child ct;

int i,j;

for(i=0;iN-1;i++)

for(j=0;jN-i-1;j++)

if(ch[j].heightch[j+1].height)

{

ct=ch[j];

ch[j]=ch[j+1];

ch[j+1]=ct;

}

}

void output()

{

int i;

printf("\n\t幼儿园小朋友一览(依身高排序)\n");

printf("===================================================\n");

printf(" 姓名 性别 年龄 身高 体重 出生日期 \n");

printf("===================================================\n");

for(i=0;iN;i++)

printf(" %-8s %-2s %2d %d %3.1f %d.%d.%d\n",ch[i].name,ch[i].sex,ch[i].age,ch[i].height,ch[i].weight,ch[i].bdate.year,ch[i].bdate.month,ch[i].bdate.day);

}

void main()

{

input();

sort();

output();

}