C语言程序设计习题答案(6-13).pdf
《C语言程序设计习题答案(6-13).pdf》由会员分享,可在线阅读,更多相关《C语言程序设计习题答案(6-13).pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 C语言程序设计习题答案习题六数组一、选择题110:BDBCD CDBAB1120:BCDCC DABBC2130:CCADC ABBCB3141:BDDDD CDCCB A二、填空题1 9 、0 2先行后列3连续的存储空间中4 QuickC 5.(c=getchar()、A+i 或 65+i 6.0、str1i-str2i 7 CDABC 8 10 14 9 6 10 1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 111 600 12 AzyD 13 4 some string*test 三、编程题1.定义一个有20 个元素的整型数组,分别求出下标
2、为奇数和偶数的元素的平均值。答:程序参见文件Cprogram#include#include main()int i,s0=0,s1=0,a20;for(i=0;i20;i+)ai=rand()%100;for(i=0;i20;i+=2)printf(%3d,ai);s0=s0+ai;printf(sum is:%d ave=%fn,s0,s0/;for(i=1;i20;i+=2)printf(%3d,ai);s1=s1+ai;printf(sum is:%d ave=%fn,s1,s1/;2 2.设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的
3、位置,否则,输出no found。答:程序参见文件Cprogram#include#include main()int i,s,a20;for(i=0;i20;i+)ai=rand()%100;scanf(%d,&s);for(i=0;i20;i+)if(ai=s)printf(found:a%d=%dn,i,ai);break;if(i=20)printf(no foundn);for(i=0;i20;i+)printf(%3d,ai);printf(n);3.设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。答:程序参见文件Cprogram#include#def
4、ine N 10main()int i,j,s,aN=17,15,13,11,9,7,5,3,1;编一程序,从一个已排好序的数组中删去某个位置上的元素。答:程序参见文件Cprogram#include#define N 10main()int i,j,aN=1,3,5,7,9,11,13,15,17,19;for(i=0;iN;i+)printf(%3d,ai);printf(n);scanf(%d,&i);for(j=i;jN-1;j+)aj=aj+1;aj=0;for(i=0;iN;i+)printf(%3d,ai);printf(n);5.将一个二维数组的行、列互换后存到另一个二维数组中
5、并输出结果。答:程序参见文件Cprogram#include main()int i,j;int a34=1,3,5,7,9,11,13,15,17,19,21,23,b43;for(i=0;i4;i+)3 for(j=0;j3;j+)bij=aji;printf(array a:n);for(i=0;i3;i+)for(j=0;j4;j+)printf(%5d,aij);printf(n);printf(array b:n);for(i=0;i4;i+)for(j=0;j3;j+)printf(%5d,bij);printf(n);6.编一程序,在一个二维数组中,查找第一次出现的负数,并输出
6、该数及其所在的行、列号。答:程序参见文件Cprogram#include main()int i,j,flag;int a34=1,3,5,7,9,11,13,-15,17,19,-21,23;flag=0;for(i=0;i3;i+)for(j=0;j4;j+)if(aij0)flag=1;printf(found:a%d%d=%dn,i,j,aij);i=j=100;编程将一个字符数组中的字母,按由大到小的顺序进行排序。答:程序参见文件Cprogram#include#include main()char t,s=ABCDIVBHFBVCNLKFDB;int i,j,n;puts(s);n
7、=strlen(s);for(i=0;in-1;i+)for(j=i+1;jn;j+)if(sisj)t=si;si=sj;sj=t;puts(s);8.输入一行字符,统计其中有多少个英语单词,单词之间用空格隔开。答:程序参见文件Cprogram#include#include main()char s81;int w,i,n;4 gets(s);i=0;n=0;w=0;while(si!=0)if(si=)w=0;/*end of a word*/elseif(w=0)w=1;n+;/*begin of a word*/i+;printf(number of word:%dn,n);9.编程
8、将两个一维数组中的对应元素的值相减后进行输出。答:程序参见文件Cprogram#include#include main()int i,a10,b10;for(i=0;i10;i+)ai=rand()%100;printf(%4d,ai);printf(n);for(i=0;i10;i+)bi=rand()%100;printf(%4d,bi);printf(n);for(i=0;i10;i+)printf(%4d,ai-bi);printf(n);10.有 n 个无序的数放在数组a 中,请将相同的那些数删得只剩得一个,输出经过删除后的数据。答:程序参见文件Cprogram#include m
9、ain()int i,j,k,a10=90,20,40,30,50,50,50,50,20,80;for(i=0;i10;i+)printf(%4d,ai);printf(n);for(i=0;i9;i+)for(j=i+1;j10;j+)if(aj=ai)aj=-888;k=0;for(i=0;i10;i+)if(ai!=-888)printf(%4d,ai);ak+=ai;求二维数组中这样一个元素的位置:它在行上最小,在列上也最小。如果没有这样的元素则输出相应的信息。答:程序参见文件Cprogram#include#include main()int j,i,k,flag,fz=0,a45
10、;for(i=0;i4;i+)for(j=0;j5;j+)aij=rand()%100;printf(%4d,aij);printf(n);for(i=0;i4;i+)for(j=0;j5;j+)flag=1;for(k=0;k5;k+)if(aikaij)flag=0;break;for(k=0;k4&flag;k+)if(akjaij)flag=0;break;if(flag)fz+;printf(min a%d%d=%dn,i,j,aij);if(fz=0)printf(no found!);12.在一个二维数组中形成并输出如下矩阵:1 1 1 1 1 2 1 1 1 1 A=3 2 1
11、 1 1 4 3 2 1 1 5 4 3 2 1 答:程序参见文件Cprogram#include#define N 5main()int j,i,aNN;for(i=0;iN;i+)for(j=0;jN;j+)if(i=j)aij=1;else if(j=0)aij=i+1;else aij=ai-1j-1;for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n);6 13.已知 A 是一个 34 的矩阵,B是一个 45 的矩阵,编程求AB得到的新矩阵C,并输出C 矩阵。答:程序参见文件Cprogram#include main()int j
12、,i,k,a34=1,2,3,4,5,6,7,8,9,10,11,12;int b45=3,2,1,5,4,4,3,2,5,1,2,3,5,4,1,7,8,5,6,9,c35;printf(array A(3*4):n);for(i=0;i3;i+)for(j=0;j4;j+)printf(%4d,aij);printf(n);printf(array B(4*5):n);for(i=0;i4;i+)for(j=0;j5;j+)printf(%4d,bij);printf(n);for(i=0;i3;i+)for(j=0;j5;j+)cij=0;for(k=0;k4;k+)cij+=aik*b
13、kj;printf(array C(3*5)=A*B:n);for(i=0;i3;i+)for(j=0;j5;j+)printf(%4d,cij);printf(n);14.编程输出两个字符串中对应位置上相同的字符。答:程序参见文件Cprogram#include main()int i;char a81=acbsbdvhfejbvewvkbewljbv;char b81=anbdxwdbviuerkjvbfidbvuie bik;printf(string1:%sn,a);printf(string2:%sn,b);printf(string3:);i=0;while(ai!=0&bi!=0
14、)if(ai=bi)printf(%c,ai);i+;printf(n);7 15.设有一字符串已按升序排列在字符数组a 中,请将另一字符串b 中的字符按升序的规律插到数组 a 中。答:程序参见文件Cprogram#include#include main()int i,j,k;char a81=acdfhjklmopxz;char b81=anbdx;printf(string1:%sn,a);printf(string2:%sn,b);i=0;while(bi!=0)j=0;while(aj=j)ak+1=ak;k-;aj=bi;i+;printf(string3:%sn,a);16.将已
15、按升序排列的两个字符串a 和 b 中的字符按升序归并到字符数组c 中。答:程序参见文件Cprogram#include#include main()int i,j,k;char a81=acdfhjklmopxz;char b81=abdnx;char c81;printf(string1:%sn,a);printf(string2:%sn,b);i=0;j=0;k=0;while(ai!=0&bj!=0)if(aibj)ck+=ai+;else ck+=bj+;while(ai)ck+=ai+;while(bj)ck+=bj+;ck=0;printf(string3:%sn,c);8 习题七
16、函数一、选择题 110:BDCDD BDBAC 1120:AABBB ABAAC 2131:CDAAC DDABB A二、填空题1函数声明2自动将其转换为函数定义时的类型3 10 4 1100 56 i=n 、s 、0 、f(k)7*(x0+a/x0)、a,x1 8 Itis 9 2721 10 0246 11 k 、-1 12 2 、2 13 p=j 、xip 14 5 15 7 16 24 17 age(n-1)+2 、age(n)18 m%10 、m/10 、m 或 m!=0 、r(m)三、编程题1.编一函数,判断某年是否为闰年,若是返回1,否则返回0。答:程序参见文件Cprogram#
17、include fun(int m)return(m%4=0)&(m%100!=0)|(m%400=0);main()int n;for(n=1987;n2009;n+)if(fun(n)printf(year:%d is a leap!n,n);2.编写计算三角形面积的程序,将计算面积定义成函数。三角形面积公式为:A=)()(csbsass式中 s=(a+b+c)/2其中 A为三角形面积,a、b、c 为三角形的三条边的长度。答:程序参见文件Cprogram#include#include 9 float fun(float a,float b,float c)float f,s;s=(a+b
18、+c)/2;if(s=a)|(s=b)|(s=c)编写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。答:程序参见文件Cprogram#include#include int fmax(int m,int n)int r;r=m%n;while(r!=0)m=n;n=r;r=m%n;return n;int fmin(int m,int n)return m*n/fmax(m,n);main()int a,b;scanf(%d%d,&a,&b);printf(fmax is:%dn,fmax(a,b);printf(fmin is:%
19、dn,fmin(a,b);4.编写函数,根据整型形参m的值,计算公式 t=1-2*21-3*31-mm*1的值。例如,若m=5,则应输出。答:程序参见文件Cprogram#include float fun(int m)float t=1;int i;for(i=2;i=m;i+)t=i/i;return t;main()printf(t(5)=%fn,fun(5);5.计算 s=1+!21+!31+!1n。n由终端输入,将计算n!定义成函数。答:程序参见文件Cprogram#include float fun(int m)int i;float s=0,t=1;for(i=1;i=m;i+)
20、10 t=t/i;s=s+t;return s;main()printf(s(5)=%fn,fun(5);6.编写函数,利用公式:9473523173523152313112计算的近似值,当某一项的值小于10-5时,认为达到精度要求。答:程序参见文件Cprogram#include double fun()int n;double pi=1,t=1;n=1;do t=t*n/(2*n+1);pi=pi+t;n+;while(t1e-5);return 2*pi;main()printf(pi=%fn,fun();7.编一函数,判断某一整数是否为回文数,若是返回1,否则返回0。所谓回文数就是该数
21、正读与反读是一样的。例如12321 就是一个回文数。答:程序参见文件Cprogram#include#include int huiwen(int m)int t,n=0;t=m;while(t)n+;t=t/10;编写一个求水仙花数的函数,然后通过主函数调用该函数求100 到 999 之间的全部水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如:153 就是一个水仙花数:153=1*1*1+5*5*5+3*3*3答:程序参见文件Cprogram#include#include int fun8(int m)int a,b,c;a=m/100;b=m/10%10;c=m
22、%10;if(m=a*a*a+b*b*b+c*c*c)return 1;else return 0;main()int i;for(i=100;i=999;i+)11 if(fun8(i)printf(%5d,i);printf(n);9.编一函数primedec(m),求整数m的所有因子并输出。例如:120 的因子为:2,2,2,3,5答:程序参见文件Cprogram#include#include void primedec(int m)int n=2;while(m1)while(m%n=0)printf(%d ,n);m=m/n;n+;printf(n);main()int x;sca
23、nf(%d,&x);primedec(x);10.求 100200 之间的所有素数,按每行6 个输出。答:程序参见文件Cprogram#include#include int prime(int m)int n,f=1;for(n=2;nm;n+)if(m%n=0)f=0;break;return f;main()int x,n=0;for(x=100;x=200;x+)if(prime(x)n+;printf(%5d,x);if(n%6=0)printf(n);printf(n);11.编一函数,求末尾数非0 的正整数的逆序数,如:reverse(3407)=7043。答:程序参见文件Cpr
24、ogram#include#include int reverse(int m)int x=0;while(m)12 x=x*10+m%10;m=m/10;return x;main()int w;scanf(%d,&w);printf(%d=%dn,w,reverse(w);12.编一函数,将一个字符数组中的数字字符存于另一个字符数组中。答:程序参见文件Cprogram#include#include void fun12(char a,char b)int i=0,j;for(j=0;j=0&bj=9)ai+=bj;ai=0;main()char s181,s281;gets(s2);fu
25、n12(s1,s2);puts(s2);puts(s1);13.编一函数,统计一个字符串中字母、数字、空格和其它字符的个数。答:程序参见文件Cprogram#include#include void fun13(char s)int i,num=0,ch=0,sp=0,oh=0;char c;for(i=0;(c=si)!=0;i+)if(c=)sp+;else if(c=0&c=A&toupper(c)=Z)ch+;else oh+;printf(char:%d,number:%d,space:%d,other:%dn,ch,num,sp,oh);main()char s181;gets(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题 答案 13
限制150内