C程序设计详解_第1页
C程序设计详解_第2页
C程序设计详解_第3页
C程序设计详解_第4页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、实用标准文案安阳工学院 12 级 C程序设计答案第一题: .输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include<stdio.h>int 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 的最

2、小公倍数为: %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 个整数,找出其中最大的数。用函数的嵌套调用来处理。#include<stdio.h>int main()int zd(int a,int b,i

3、nt 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(a&

4、gt;b)c=a;elsec=b;return c;第三题: 用递归调用的方法求5!。#include<stdio.h>int 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;第四题: 按以下递归公式求函数的值。10( n1)18,fun(n)( n例如,当给 n 输入 5 时,函数值为fun ( n 1) 21)(要求用递归实现) 。#include<stdio.h>

5、;int 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<stdio.h>#inclu

6、de<string.h>int 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;i<m/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(n<10)a

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

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

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

10、(b,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函数。#include<stdio.h>int main()void tt(char a,char b);char a50,b50;printf("请输入两个字符数组: n");gets(a);gets(b);printf("把两个数组连起来为: n");t

11、t(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 函数。#include<stdio.h>int main()int tt(char a,char b);char a50,b50;int n;printf("请输入两个字符串a,b:n"

12、);gets(a);gets(b);n=tt(a,b);if(n=0)printf("相等 n");else if(n>0)printf("a>bn");elseprintf("a<bn");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 函数中

13、调用此函数,输入数据和最后输出都在主函数中实现。精彩文档实用标准文案#include<stdio.h>int 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;i<10;i+)printf("%d",ai);printf("n请输入一个整数 n:");scanf("%d",&n);tt(a,n);printf("n插入后数组为: n

14、");for(i=0;i<11;i+)printf("%d",ai);printf("n");return 0;void tt(int a,int b)int i,c;for(i=0;i<11;i+)if(b>=a9)a10=b;elseif(b<ai)c=ai;ai=b;b=c;第十一题: 写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes ,否则输出 no,结果要求在主函数中输出。#include<stdio.h>int main()int tt(int a);int n;精彩文档实用标准文案

15、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;i<a;i+)if(a%i=0)n=0;break;return n;第十二题: 编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#include<stdio.h>int mai

16、n()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='

17、;E'|ai='I'|ai='O'|ai='U')bj+=ai;bj='0'第十三题: 建立动态数组,输入5 个学生的成绩,编写函数检查其中有无低于60 分的学生成绩,要求输入和输出功能在主函数中完成。精彩文档实用标准文案#include<stdio.h>#include<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(

18、5*sizeof(float);printf("请输入五个人的成绩: n");for(i=0;i<5;i+)scanf("%f",a+i);n=tt(a,b);if(n=0)printf("无低于 60 分的 n");elsefor(i=0;i<n;i+)printf("%5.2f ",*(b+i);printf("n");return 0;int tt(float *a,float *b)int i,j=0;for(i=0;i<5;i+)if(*(a+i)<60)bj+

19、=ai;return j;第十四题: 有一个一维数组score ,内放10 个学生成绩,用一个函数求平均成绩,并将10 个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。#include<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+)scanf("%f",&ai);精彩文档实用标准文案n=tt(a,b,c);printf("不及格

20、的数组的序号为:n");for(i=0;i<n;i+)printf("%d",ci);printf("n不及格的分数为: n");for(i=0;i<n;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;i<10;i+)if(ai<60)bj=ai;cj=i;j+;return j;第十五题: 编程实现:从键盘输入两个字符串,统计第二个字符串在第一

21、个字符串中出现的次数,在主函数中调用统计函数并输出结果。#include<stdio.h>int 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')精彩文档实

22、用标准文案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!”,要求用指针实现。#include<stdio.h>int main()char *a,b50;int i,j;printf("请输入一个字符串: n");gets(b);a=b;for(i=0;*(a+i)!='0'i+)if

23、(*(a+i)=' ')for(j=i;*(a+j)!='0'j+)*(a+j)=*(a+j+1);printf("去掉空格后为: n");puts(a);return 0;第十七题: .用冒泡法实现对10 个整数按从大到小的顺序排序输出(要求用指针实现)。#include<stdio.h>精彩文档实用标准文案int main()void tt(int *a,int b);int *a,b10,i;a=b;printf("请输入十个整数: n");for(i=0;i<10;i+)scanf("%

24、d",a+);a=b;tt(a,10);printf("n十个数从大到小顺序为:n");for(i=0;i<10;i+)printf("%d",*(a+i);printf("n");return 0;void tt(int *a,int 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 个整数按从小到大的顺序排序输出(要求用指针实现)#include<stdi

25、o.h>int main()void tt(int *a,int b);int *a,b10,i;a=b;printf("请输入十个整数: n");for(i=0;i<10;i+)scanf("%d",a+);a=b;tt(a,10);printf("n十个数从小到大顺序为:n");for(i=0;i<10;i+)精彩文档实用标准文案printf("%d",*(a+i);printf("n");return 0;void tt(int *a,int b)int i,j,n;fo

26、r(i=0;i<10;i+)for(j=i+1;j<b;j+)if(ai>aj)n=aj;aj=ai;ai=n;第十九题: 编写一个函数实现字符串复制功能,不能使用strcpy函数,并在main 函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。(要求用指针作为函数参数)#include<stdio.h>int main()void tt(char a,char b);char a50,b50;printf("请输出一个字符串a: n");gets(a);tt(b,a);printf("吧 a 赋值给 b 得 b 为:

27、 n");puts(b);return 0;void tt(char a,char b)int i;for(i=0;bi!='0'i+)ai=bi;ai='0'第二十题: 写一函数,求一个字符串的长度。在main 函数中输入字符串,并输出其长度。精彩文档实用标准文案(要求用指针实现)#include<stdio.h>int main()int tt(char a);char a100;printf("请输入一个字符串: n");gets(a);printf("字符串 a 的长度为: %dn",tt(a

28、);return 0;int tt(char a)int i;for(i=0;ai!='0'i+);return i;第二十一题: 输入一个字符串,内有数字和非数字字符,例如:“ A123x456 17960?302tab5876 ”,将其中连续的数字作为一个整数,依次存在到一数组a 中。例如, 123 放在a0 , 456 放在 a1 统计共有多少个整数,并输出这些数。(要求用指针实现)#include<stdio.h>int main()int tt(char *a,int *b);int i,n,*b,d20;char *a,c100;b=d;a=c;prin

29、tf("请输入一个字符串: n");gets(a);n=tt(a,b);printf("一共有 %d个整数它们分别为 :n",n);for(i=0;i<n;i+)printf("%d",bi);printf("n");return 0;int tt(char *a,int *b)int i,n=0,m=0,p=1;b0=0;for(i=0;ai!='0'i+)精彩文档实用标准文案if(ai>='0'&&ai<='9')bm=bm*p+

30、(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 个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。(要求用指针实现)#include<stdio.h>int main()char (*a)60,b460;int j,i,c=0,d=0,e=0,f=0,g=0;printf(" 请输入入四行文章每行 60 个字符: n"); for(i=0;i<4;i+)gets(bi);a=b

31、;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

32、个n 空格有 %d个 n 其他字符有 %d个 n",c,d,e,f,g); return 0;第二十三题: 编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。(要求用指针知识实现)#include<stdio.h>#include<string.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(strlen(ai)>strlen(c)c

33、=ai;printf("最长的是: n%sn",c);return 0;第二十四题: 利用函数实现如下功能:从键盘输入任意个正整数,求出它的偶数因子,并按从小到大的顺序放在pp 所指的数组中,这些因子的个数通过形参n 返回。(自定义函数void fun( int x, int * pp, int *n) )。#include<stdio.h>int main()void fun(int x,int *pp,int *n);精彩文档实用标准文案int x,i,a20,*pp,b,*n;pp=a;n=&b;printf("请输入整数 x:"

34、;);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;i<x;i+)if(x%i=0&&i%2=0)ppj+=i;*n=*n+1;第二十五题: 编写一个函数,实现求出一个2 维数组中的鞍点

35、,并在main 函数中调用此函数, 2 维数组中数据输入和鞍点数据输出都在主函数中实现。(鞍点是指某个数在该行上最大,同时在该列上最小)#include<stdio.h>int main()int tt(int (*a)4);int i,j,(*a)4,b44,c=0;printf("请输入一个 4*4 的二维数组: n");a=b;for(i=0;i<4;i+)for(j=0;j<4;j+)scanf("%d",&bij);c=tt(a);if(c=0)printf("不存在鞍点 n");elsepr

36、intf("鞍点为: %dn",c);return 0;精彩文档实用标准文案int tt(int (*a)4)int i,j,k,n=0,m;for(i=0;i<4;i+)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 个分数中最高分所对应的学生和课程。#

37、include<stdio.h>int main()struct studentchar a10;float b5;c3;int i,j,n=0,m=1;float k;printf("请输入三个学生的姓名和成绩n 姓名成绩 n");for(i=0;i<3;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;i<3;i+)for(j=1;j<5;j+)ci.b0=ci

38、.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+)printf("%s%5.2fn",ci.a,ci.b0);printf(" 最高分是 %s的第 %d科%5.2f 分n",cn.a,m,k); return 0;第二十七题: 用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数。#include<stdio.h>int main()void tt(char a,c

39、har 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<='Z'&&ai>='A')|(ai<='z'&&ai>='a')m+;elsek

40、j=m;pj=i;j+;精彩文档实用标准文案m=0;n+;if(m!=0)kj=m;pj=i;j+;n+;m=0;q=k0;for(i=1;i<n;i+)if(ki>q)q=ki;j=i;for(i=pj-q;i<pj;i+)bm+=ai;bm='0'第二十八题: 有 3 个学生,各学4 门课程,输出总平均分数以及第n 个学生的所有成绩。(要求定义两个函数分别实现上述功能,用指针作为函数参数#include<stdio.h>int main()float tt(float (*)4);void t(float (*a)4,int n);float

41、b34,(*a)4;int i,j,n;printf(" 请输入三个学生的成绩每个人四门课程 :n"); for(i=0;i<3;i+)for(j=0;j<4;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;精彩文档实用标准文案i

42、nt 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+)printf("%5.2f",ani);printf("n");第二十九题: 有 3 个学生,每个学生有 4 门课程的成绩,要求在用户输入学生学号以后,能输出该学生的全部成绩。 (用指针函数知识实现)#include<stdio.h>int ma

43、in()struct studentdouble n;float b4;a3;int i,j;double m;printf("请输入学生信息 n 学号分数 n");for(i=0;i<3;i+)scanf("%ld%f%f%f%f",&ai.n,&ai.b0,&ai.b1,&ai.b2,&ai .b3);printf("请输入一个学生的学号:");scanf("%ld",&m);printf(" 学号为 %ld 的学生的全部成绩为: n",

44、m); for(i=0;i<3;i+)if(m=ai.n)printf("%5.2f %5.2f %5.2f %5.2fn",ai.b0,ai.b1,ai.b 2,ai.b3);return 0;第三十题: 定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意精彩文档实用标准文案闰年问题。#include<stdio.h>int main()struct ttint n;int y;int r;a;int i,s=0;printf("请输入 n 年月日 n");scanf("%d%d%d",&

45、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",a.

46、n,a.y,a.r,s); return 0;第三十一题:设计候选人得票统计程序,要求有4 个侯选人(分别是Zhang 、 Wang 、 Li 、Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#include<stdio.h>#include<string.h>精彩文档实用标准文案int main()struct ttchar nm10;int a;b4="Zhang",0,"Wang",0,"Li",0,"Zhao",0;int i,j;char c10;printf

47、("请输入 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+)printf("%-10s%-5dn",bi.nm,bi.a);return 0;第三十二题:定义一个包括学号、姓名、成绩的学生结构体,要求实现输入3 个学生信息的输入后,按照成绩的高低顺序输出各学生的信息。#include<stdio.h>int main()struct

48、 studentdouble xh;char nm10;float fs;a3,b;int i,j;printf("请输入三个学生的信息n 学号姓名分数 n");for(i=0;i<3;i+)scanf("%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<aj.fs)b=aj;精彩文档实用标准文案aj=ai;ai=b;printf("从高到底的顺序为:n");for(i=0;i<3;i+)print

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

温馨提示

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

最新文档

评论

0/150

提交评论