C程序设计答案.docx_第1页
C程序设计答案.docx_第2页
C程序设计答案.docx_第3页
C程序设计答案.docx_第4页
C程序设计答案.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安阳工学院12级C程序设计答案第一题:. 输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#includeint main()int min(int a,int b);int max(int a,int b);int a,b;printf(请输入两个数:);scanf(%d%d,&a,&b);printf(%d,%d的最大公约数为:%dn,a,b,max(a,b);printf(%d,%d的最小公倍数为:%dn,a,b,min(a,b);return 0;int min(int a,int b)int i;for(i=a;i=a*b;i+)if(i%a=0&i%b=0) break;return i;int max(int a,int b)int i,c=0;for(i=1;i=a;i+)if(a%i=0&b%i=0)c=i;return c;第二题:输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#includeint main()int zd(int a,int b,int c,int d);int a,b,c,d;printf(请输入四个整数:);scanf(%d%d%d%d,&a,&b,&c,&d);printf(%d,%d,%d,%d中的最大值为:%dn,a,b,c,d,zd(a,b,c,d);return 0;int zd(int a,int b,int c,int d)int tt(int a,int b);return (tt(tt(tt(a,b),c),d);int tt(int a,int b)int c;if(ab)c=a;elsec=b;return c;第三题:用递归调用的方法求5!。#includeint main()int jc(int a);int b=5;printf(%d!=%dn,b,jc(b);return 0;int jc(int a)int b;if(a=1)b=1;elseb=a*jc(a-1);return b;第四题:按以下递归公式求函数的值。 例如,当给n输入5时,函数值为18,(要求用递归实现)。#includeint main()int fun(int a);int n;printf(请输入n:);scanf(%d,&n);printf(fun(%d)=%dn,n,fun(n);return 0;int fun(int a)int b;if(a=1)b=10;elseb=fun(a-1)+2;return b;第五题:用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。#include#includeint main()void dg(char a,long n,int b);char a20,b;long n;int m,i;printf(请输入n:);scanf(%ld,&n);dg(a,n,0);m=strlen(a);for(i=0;im/2;i+)b=am-i-1;am-i-1=ai; ai=b;printf(%sn,a);return 0;void dg(char a,long n,int b) long c,d;if(n10)ab=0+n;ab+1=0;else ab=n%10+0;dg(a,n/10,b+1);第六题:写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。#includeint main()void nn(int a,int n);int a20,i,n;printf(请输入n:);scanf(%d,&n);printf(请输入%d个数的数组:n,n);for(i=0;in;i+)scanf(%d,&ai);nn(a,n);printf(倒序存放为:n);for(i=0;in;i+)printf(%d ,ai);printf(n);return 0;void nn(int a,int n)int i,m;for(i=0;in/2;i+)m=an-i-1;an-i-1=ai;ai=m;第七题:编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。#includeint main()float tt(int a,int b);int a5,b10,i;printf(请输入五个数字的数组:n);for(i=0;i5;i+)scanf(%d,&ai);printf(请输入十个数字的数组:n);for(i=0;i10;i+)scanf(%d,&bi);printf(五个数字的数组的平均数为:%5.2fn十个数的数组的平均数为:%5.2fn,tt(a,5),tt(b,10);return 0;float tt(int a,int b)float s=0;int i;for(i=0;ib;i+)s=s+ai;return s/b;第八题:编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。#includeint main()void tt(char a,char b);char a50,b50;printf(请输入两个字符数组:n);gets(a);gets(b);printf(把两个数组连起来为:n);tt(a,b);puts(a);return 0;void tt(char a,char b)int i,j;for(i=0;ai!=0;i+);for(j=0;bj!=0;j+,i+)ai=bj;ai=0;第九题:编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。#includeint main()int tt(char a,char b);char a50,b50;int n;printf(请输入两个字符串a,b:n);gets(a);gets(b);n=tt(a,b);if(n=0)printf(相等n);else if(n0)printf(abn);elseprintf(abn);return 0;int tt(char a,char b)int i=0;while(ai=bi)if(ai=0&bi=0)break;elsei+;return ai-bi;第十题:编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能, 并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#includeint main()void tt(int a,int b);int a11=10,20,30,40,50,60,70,80,90,100,i,n;printf(原升序整型数组为:n);for(i=0;i10;i+)printf(%d ,ai);printf(n请输入一个整数n:);scanf(%d,&n);tt(a,n);printf(n插入后数组为:n);for(i=0;i11;i+)printf(%d ,ai);printf(n);return 0;void tt(int a,int b)int i,c;for(i=0;i=a9)a10=b;elseif(bai)c=ai;ai=b;b=c;第十一题:写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。#includeint main()int tt(int a);int n;printf(请输入一个整数n:);scanf(%d,&n);if(tt(n)=1)printf(yesn);elseprintf(non);return 0;int tt(int a)int i,n=1;for(i=2;ia;i+)if(a%i=0)n=0;break;return n;第十二题:编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#includeint main()void tt(char a,char b);char a100,b40;printf(请输入一个字符串:n);gets(a);tt(a,b);printf(字符串%s中元音字母有:n%sn,a,b);return 0;void tt(char a,char b)int i,j;for(i=0,j=0;ai!=0;i+)if(ai=a|ai=e|ai=i|ai=o|ai=u|ai=A|ai=E|ai=I|ai=O|ai=U)bj+=ai;bj=0;第十三题:建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。#include#includeint main()int tt(float *a,float *b);float *a,*b;int i,n;a=(float*)malloc(5*sizeof(float);b=(float*)malloc(5*sizeof(float);printf(请输入五个人的成绩:n);for(i=0;i5;i+)scanf(%f,a+i);n=tt(a,b);if(n=0)printf(无低于60分的n);elsefor(i=0;in;i+)printf(%5.2f ,*(b+i);printf(n);return 0;int tt(float *a,float *b)int i,j=0;for(i=0;i5;i+)if(*(a+i)60)bj+=ai;return j;第十四题:有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。#includeint main()int tt(float a,float b,int c);int n,c10,i;float a10,b10;printf(请输入十个学生的成绩:n);for(i=0;i10;i+)scanf(%f,&ai);n=tt(a,b,c);printf(不及格的数组的序号为:n);for(i=0;in;i+)printf(%d ,ci);printf(n不及格的分数为:n);for(i=0;in;i+)printf(%5.2f ,bi);printf(n);return 0;int tt(float a,float b,int c)int i,j;for(i=0,j=0;i10;i+)if(ai60)bj=ai;cj=i;j+;return j;第十五题:编程实现:从键盘输入两个字符串,统计第二个字符串在第一个字符串中出现的次数,在主函数中调用统计函数并输出结果。#includeint main()int tt(char a,char b);char a100,b30;printf(请输入两个字符串:n);gets(a);gets(b);printf(b在a中出现的次数为:%dn,tt(a,b);return 0;int tt(char a,char b)int i,c=0,d=0,j=0;for(i=0;ai!=n;i+)if(d=1&bj=0)c+;j=0;if(ai=bj)d=1;j+;elsed=0;j=0;if(d=1&bj=0)c+;return c;第十六题:编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。如:输入“I am a student!”,输出“Iamastudent!”,要求用指针实现。#includeint main()char *a,b50;int i,j;printf(请输入一个字符串:n);gets(b);a=b;for(i=0;*(a+i)!=0;i+)if(*(a+i)= )for(j=i;*(a+j)!=0;j+)*(a+j)=*(a+j+1);printf(去掉空格后为:n);puts(a);return 0;第十七题:. 用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。#includeint main()void tt(int *a,int b);int *a,b10,i;a=b;printf(请输入十个整数:n);for(i=0;i10;i+)scanf(%d,a+);a=b;tt(a,10);printf(n十个数从大到小顺序为:n);for(i=0;i10;i+)printf(%d ,*(a+i);printf(n);return 0;void tt(int *a,int b)int i,j,n;for(i=0;i10;i+)for(j=0;jb-i-1;j+)if(ajaj+1)n=aj+1;aj+1=aj;aj=n;第十八题:用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)#includeint main()void tt(int *a,int b);int *a,b10,i;a=b;printf(请输入十个整数:n);for(i=0;i10;i+)scanf(%d,a+);a=b;tt(a,10);printf(n十个数从小到大顺序为:n);for(i=0;i10;i+)printf(%d ,*(a+i);printf(n);return 0;void tt(int *a,int b)int i,j,n;for(i=0;i10;i+)for(j=i+1;jaj)n=aj;aj=ai;ai=n;第十九题:编写一个函数实现字符串复制功能,不能使用strcpy函数,并在main函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。(要求用指针作为函数参数)#includeint main()void tt(char a,char b);char a50,b50;printf(请输出一个字符串a:n);gets(a);tt(b,a);printf(吧a赋值给b得b为:n);puts(b);return 0;void tt(char a,char b)int i;for(i=0;bi!=0;i+)ai=bi;ai=0;第二十题:写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针实现)#includeint main()int tt(char a);char a100;printf(请输入一个字符串:n);gets(a);printf(字符串a的长度为:%dn,tt(a);return 0;int tt(char a)int i;for(i=0;ai!=0;i+);return i;第二十一题:输入一个字符串,内有数字和非数字字符,例如:“A123x456 17960? 302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组a中。例如,123放在a0,456放在a1统计共有多少个整数,并输出这些数。(要求用指针实现)#includeint main()int tt(char *a,int *b);int i,n,*b,d20;char *a,c100;b=d;a=c;printf(请输入一个字符串:n);gets(a);n=tt(a,b);printf(一共有%d个整数它们分别为:n,n);for(i=0;i=0&ai=9)bm=bm*p+(ai-0);p=10;n=1;else if(n=1)m+;n=0;p=1;bm=0;if(n=1)m+;return m;第二十二题:有一篇文章,共有4行文章,每行有60个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。(要求用指针实现)#includeint main()char (*a)60,b460;int j,i,c=0,d=0,e=0,f=0,g=0;printf(请输入入四行文章每行60个字符:n);for(i=0;i4;i+)gets(bi);a=b;for(i=0;i4;i+)for(j=0;j=A&aij=a&aij=0&aij=9)e+;else if(aij= )f+;elseg+;printf(大写字母有%d个n小写字母有%d个n数字有%d个n空格有%d个n其他字符有%d个n,c,d,e,f,g);return 0;第二十三题:编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。(要求用指针知识实现)#include#includeint main()char b1050,*c,(*a)50;int i;a=b;printf(请输入十个字符串:n);for(i=0;i10;i+)gets(ai);c=b0;for(i=1;istrlen(c)c=ai;printf(最长的是:n%sn,c);return 0;第二十四题:利用函数实现如下功能:从键盘输入任意个正整数,求出它的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回。(自定义函数void fun (int x, int * pp, int *n) )。#includeint main()void fun(int x,int *pp,int *n);int x,i,a20,*pp,b,*n;pp=a;n=&b;printf(请输入整数x:);scanf(%d,&x);fun(x,pp,n);printf(%d共有%d个偶数因子它们分别为:n,x,*n);for(i=0;i*n;i+)printf(%d ,ppi);printf(n);return 0;void fun(int x,int *pp,int *n)int i,j=0;*n=0;for(i=2;ix;i+)if(x%i=0&i%2=0)ppj+=i;*n=*n+1;第二十五题:编写一个函数,实现求出一个2维数组中的鞍点,并在main函数中调用此函数,2维数组中数据输入和鞍点数据输出都在主函数中实现。(鞍点是指某个数在该行上最大,同时在该列上最小)#includeint main()int tt(int (*a)4);int i,j,(*a)4,b44,c=0;printf(请输入一个4*4的二维数组:n);a=b;for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&bij);c=tt(a);if(c=0)printf(不存在鞍点n);elseprintf(鞍点为:%dn,c);return 0;int tt(int (*a)4)int i,j,k,n=0,m;for(i=0;i4;i+)k=0;m=ai0;for(j=1;jm)m=aij;k=j;for(j=0;j4;j+)if(ajkm)break;if(j=4)n=m;return n;第二十六题:输入3个学生4门课的成绩,分别用函数实现如下功能: (1) 计算每个学生平均分;(2) 计算每门课的平均分; (3) 找出12个分数中最高分所对应的学生和课程。#includeint main()struct studentchar a10;float b5;c3;int i,j,n=0,m=1;float k;printf(请输入三个学生的姓名和成绩n姓名 成绩n);for(i=0;i3;i+)ci.b0=0;scanf(%s%f%f%f%f,ci.a,&ci.b1,&ci.b2,&ci.b3,&ci.b4);k=c0.b1;for(i=0;i3;i+)for(j=1;jk)n=i;m=j;k=ci.bj;ci.b0=ci.b0/4;printf(平均成绩分别为:n);for(i=0;i3;i+)printf(%s %5.2fn,ci.a,ci.b0);printf(最高分是%s的第%d科%5.2f分n,cn.a,m,k);return 0;第二十七题:用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数。#includeint main()void tt(char a,char b);char a200,b40;printf(请输入一行字符串:n);gets(a);tt(a,b);printf(最长的单词为:);puts(b);return 0;void tt(char a,char b)int i,j=0,k30,m=0,n=0,o,p30,q;for(i=0;ai!=0;i+)if(ai=A)|(ai=a)m+;elsekj=m;pj=i;j+;m=0;n+;if(m!=0)kj=m;pj=i;j+;n+;m=0;q=k0;for(i=1;iq)q=ki;j=i;for(i=pj-q;ipj;i+)bm+=ai;bm=0;第二十八题:有3个学生,各学4门课程,输出总平均分数以及第n个学生的所有成绩。(要求定义两个函数分别实现上述功能,用指针作为函数参数#includeint main()float tt(float (*)4);void t(float (*a)4,int n);float b34,(*a)4;int i,j,n;printf(请输入三个学生的成绩每个人四门课程:n);for(i=0;i3;i+)for(j=0;j4;j+)scanf(%f,&bij);printf(请输入n的数值:);scanf(%d,&n);a=b;printf(所有成绩的平均数为:%5.2fn,tt(a);t(a,n-1);return 0;float tt(float (*a)4)float s=0.0;int i,j;for(i=0;i3;i+)for(j=0;j4;j+)s=s+aij;return s/12;void t(float (*a)4,int n)int i;printf(第%d个人的全部成绩为:n,n+1);for(i=0;i4;i+)printf(%5.2f,ani);printf(n);第二十九题:有3个学生,每个学生有4门课程的成绩,要求在用户输入学生学号以后,能输出该学生的全部成绩。(用指针函数知识实现)#includeint main()struct studentdouble n;float b4;a3;int i,j;double m;printf(请输入学生信息n学号 分数n);for(i=0;i3;i+)scanf(%ld%f%f%f%f,&ai.n,&ai.b0,&ai.b1,&ai.b2,&ai.b3);printf(请输入一个学生的学号:);scanf(%ld,&m);printf(学号为%ld的学生的全部成绩为:n,m);for(i=0;i3;i+)if(m=ai.n)printf(%5.2f %5.2f %5.2f %5.2fn,ai.b0,ai.b1,ai.b2,ai.b3);return 0;第三十题:定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。#includeint main()struct ttint n;int y;int r;a;int i,s=0;printf(请输入n年 月 日n);scanf(%d%d%d,&a.n,&a.y,&a.r);if(a.n%400=0|(a.n%4=0&a.n%100!=0)for(i=1;ia.y;i+)if(i=2)s=s+29;else if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)s=s+31;elses=s+30;elsefor(i=1;ia.y;i+)if(i=2)s=s+28;else if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)s=s+31;elses=s+30;s=s+a.r;printf(%d年%d月%d日是这年的第%d天n,a.n,a.y,a.r,s);return 0;第三十一题:设计候选人得票统计程序,要求有4个侯选人(分别是Zhang 、Wang 、Li、 Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#include#includeint main()struct ttchar nm10;int a;b4=Zhang,0,Wang,0,Li,0,Zhao,0;int i,j;char c10;printf(请输入10张选票:n);for(i=0;i10;i+)gets(c);for(j=0;j4;j+)if(strcmp(c,bj.nm)=0)bj.a+;printf(得票数分别为:n);for(i=0;i4;i+)printf(%-10s%-5dn,bi.nm,bi.a);return 0;第三十二题:定义一个包括学号、姓名、成绩的学生结构体,要求实现输入3个学生信息的输入后,按照成绩的高低顺序输出各学生的信息。#includeint main()struct studentdouble xh;char nm10;float fs;a3,b;int i,j;printf(请输入三个学生的信息n学号 姓名 分数n);for(i=0;i3;i+)scanf(%ld%s%f,&ai.xh,ai.nm,&ai.fs);for(i=0;i3;i+)for(j=i+1;j3;j+)if(ai.fsaj.fs)b=aj;aj=ai;ai=b;printf(从高到底的顺序为:n);for(i=0;i3;i+)printf(%ld ,ai.xh);printf(%-10s%5.2fn,ai.nm,ai.fs);return 0;第三十三题:有3个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入3个学生数据,要求输出平均成绩最高分的学生的信息(包括学号、姓名、3门课程成绩、平均分数)(用结构体知识)。#includeint main()struct studentdouble xh;char nm10;float fs4;a3,b;int i,j;printf(请输入三个学生的信息n学号 姓名 分数n);for(i=0;i3;i+)ai.fs0=0;scanf(%ld%s%f%f%f,&ai.xh,ai.nm,&ai.fs1,&ai.fs2,&ai.fs3);for(i=0;i3;i+)for(j=1;j4;j+)ai.fs0=ai.fs0+ai.fsj;ai.fs0=ai.fs0/3;b=a0;for(i=1;i3;i+)if(b.fs0ai.fs0)b=ai;printf(平均分分最高的学生信息为n学号 姓名 平均分 分数n);printf(%ld ,b.xh);printf(%s ,b.nm);for(i=0;i4;i+)printf(%5.2f ,b.fsi);printf(n);return 0;第三十四题:建立一个链表,每个结点包括:学号、姓名、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。#include/#include/#define N sizeof(struct student)int main()struct studentchar xh15;char nm10;int nl;struct student *next;c5=201201,zhang,18,&c1,201202,wang,19,&c2,201203,li,20,&c3,201204,qian,21,&c4,201205,sun,22,NULL;struct student *p,*q,a;int b;/*p=q=(struct student *)malloc(N);printf(建立一个动态连表学号为0时结束n学号 姓名 年龄n);scanf(%ld%s%d,&p-xh,p-nm,&p-nl);a=NULL;while(p-xh!=0)n=n+1;if(n=1)a.next=p;elseq-next=p;q=p;p=(struct student *)malloc(N);scanf(%ld%s%d,&p-xh,p-nm,&p-nl);q-next=NULL;*/p=&c0;printf(原链表为:n);for(;p!=NULL;)printf(%s ,p-xh)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论