1、第 1 页 共 2 页1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#includeint main()int i,j,t;int max(int,int); int min(int,int); scanf(“%d%d“,if(iint main()int max4(int,int,int,int); /对 max4 的函数声明int a,b,c,d;scanf(“%d%d%d%d“, /输入 4 个数 printf(“max=%dn“,max4(a,b,c,d);/调用 4 个数中的最大者return 0;int max4(int a
2、,int b,int c,int d) /定义 max4 函数 int max2(int,int); /对 max2 的函数声明 return max2(max2(max2(a,b),c),d); /调用 max2 把作为函数值带回 main 函数int max2(int a,int b) return(ab?a:b); /返回条件表达式的值,即 a 和 b 中的大者3. 用递归调用的方法求 5!。#includeint main()int fac(int);int n;scanf(“%d“,第 2 页 共 2 页printf(“%d!=%dn“,n,fac(n);return 0;int f
3、ac(int n)if(n=0|n=1)return 1;else return fac(n-1)*n;4. 按以下递归公式求函数的值。例如,当给 n 输入 5 时,函数值为 18, (要求用递归实现) 。)1(2)1(0fun() nnf#includeint main()int fun(int);int n;scanf(“%d“,printf(“%dn“,fun(n);return 0;int fun(int n)if(n=1)return 10;else return fun(n-1)+2;5. 用递归法将一个整数 n 转换成字符串。例如,输入 483,应输出字符串“483” ,n 的位
4、数不确定,可以是任意位数的整数。#includevoid main()void fun(int);int n;scanf(“%d“,if(n#define N 5int main()第 3 页 共 2 页void fun(int a);int aN,i;for(i=0;i#define N 5#define M 10int main()int score_1N,score_2M;int i,fun(int a,int);for(i=0;iint main()void c(char st1,char st2);char s1100,s2100;gets(s1); gets(s2);c(s1,s2
5、); puts(s1);return 0;void c(char st1,char st2)第 4 页 共 2 页int i=0,k=0;while(st1+i);while(st1i+=st2k+);9. 编写一个函数,比较两个字符串的大小,并在 main 函数中调用此函数,不要调用 strcmp 函数。#includeint main()char a100,b100;void fun(char a,char b);gets(a);gets(b);fun(a,b);return 0;void fun(char a,char b)for(int i=0;i+)if(aibi)puts(a);b
6、reak;else if(aiint a11=1,3,5,7,14,23,45,87,155,231;int main()int c,i;void fun(int a,int c);printf(“input an integer:“);scanf(“%d“,fun(a,c);for(i=0;ia9)a10=t;elsefor(i=0;ii;j-)aj=aj-1;第 5 页 共 2 页ai=t;11. 写一个判断素数的函数,在主函数输入一个整数,是素数时输出 yes,否则输出 no,结果要求在主函数中输出。#includeint main()int a;int is_prime(int);sc
7、anf(“%d“,if(is_prime(a)=0)printf(“yesn“);elseprintf(“non“);return 0;int is_prime(int a)int j,flag=1;for(j=2;j=a/2)flag=0;return flag;12. 编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在 main 函数中调用此函数,输入数据和最后输出都在主函数中实现。#includechar a50,b50=0;int main()void fun(char a,char b);gets(a);fun(a,b);puts(b);return 0;void fu
8、n(char a,char b)int i,j;for(i=0,j=0;ai!=0;i+)if(ai=a|ai=A|ai=e|ai=E|ai=i|ai=I|ai=o|ai=O|ai=u|ai=U)bj+=ai;13. 建立动态数组,输入 5 个学生的成绩,编写函数检查其中有无低于 60 分的学生成绩,要求输入和输出功能在主函数中完成。#include#include int main()void check(int *); int *p,i; p1=(int *)malloc(5*sizeof(int); 第 6 页 共 2 页for(i=0;iint main()void ave(int a
9、10);int a10,i;for(i=0;iint main()int a10,i,j,t,*p;for(i=0;i*(p+j+1)t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;for(i=0;i#includeint main()char a50,*p;int l,i;printf(“input string a:“);gets(a);p=a;l=strlen(a);for(l;l0;l-)if(*(p+l)= )for(i=l;*(p+i)!=0;i+)*(p+i)=*(p+i+1);puts(p);return 0;17. 用冒泡法实现对 10 个整数按从大到
10、小的顺序排序输出(要求用指针实现) 。#includeint main()int a10,i,j,t,*p=a;for(i=0;i*(p+j+1)t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;for(i=0;iint main()int a10,i,j,t,*p=a;for(i=0;i*(p+j)第 8 页 共 2 页t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;for(i=0;iint main()char a100,b20,*p,*q;void copy_string(char *,char *);gets(b);p=a;q=b;copy_str
11、ing(p,q);puts(p);return 0;void copy_string(char *p,char *q)while(*p+=*q+);20. 写一函数,求一个字符串的长度。在 main 函数中输入字符串,并输出其长度。 (要求用指针实现)#includeint main()char a100,*p=a;int fun(char *);gets(a);printf(“%dn“,fun(a);return 0;int fun(char *p)int k=0;while(*p+)k+;return k;21. 输入一个字符串,内有数字和非数字字符,例如:“ A123x456 17960
12、? 302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组 a 中。例如,123 放在 a0,456 放在 a1统计共有多少个整数,并输出这些数。 (要求用指针实现)#includechar a100;int main()void fun(char *);char *p=a;gets(p);fun(p);return 0;第 9 页 共 2 页 void fun(char *p)int num100,s,k,j=0,i=0;s=0;while(*(p+i)k=0;while(*(p+i)=0int b50,c50=0,k,j,i;gets(a);p=a;k=0; for(i=0
13、;*(p+i)!=0;i+)if(*(p+i)=0char stir460;printf(“input 4 string:n“);for(int i=0;i=a)else if(*(*(p+i)+j)=Achar *p=max,*p1=b;gets(max);for(int i=0;iint main()void fun (int x,int *pp, int *n);int x,*pp=anta100;scanf(“%d“,fun(x,pp,return 0;void fun (int x,int *pp, int *n)int i,j=0,t;for(i=2;iint main()int
14、an(int a45);int a45,i,j;for(i=0;imax)max=aij;m=j;f=1;for(k=0;kakm)f=0;第 12 页 共 2 页if(f)return(aim);break;26. 输入 3 个学生 4 门课的成绩,分别用函数实现如下功能:(1) 计算每个学生平均分;(2) 计算每门课的平均分;(3) 找出 12 个分数中最高分所对应的学生和课程。#includeint score34;int a_stu3,acorn4; int race;int main()int i,j;void avers();void aver_cour();void highes
15、t();printf(“no. cour1 cour2 cour3 cour4n“);for(i=0;ihigh)high=scoreij;r=i+1;c=j+1;printf(“nhighest :%d NO.%d course %2dn“,high,r,c);27. 用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数。#includechar b50;int main()char a50;void fun(char a);gets(a);fun(a);return 0;void fun(char a)int i,j,max=0,k,n,t;for(i=0;ai!=
16、0;i+)j=0;n=i;while(an=avoid funny(int (*n)4);int score34=98,78,87,86,85,87,76,45,93,95,67,87;average(*score);funny(score);return 0;void average(int *p)int sum=0;for(int i=0;iint main()int score34=98,78,87,86,85,87,76,45,93,95,67,87;void funny(int (*n)4,int);int k;printf(“The score of No.“);scanf(“%d
17、“,funny(score,k-1);return 0;void funny(int (*n)4,int k)for(int j=0;jstructint year;int month;int day;date;int main()int I, days;int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31;第 15 页 共 2 页printf(“input year,month,day:“);scanf(“%d,%d,%d“,days=0;for(i=1;i=3)days+=1;printf(“%d/%d is the %ditch day
18、in %d.n“,date.month,date.day,days,date.year);return 0;31. 设计候选人得票统计程序,要求有 4 个侯选人(分别是 Zhang 、Wang 、Li、 Zhao) ,选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#include#includestruct Personchar name20;int count;leader4=“Zhang“,0,“Wang“,0,“Li“,0,“Zhao“,0;int main()int i,j;char leader_name20;for(i=1;i#define N 3struct Stude
19、ntint num;char name20;float score;int main()struct Student studN;struct Student temp;int i,j;printf(“请输入三个学生的信息: 学号、姓名、成绩:n“);for(i=0;istudi.score)temp=studi;studi=studj;studj=temp;for(i=0;i#define N 3struct Studentint num;char name20;float score3;float aver;int main()void input(struct Student stud)
20、;struct Student max(struct Student stud);void print(struct Student stud);struct Student studN,*p=stud;input(p);print(max(p);return 0;void input(struct Student stud)int i;printf(“请输入各个学生的信息: 学号、姓名、三门课成绩 :n“);for(i=0;istudm.aver)m=i;return studm;void print(struct Student stud)printf(“n 成绩最高的学生是:n“);第
21、17 页 共 2 页printf(“学号:%dn 姓名 :%sn 三门课成绩:%5.1f,%5.1f,%5.1fn 平均成绩:%6.2fn“,stu.num,stu.name,stu.score0,stu.score1,stu.score2,stu.aver);34. 建立一个链表,每个结点包括:学号、姓名、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。#include#include#define LEN sizeof(struct student)struct studentchar num6;char name8;char sex2;int age;stru
22、ct student *next;stud10;int main()struct student *p,*pt,*head;int i,length,iage,flag=1;int find=0;while(flag=1)printf(“input length of listnext=p;pt=p;printf(“NO.:“);scanf(“%s“,p-num);printf(“name:“);scanf(“%s“,p-name);printf(“sex:“);scanf(“%s“,p-sex);printf(“age:“);scanf(“%d“,p-next=NULL;p=head;pri
23、ntf(“n MO.name sex agen“);while(p!=NULL)printf(“%4s%8s%6s%6dn“,p-mump-name-six-age);p=p-next;printf(“input age:“);scanf(“%d“,第 18 页 共 2 页pt=head;p=pt;if(pt-age=iage)p=pt-next;head=pt=p;find=1;elsept=pt-next;while(pt!=NULL)if(pt-age=iage)p-next=pt-next;find=1;elsep=pt;pt=pt-next;if(!find)printf(“not
24、found %d.“,iage);p=head;printf(“n NO.name sex agen“);while(p!=NULL)printf(“%4s%8s“,p-mump-name);printf(“%6s%6dn“,p-six-age);p=p-next;return 0;35. 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数) ,凡报到 3 的人退出圈子,问最后留下来的是原来第几号的那位。 (要求用指针链表实现)#include#define N 13int main() int I, out=0,sum=0;struct Peopleint num;in
25、t data;struct People *next;aN;struct People *head,*p;for(i=0;idata=1)sum+;if(sum=3)p-data=0;out+;sum=0;p=p-next;if(p=NULL)p=head;doif(p-data=1)printf(“最后留下的学生的学号为:No.%dn“,p-num);break;p=p-next;while(p!=NULL);return 0;36. 从键盘上读入 3 个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。#include#include#includeint mai
26、n()FILE *fop;char a320,t10;int i,j,k;printf(“Enter three strings:n“);for(i=0;i0)strcpy(teaj);strcpy(aj,aj+1);strcpy(aj+1,t);if(fop=fopen(“d:file.txt“,“w“)=NULL)printf(“cant open filen“);exit(0);第 20 页 共 2 页for(i=0;i3;i+)puts(ai,fop);puts(“n“,fp);puts(ai);return 0;37. 在磁盘文件上存有 10 个学生的数据。要求将第 1,3,5,7,9 个学生数据输入计算机,并在屏幕上显示出来。38. 有两个磁盘文件“file1”和“file2” ,各存放一行字母,要求把两个文件中的信息合并(按字母顺序排序) ,输出到一个新文件“file3”中去。