C程序设计详解_第1页
C程序设计详解_第2页
C程序设计详解_第3页
免费预览已结束,剩余50页可下载查看

下载本文档

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

文档简介

1、安阳工学院12级C程序设计答案第一题:输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,最大公约数 和最小公倍数都在主函数中输出。#i nclude<stdio.h>int main()int min (i nt a,i nt b);int max(i nt a,i nt b);int a,b;printf("请输入两个数:");sca nf("%d%d",&a,&b);prin tf("%d,%d的最大公约数为:%dn",a,b,max(a,b);prin tf("%d,%dreturn

2、 0;的最小公倍数为:%dn",a,b,mi n(a,b);int min (i nt a,i nt b)int i;for(i=a;i<=a*b;i+)if(i%a=O&&i%b=O)break; return i;int max(i nt a,i nt b)int i,c=O;for(i=1;i<=a;i+)if(a%i=O&&b%i=O) c=i;return c;第二题:输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#i nclude<stdio.h>int main()int zd(i nt a,i nt b

3、,i nt c,i nt d);int a,b,c,d;printf("请输入四个整数:");sca nf("%d%d%d%d",&a,&b,&c,&d);prin tf("%d,%d,%d,%d中的最大值为:%dn",a,b,c,d,zd(a,b,c,d);return 0;int zd(i nt a,i nt b,i nt c,i nt d)int tt(int a,int b);return (tt(tt(tt(a,b),c),d);int tt(int a,int b)in t c;if(a&g

4、t;b)c=a;elsec=b;return c;第三题:用递归调用的方法求 5 !。#i nclude<stdio.h>int main()int jc(i nt a);int b=5;prin tf("%d!=%dn",b,jc(b);return 0;int jc(i nt a)int b;if(a=1)b=1;elseb=a*jc(a-1);return b;第四题:按以下递归公式求函数的值。10(n1)fun(n)例如,当给n输入5时,函数值为18,fun (n1)2(n1)(要求用递归实现)。#i nclude<stdio.h>int m

5、ain()int fun (i nt a);int n;printf("请输入 n:");sea nf("%d",&n);prin tf("fu n( %d)=%dn", n,fun(n);return 0;int fun (i nt a)int b;if(a=1)b=10;elseb=fu n(a-1)+2; return b;第五题:用递归法将一个整数 n转换成字符串。例如,输入483,应输出字符串“ 483 n的位数不确定,可以是任意位数的整数。#i nclude<stdio.h>#i nclude<s

6、tri ng.h>int main()void dg(char a,l ong n ,i nt b);char a20,b;long n;int m,i;printf("请输入 n:");sca nf("%ld",&n);dg(a ,n ,0);m=strle n(a);for(i=0;i<m/2;i+)b=am-i-1;am-i-1=ai;ai=b;prin tf("%sn",a);return 0;void dg(char a,l ong n ,i nt b)long c,d;if(n< 10)ab=&#

7、39;O'+n; ab+1='0'elseab=n%10+'0'dg(a ,n/10,b+1);第六题:写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1 改后成为1,4,5,6,8。#i nclude<stdio.h>int main()void nn (i nt a,i nt n);int a20,i, n;printf("请输入 n:");sca nf("%d",&n);printf("请输入%d个数的数组:n",n);for(i=0;i

8、< n;i+)scan f("%d",&ai);nn (a, n);printf("倒序存放为:n");for(i=0;i< n;i+)prin tf("%d",ai);prin tf("n");return 0;void nn (i nt a,i nt n)int i,m;for(i=0;i< n/2;i+)m=a n-i-1;a n-i-1=ai;ai=m;第七题:编写一个函数,用来分别求数组score_1 (有5个元素)和数组 score_2 (有10个元素)各元素的平均值。#i n

9、clude<stdio.h>int main()float tt(int a,int b);int a5,b10,i;printf("请输入五个数字的数组:n");for(i=0;i<5;i+)scan f("%d",&ai);printf("请输入十个数字的数组:n");for(i=0;i<10;i+)scan f("%d",&bi);printf("五个数字的数组的平均数为:%5.2fn十个数的数组的平均数 为:%5.2fn",tt(a,5),tt(b

10、,10);return 0;float tt(int a,int b)float s=0;int i;for(i=0;i<b;i+)s=s+ai;return s/b;第八题:编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。#i nclude<stdio.h>int main()void tt(char a,char b);char a50,b50;printf("请输入两个字符数组:n");gets(a);gets(b);printf("把两个数组连起来为:n");tt(a,b

11、);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='O'第九题:编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp 函数。#i nclude<stdio.h>int main()int tt(char a,char b);char a50,b50;int n;printf("请输入两个字符串a,b:n");gets(a);gets(b)

12、;n=tt(a,b);if(n=0)printf("相等 n");else if(n>0)prin tf("a>bn");prin tf("a<bn");return 0;int tt(char a,char b)int i=0;while(ai=bi)if(ai='O'&&bi='0')break;elsei+;return ai-bi;并在第十题:编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能, main函数中调用此函数,输入数据和最后输出都在主函数

13、中实现。#i nclude<stdio.h>int main()void tt(i nt a,i nt b);int a11=10,20,30,40,50,60,70,80,90,100,i,n;printf("原升序整型数组为:n"); for(i=0;i<10;i+)prin tf("%d",ai);printf("n请输入一个整数n :");sea nf("%d",&n);tt(a, n);prin tf("n插入后数组为:n"); for(i=0;i<11

14、;i+)prin tf("%d",ai);prin tf("n");return 0;void tt(i nt a,i nt b)int i,e;for(i=0;i<11;i+)if(b>=a9)a10=b;if(b<ai)c=ai;ai=b;b=c;第一题:写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。#i nclude<stdio.h> int main()int tt(int a);int n;printf("请输入一个整数n:");sca n

15、f("%d",&n);if(tt( n)=1)prin tf("yesn");prin tf(" non");return 0;int tt(i nt a)in t i,n=1;for(i=2;i<a;i+)if(a%i=O)n=0;break;return n;第十二题:编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#i nclude<stdio.h>int main()void tt(char a,char b);char a

16、100,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=T|ai='O'|ai=

17、9;U')bj+=ai;bj='0'第十三题:建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。#i nclude<stdio.h>#i nclude<stdlib.h>int 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

18、;i<5;i+)scan f("%f",a+i);n=tt(a,b);if(n=0)printf("无低于60分的n");elsefor(i=0;i <n ;i+)prin tf("%5.2f",*(b+i);prin tf("n");return 0;int tt(float *a,float *b)int i,j=0;for(i=0;i<5;i+)if(*(a+i)<60)bj+=ai;return j;第十四题:有一个一维数组 score,内放10个学生成绩,用一个函数求平均成绩,并将

19、 10个成绩中不及格(小于 60 )的成绩和该成绩在数组中的序号输出。#i nclude<stdio.h>int main()int tt(float a,float b,int c);int n ,c10,i;float a10,b10;printf("请输入十个学生的成绩:n");for(i=0;i<10;i+)scan f("%f",&ai);n=tt(a,b,c);printf("不及格的数组的序号为:n");for(i=0;i< n;i+)prin tf("%d",ci);

20、prin tf("n 不及格的分数为:n");for(i=0;i< n;i+)prin tf("%5.2f",bi);prin tf("n");return 0;int tt(float a,float b,int c) int i,j;for(i=0,j=0;i<10;i+) if(ai<60) bj=ai; cj=i;j+;return j;第十五题:编程实现:从键盘输入两个字符串,统计第二个字符串在第一个字符串中出现 的次数,在主函数中调用统计函数并输出结果。#i nclude<stdio.h>in

21、t 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=&

22、#39;0')C+;return c;第十六题:编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。如:输入“ I am a student! ”,输出"lamastudent! ”,要求用指针实现。#i nclude<stdio.h>int main()char *a,b50;int i,j;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

23、");puts(a);return 0;第十七题:用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)#i nclude<stdio.h> int main()void tt(int *a,int b);int *a,b10,i;a=b;printf("请输入十个整数:n");for(i=0;i<10;i+)scan f("%d",a+);tt(a,10);prin tf("n 十个数从大到小顺序为:n");for(i=0;i<10;i+)prin tf("%d ",

24、*(a+i);prin tf("n");return 0;void tt(i nt *a,i nt b)int i,j, n;for(i=0;i<10;i+)for(j=0;j<b-i-1;j+)if(aj<aj+1)n=aj+1;aj+1=aj;aj=n;第十八题:用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)#i nclude<stdio.h>int main()void tt(int *a,int b);int *a,b10,i;a=b;printf("请输入十个整数:n"); for(i=0;i&

25、lt;10;i+)scan f("%d",a+);a=b;tt(a,10);n");prin tf("n十个数从小到大顺序为:for(i=0;i<10;i+)prin tf("%d",*(a+i);prin tf("n");return 0;void tt(i nt *a,i nt b)int i,j, n;for(i=0;i<10;i+)for(j=i+1;j<b;j+)if(ai>aj)n=aj; aj=ai; ai=n;函数,并在main函数中(要求用指针作为函数第十九题:编写一个函数

26、实现字符串复制功能,不能使用strcpy调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。参数)#i nclude<stdio.h> int main()void tt(char a,char b);char a50,b50;printf("请输出一个字符串a: n");gets(a);tt(b,a);puts(b);return 0;void tt(char a,char b)int i;for(i=0;bi!='0'i+)ai=bi;ai='0'并输出其长度。第二十题:写一函数,求一个字符串的长度。在main函数中输

27、入字符串,(要求用指针实现)#i nclude<stdio.h> int main()int tt(char a);char a100;printf("请输入一个字符串:n");gets(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统计共有多少个整

28、数,并输出这些数。#i nclude<stdio.h>int main()int tt(char *a,i nt *b);int i,n ,*b,d20;char *a,c100;b=d;a=c;gets(a);n=tt(a,b);printf(" 一共有%d个整数它们分别为:n",n);for(i=0;i< n;i+)prin tf("%d",bi);prin tf("n");return 0;int tt(char *a,int *b)int i,n=0, m=0,p=1;b0=0;for(i=0;ai!=

29、9;0'i+)if(ai>='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个字符。要求分别统计出其中英文(要求用指针实现)大写字符、小写字母、数字、空格以及其他字符的个数。#i nclude<stdio.h>int main()char (*a)60,b460;int j,i,c=0,d=0,e=0,f=0,g=0;for(i=0;i<4;

30、i+)gets(bi);a=b;for(i=0;i<4;i+)for(j=0;j<60;j+)if(aij>='A'&&aij<='Z')c+;else if(aij>='a'&&aij<='z')d+;else if(aij>='0'&&aij<=9)e+;else if(aij='')f+;elseg+;printf("大写字母有d个n小写字母有%d个n数字有d个n空格 有%d个n其他字符有

31、%d个n",c,d,e,f,g);return 0;(要第二十三题:编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。求用指针知识实现)#i nclude<stdio.h>#i nclude<stri ng.h>int main()char b1050,*c,(*a)50;int i;a=b;printf("请输入十个字符串:n");for(i=0;i<10;i+)gets(ai);c=b0;for(i=1;i<10;i+)if(strle n(ai)>strle n( c)c=ai;return 0;第二十四

32、题:利用函数实现如下功能:从键盘输入任意个正整数,求出它的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回。(自定义函数void fun (int x , int * pp , int *n )。#i nclude<stdio.h>int main()void fun (i nt x,i nt *pp,i nt *n);int x,i,a20,*pp,b,* n;pp=a;n=&b;printf("请输入整数x:");sca nf("%d", &x);fun (x,pp, n);printf(&q

33、uot;%d 共有%d个偶数因子它们分别为:n",x,*n);for(i=0;i<* n;i+)prin tf("%d",ppi);prin tf("n");return 0;void fun (i nt x,i nt *pp,i nt *n)int i,j=0;*n=0;for(i=2;i<x;i+)if(x%i=0&&i%2=0)PPj+=i;*n=*n+1;并在 main函数中调用此(鞍点是指某个数在该行上第二十五题:编写一个函数,实现求出一个2维数组中的鞍点,函数,2维数组中数据输入和鞍点数据输出都在主函数中

34、实现。最大,同时在该列上最小)#i nclude<stdio.h>int main()int tt(i nt (*a)4);int i,j,(*a)4,b44,c=0;a=b;for(i=0;i<4;i+)for(j=0;j<4;j+)sea nf("%d",&bij);c=tt(a);if(e=0)printf("不存在鞍点n");elseprintf("鞍点为:%dn",c);return 0;int tt(i nt (*a)4)int i,j,k, n=0,m;for(i=0;i<4;i+)

35、k=0;m=ai0;for(j=1;j<4;j+)if(aij>m)m=aij;k=j;for(j=0;j<4;j+)if(ajk<m)break;if(j=4)n=m;return n;第二十六题:输入3个学生4门课的成绩,分别用函数实现如下功能:(1) 计算每个学生平均分;(2) 计算每门课的平均分;(3) 找出12个分数中最高分所对应的学生和课程。#i nclude<stdio.h>int main()struct stude ntchar a10;float b5;c3;int i,j, n=0, m=1;float k;printf("请

36、输入三个学生的姓名和成绩n姓名成绩n");for(i=0;i<3;i+)ci.b0=0;sea nf("%s%f%f%f%f",ci.a,&ci.b1,&ci.b2,&ci.b3,&ci.b4);k=c0.b1;for(i=0;i<3;i+)for(j=1;j<5;j+)ci.b0=ci.b0+ci.bj;if(ci.bj>k)n=i;m=j;k=ci.bj;ci.b0=ci.b0/4;printf("平均成绩分别为:n");for(i=0;i<3;i+)prin tf("

37、%s%5.2fn",ci.a,ci.b0);printf(” 最高分是 %s 的第 %d 科%5.2f 分n",cn.a,m,k); return 0;第二十七题:用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传 递给该函数。#i nclude<stdio.h>int main()void tt(char a,char b);char a200,b40;printf("请输入一行字符串:n");gets(a);tt(a,b);printf("最长的单词为:");puts(b);return 0;void

38、tt(char a,char b)for(i=0;ai!='0'i+)if(aiv='Z'&&ai>='A')|(aiv='z'&&ai>='a') m+;elsekj=m;Pj=i;j+;m=0;n+;if(m!=O)kj=m;Pj=i;j+;n+;m=0;q=kO;for(i=1;i< n;i+)if(ki>q)q=ki;j=i;for(i=pj-q;i<pj;i+)bm+=ai;bm='O'n个学生的所有成绩。第二十八题:有3个学生

39、,各学4门课程,输出总平均分数以及第(要求定义两个函数分别实现上述功能,用指针作为函数参数#i nclude<stdio.h>int 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;i<3;i+)for(j=0;j<4;j+)sca nf("%f",&bij);sca nf("%d",&n);a=b;print

40、f("所有成绩的平均数为:%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;i<3;i+)for(j=0;j<4;j+)s=s+aij;return s/12;void t(float (*a)4,int n)int i;printf("第%d个人的全部成绩为:n",n+1);for(i=0;i<4;i+)prin tf("n");第二十九题:有3个学生,每个学生有 4门课程的成绩,要求在用户输入学生学号

41、以后, 能输出该学生的全部成绩。(用指针函数知识实现)#i nclude<stdio.h>int main()struct stude ntdouble n;float b4;a3;int i,j;double m;printf("请输入学生信息n学号分数n");for(i=0;i<3;i+)sca nf("%ld%f%f%f%f",&ai. n,&ai.b0,&ai.b1,&ai.b2,&ai.b3);printf("请输入一个学生的学号:");sca nf("%l

42、d",&m);for(i=0;i<3;i+)if(m=ai. n)prin tf("%5.2f%5.2f%5.2f%5.2fn",ai.b0,ai.b1,ai.b2,ai.b3);return 0;第三十题:定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。#i nclude<stdio.h>int main()struct ttint n;int y;int r;a;int i,s=0;printf("请输入n年 月 日n");sea nf("%d%d%d",&

43、a. n,&a.y,&a.r);if(a. n%400=0|(a. n%4=0&&a. n%100!=0)for(i=1;i<a.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;i<a.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&q

44、uot;,a.n,a.y,a.r,s); return 0;、Wang第三十一题:设计候选人得票统计程序,要求有 4个侯选人(分别是ZhangLi、 Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#in clude<stdio.h>#in clude<stri ng.h>int mai n()struct ttchar nm10;int a;b4="Zha ng",0,"Wa ng",0,"Li",0,"Zhao",0;int i,j;char c10;printf(”

45、请输入10张选票:n");for(i=0;i<10;i+)gets(c);for( j=0;j<4;j+)if(strcmp(c,bj. nm )=0)bj.a+;printf("得票数分别为:n");for(i=0;i<4;i+)prin tf("%-10s%-5dn",bi. nm,bi.a);return 0;3个学生信息第三十二题:定义一个包括学号、姓名、成绩的学生结构体,要求实现输入的输入后,按照成绩的高低顺序输出各学生的信息。#in clude<stdio.h>int mai n()struct stu

46、de ntdouble xh;char nm10;float fs;a3,b;int i,j;printf("请输入三个学生的信息n学号姓名 分数n");for(i=0;i<3;i+)scan f("%ld%s%f",&ai.xh,ai. nm,&ai.fs);for(i=0;i<3;i+)for( j=i+1;j<3;j+)if(ai.fs<a j.fs)b=a j;aj=ai;ai=b;printf("从高到底的顺序为:n”);for(i=0;i<3;i+)prin tf("%ld&q

47、uot;,ai.xh);prin tf("%-10s%5.2fn" ,ai. nm,ai.fs);return 0;第三十三题:有3个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入3个学生数据,要求输出平均成绩最高分的学生的信息(包括学号、姓名、3门课程成绩、平均分数)(用结构体知识)。#in clude<stdio.h> int mai n()struct stude ntdouble xh;char nm10;float fs4;a3,b;int i,j;printf("请输入三个学生的信息n学号姓名 分数n");for(i

温馨提示

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

评论

0/150

提交评论