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;iint main()float average(int c,int n);int i,score_15,score_210;float p,q;for(i=0;iint main()void c(char st1,char st2);char s1100,s2100;gets(s1); gets(s2);c(s1,s2); p
5、uts(s1);return 0;void c(char st1,char st2)int i=0,k=0;第 4 页 共 2 页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);break
6、;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;ai=t;第 5 页 共 2 页11. 写一个判断素数的函数,在主函数输入一个整数,是素数时输出 yes,否则输出 no,结果要求在主函数中输出。#includeint main()int a;int is_prime(int);scanf(
7、“%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 fun(ch
8、ar 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); for(i=0;iint main()void ave(int a10);int a10,i;f
9、or(i=0;i#includeint main()int retu(char a,char b);char c200,d100; gets(c);gets(d);printf(“出现的次数为:%dn“,retu(c,d);return 0;int retu(char a,char b)int i,j,t,m,s=0;for(i=0;ai!=0;i+)m=0;if(ai=b0)第 7 页 共 2 页for(t=i,j=0;bj!=0;t+,j+)if(bj=at)m+;if(m=strlen(b)s+;return s;16 编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。如
10、:输入“I am a student!”,输出“Iamastudent!” ,要求用指针实现。#include#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 个整数按从大到小的顺序排序输出(要求用指针实现) 。#includeint main()int a10,i,j,t,*p=a;f
11、or(i=0;i*(p+j+1)t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;for(i=0;iint main()第 8 页 共 2 页int a10,i,j,t,*p=a;for(i=0;i*(p+j)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_string(p,q);puts(p);return 0;void copy_string(char *p,char *
12、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? 302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组 a 中。例如,123 放在 a0,45
13、6 放在 a1统计共有多少个整数,并输出这些数。 (要求用指针实现)#includechar a100;第 9 页 共 2 页int main()void fun(char *);char *p=a;gets(p);fun(p);return 0; 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;*(p+i)!=0;i+)if(*(p+i)=0char str460;printf(“input 4 stri
14、ng:n“);for(int i=0;i=a)else if(*(*(p+i)+j)=Achar *p=max,*p1=b;gets(p);第 11 页 共 2 页for(int i=0;iint main()void fun (int x,int *pp, int *n);int x, a100,*pp=a,n;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 an(int a45);int a45,i,j;for(i=0;imax)max=aij;m
15、=j;第 12 页 共 2 页f=1;for(k=0;kakm)f=0;if(f)return(aim);break;26. 输入 3 个学生 4 门课的成绩,分别用函数实现如下功能:(1) 计算每个学生平均分;(2) 计算每门课的平均分;(3) 找出 12 个分数中最高分所对应的学生和课程。#includeint score34;int a_stu3,a_cour4; int r,c;int main()int i,j;void aver_stu();void aver_cour();void highest();printf(“nNO. cour1 cour2 cour3 cour4n“)
16、;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!=0;i+)j=0;n=i;while(an=avoid fun_n(int (*n)
17、4);int score34=98,78,87,86,85,87,76,45,93,95,67,87;average(*score);fun_n(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 fun_n(int (*n)4,int);int k;printf(“The score of No.“);scanf(“%d“,fun_n(score,k-1);return 0;void fun_n(int
18、 (*n)4,int k)for(int j=0;jstructint year;int month;int day;date;第 15 页 共 2 页int main()int i,days;int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31;printf(“input year,month,day:“);scanf(“%d,%d,%d“,days=0;for(i=1;i=3)days+=1;printf(“%d/%d is the %dth day in %d.n“,date.month,date.day,days,date.year);
19、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 Studentint num;char name20;float score;int main()s
20、truct Student stuN;struct Student temp;int i,j;printf(“请输入三个学生的信息: 学号、姓名、成绩:n“);第 16 页 共 2 页for(i=0;i#define N 3struct Studentint num;char name20;float score3;float aver;int main()void input(struct Student stu);struct Student max(struct Student stu);void print(struct Student stu);struct Student stuN
21、,*p=stu;input(p);print(max(p);return 0;void input(struct Student stu)int i;printf(“请输入各个学生的信息: 学号、姓名、三门课成绩 :n“);for(i=0;istum.aver)m=i;return stum;第 17 页 共 2 页void print(struct Student stu)printf(“n 成绩最高的学生是:n“);printf(“学号:%dn 姓名 :%sn 三门课成绩:%5.1f,%5.1f,%5.1fn 平均成绩:%6.2fn“,stu.num,stu.name,stu.score0
22、,stu.score1,stu.score2,stu.aver);34. 建立一个链表,每个结点包括:学号、姓名、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。#include#include#define LEN sizeof(struct student)struct studentchar num6;char name8;char sex2;int age;struct student *next;stu10;int main()struct student *p,*pt,*head;int i,length,iage,flag=1;int find=0;w
23、hile(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;printf(“n MO.name sex agen“);while(p!=NULL)printf(“%4s%8s%6s%6dn“,p-num,p-name,p-sex,p-age);第 18 页 共 2
24、 页p=p-next;printf(“input age:“);scanf(“%d“,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 found %d.“,iage);p=head;printf(“n NO.name sex agen“);while(p!=NULL)printf(“%4s%8s“,p-num,p-nam
25、e);printf(“%6s%6dn“,p-sex,p-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;int data;struct People *next;aN;struct People *head,*p;for(i=0;idata=1)sum+;if(sum=3)p-data=0;
26、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 main()FILE *fp;char a320,t10;int i,j,k;printf(“Enter three strings:n“);for(i=0;i0)strcpy(t,aj);
27、strcpy(aj,aj+1);strcpy(aj+1,t);if(fp=fopen(“d:file.txt“,“w“)=NULL)第 20 页 共 2 页printf(“cant open filen“);exit(0);for(i=0;i#include#define N 5struct Studentchar name10;int socre;studN;void save()FILE *fp;int i;if(fp=fopen(“d:file2.dat“,“wb“)=NULL)printf(“cannot open filen“);return;for(i=0;i#includeint
28、 main()FILE *p,*q,*m;int i=0,s,j,k;char a,b,c100,d;p=fopen(“d:file1.dat“,“w+“);q=fopen(“d:file2.dat“,“w+“);m=fopen(“d:file3.dat“,“w“);while(a=getchar()!=n)putc(a,p);ci+=a;while(b=getchar()!=n)putc(b,q);ci+=b;ci=0;rewind(p); rewind(q);s=strlen(c);for(i=0;icj)k=j;d=ck;ck=ci;ci=d;puts(c);fputs(c,m);return 0;