C语言经典习题.doc_第1页
C语言经典习题.doc_第2页
C语言经典习题.doc_第3页
C语言经典习题.doc_第4页
C语言经典习题.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

第4章函数和预处理 程序填空 1下面程序的功能是:通过调用函数fun求a的b次方并输出。请填空完善程序。 # include int fun(int x,int y) int i,z=l; for(i=1;i=y;i+) z= (l) ; return Z: void main() int a,b,c; scanf(”%d%d,&a,&b); c=(2) ; printf(%dn”,c); ) 2下面程序的功能是:随意输入一个整数x,通过调用函数fun求得1到x的累加和,最后输 出。请填空完善程序。 # include void main() int fun(int): int x: scanf(”%d”,&x); printf(“%dn”, (1) ); int fun(int n) ini i,c; (2) ; For(i=1;i=n;i+) c十=I;return c; 3下面程序的功能是:随意输入两个整数,通过调用函数max返回两个整数中的大的数并输 出。请填空完善程序。#include void main() int max(int , int) ; int a,b,c; scanf( %d%d,a, &b) c=(1);printf(a= %d b=% d max= % dn” , a, b, c);int max(int x,int y) int z; z=xy? x=(2) return z;4下面程序的功能是:随意输入一个整数判断是否为素数,是则打印YES,否则打印NO。请 填空完善程序。 # include int prime(int a) int e,i,f; f=l; e= a/2; i=2: while(i=e) if(a%i= =o) f=O; (1) ;Else i+; return(f); void main() int x;printf(”请输入一个整数:”);scanf(”%d”,x):if( (2) ) printf(“YESn”); else printf(NOn”); )5下面程序的功能是:通过调用函数fun为a数组中的所有元素从键盘输入值。请填空完善 程序。 # include # define N 10 void fun(int xN) int i=O: while(iN) scanf(“%dr,&xil); (1) ;void main() int i=0;int aN ;fun(2)while (iN) printf(” %d ,ai) ;i+;6下面程序的功能是:根据宏名LETTER中的值,来决定是否将字符串中的字母全部转换成大写字母或小写字母。请填空完善程序。#include#define LETTER 1Viod main()int i; char c, str = C Language”; i=0; while (c=stri) ! = 0) #if LETTERIf(c=a&c=A&c=Z)(1)(2)Printf(“%c”,c);i+; printf(n); 7下面程序的功能是:调用函数sort,用“起泡法”对数组中的10个字符按从小到大的顺序排 序,最后输出该数组。请填空完善程序。 # include void sort(char str); void main() int i; char str10=(e,f ,b, c, Z, x, y, U, W, a;sort ( (l) );for(i=0;i10;i+) printf(“%c, stri) ; printf(”n“) ;void sort(char str10) int i,j, char t; for(i=0;i9,i+) for(j=O;jstrj+l) t=strj; if strj=strj+l;(2); 8下面程序的功能是:通过调用函数ver把在主函数中输入的字符串按逆序存放,最后输出。 请填空完善程序。# include # include void ver(char str100) char t; int i,j; for(i=o,j= strlen(str) -l;istrlen(str)/2;i+ , (1) )tstri;stri= (2) ;strjl=t;void main() char str100; scanf(“%s, str); ver(str); printf(“%sn, str);9下面程序的功能是:通过调用函数fac求n!并输出。请填空完善程序。 # include int fac(int n) int f; if(no) printf(“no,datd error!”); else if(n= =O|n= =l) f=l; else f= (l) :return(f);void main() int n=5; int y; (2) ;printf(”%d!=%dn”,n,y);10.下面程序的功能是:通过调用del函数从字符串S中删除第i个字符开始的n个字符。请 填空完善程序。# include voiddel(char s,int i,int n)int j,k,length=0; while( slengthl)(1) ;-i;j=iif(ilength)k=i+n; if(i+n =length) while( klength) sj+=sk+; (2) ;void main() int i,n; char str =”ABCDEFGHIJ KLMNO PQRSTUVWXYZ; scanf (“ % d,% d” , &i. &n) ;del(str,i,n) ; printf(”% sn, str) ;II.下面程序的功能是:调用函数fun对数组中的三个字符串由小到大进行排序,最后输出排 序后的字符串。请填空完善程序。# includevoid fun(char str320) char string20 ; if(strcmp(str0, strl0) strcpy( string , str0 ) ; strcpy(str0 , (1) ;strcpy(strl , string) ;if(strcmp(stro , str2)0)strcpy( string , str0 ) ; strcpy(str0 , str2);strcpy(str2 , string) ; Void main()int i ;char str 320=“China”,”Beijing”,”Jilin”;fun(str);for(i=0;i3;i+) puts(stri); 12.下面程序的功能是:统计两个数组中下标相同的对应元素大于、等于或小于的次数,并由 此决定哪个数组较大。请填空完善程序。 # include int large(int y) int flag; if(xy) f1ag=l; else if(xy) flag= -1; return(flag) ;voicl main() int i,k=0,m=0.n=0,flag; int a10 = 1,3,5,7,9,8,6,4,2,0 , b10 = 5,3,8 ,9, -1, - 3 , 5 , 6 , 0 , 4 ; for(i=o;ibi %dt imesn”,n)printf(ai = bi %dt imesn”,m)printf(ai k) printf(Array a is larger than Array bn) ; else if(nk) printf(“Array a is smaller than Array bn) ; else printf(Array a is equal than Array bn) ;13.下面程序的功能是:调用sort函数用选择法对数组元素的值进行由小到大排序,最后输 出。请填空完善程序。 # include void sort(int (1) ,int array) int i,j,k,t; for(i=o;iarrayj) k=j;t= arrayi ;arrayi = arrayk ;arrayk =t;void main() int i,a10;printf(“input the array:n”) ;for(i=o;il0;i+) scanf(“%d”, & ai) ;sort(l0,a) ;printf(the sorted array:n”) ;for(i=o;il0;i+)printf(“%6d”,ai);printf(“n”);14.下面程序的功能是:通过调用函数max_ value找出二维数组中的最大值并输出。请填空 完善程序。 # include void main() int max_value(int array4); int a34=1,3,5,7,2,4,6,8,15,17,34,12; printf (max value is %dn”,max_value(a); int max_value(int array4) int i,j,max; max=array00;for(i=0;i3;i+)for(j=0;j4;j+) if (maxarrayilj)(1) ;(2); )15.下面程序的功能是:通过调用函数average求出数组中的最大值、最小值以及平均值。最 后在主程序中输出。请填空完善程序。 # include (1) ;void main() float average(int ,float array; int i; float aver,score10= 78. 5,97. 8,99,45. 6,34,78,88,98,95,62. 8 ; aver= average(10 , score) ; . printf(max= %. 2f nmin= %. 2fnaverage= %. 2fn” , max, min , aver) ;float average(int n,float array) int i; float sum; max=min=sum= (2) ;for(i=1;in,i+) sum+=arrayi ; if(maxarrayi) min= arrayi; return(sum/n); 16.下面程序的功能是:调用函数fac依次计算1!,2 !,3 !,4 !和5 !并输出。请填空完善程 序。 # include int fac(int n) static int f=l;(1)return(f);void main() int i;for(i=1;i=5;i+) printf(”%d! =%dn”,i, (2) ); 17.下面程序的功能是:通过宏调用计算圆的周长、面积和球体积并输出。请填空完善程序。# include # define PI 3. 1415926# define CIRCL.E(R,L,S,V) L=2 * PI*R;S= (1) ;V=4.0/3. 0 * PI*R*R* Rvoid main() float r,l, s, v; printf (input a radus : ) ;scanf(“%f”,(2) );CIRCLE(r,l,s,v)printf(r= %. 2fnl= %. 2fns=%. 2fnv= % . 2fn , r,l,s,v) ; 18.头文件prt.h的内容如下: # include stdio.h“ # define PR printf # define NL n# define D”%d”# define D1 D NL# define D2 D D NL# define D3 D D D NL# define D4 D D D D NL# define S”%s”NL下面程序中引用了prt.h头文件中的宏,请填空完善程序。 (1)void main() int a,b,c,d;char string =”CHINA”;a=1;b=2;c=3;c=4;PR ( (2) ,a); PR(D2,a,b); PR(D3,a,b,c); PR(D4,a,b,c,d); PR(Sstring); printf(Dl,a+b); )19.下面程序的功能是:输入3个整数,用函数的嵌套调用求三个数中最大数和最小数的差 值。请填空完善程序 # include int dif(int x,int y,int z); int max(int x,int y,int z); int min(int x,int y,int z); void main() int a,b,c,d; scanf(“d%d% d, &a,&b,&.c); d=dif(a,b,c); printf(“Max-Min=%dn”,d); int dif(int x,int y,int z)return max( x, y, z) - (1)int max(int x,int y,int z) int r; r=xy? x:y; returri(rz? r:z) ;int min(int x,int y,int z) int r; R=xy?x:y; return ( (2) ) ; 20.已定义一个含有30个元素的数组s,函数funl的功能是按顺序分别赋予各元素从2开始 的偶数,函数fun2则按顺序每五个元素求一个平均值,并将该值存放在数组w中。请填 空完善程序。 # include float s30,w6; funl(float s) int k,i; for(k=2,i=o;i30;i+) (l) k+=2; )fun2(float s ,float w) float sum=0. 0; int k,i; for(k=o,i=0;i30;i+) sum+=si; (2)wk = sum/5 ; (3)k+;void main()int i; funl(s) ; (4) for(i=0;i30;i+) if(i%5= =0) printf(n) ; printf(%8. 2f, si) ; printf(“n“) ; printf(%8. 2f, wi) ;21.下面程序的功能是:将两个字符串连接为一个字符串,不允许使用库函数strcat。请填空 完善程序。# include # include void main ( ) void join(char , char ) ; char strl80 , str240 ; gets(strl) ;gets(str2) ; puts(strl) ; puts(str2) ; (l) ;puts(strl) ;void join(char sl80,char s240) int i,j; (2) ;/* * * * * * * * * * -x SPACE-x -x x- x x x -x -x- -x x */for(i=0;(3)=0;i+)sli+j=;/* * * *- *- * * * * * -x SPACE-x- x- * )e x x- x x + +e */Sli+j= (4) ;程序改错1下面程序的功能是:计算并输出s=1“+2+3“+N“。请改正程序中的错误,使程序能 得到正确的运行结果。 # include long fl(int n,int k) * FOUND-x-* long power=l; int i: for(i=1;ik;i+) power*=n; return power; long f2(int n,int k) long sum=0; int i; for(i=1;ibi4次,biai5次,ai= = bil次),则认为a数组小于b数组。请改正程序中的错误,使程序能得到正确的运行结 果。 #include int large(int x,int y); void main() int i,m=0,n=0,k=0; int a10= 5,7,3,7,1,2,9,12,14,0); int blo=2,8,5,9,1,3,1,9,0,21; for(i=0;ik)、 printf(”a数组大于b数组n”); if (my) flag=l; else if ( x y)flag= -l;elseflag=0;* FOUND*return l; )3下面程序的功能是:用选择法对数组a中的10个整数按由小到大的顺序排序,之后按由小 到大的顺序输出数组中的值。请改正程序中的错误,使程序能得到正确的运行结果。 # include void main() void sort(int arrary ,int n) ; int al0,i; printf(n请输入10个整数 : n) ; for(i=o;ilo;i+) sort(a,10) ; for(i=0;ilo;i+) printf(%5d,ai) ;printf(n) ;void sort(int array ,int n) int i,j,k,t; for(i=o;in-l;i+) k=i;* FOUND* for(j=I;jn;j+) if (arrayjarraykl) /* * * * * * * * * FOUND* * * * * */ j=k; t= arrayk ; arrayk = arrayi ; arrayi = t; 4函数fun的功能是:求整数n以内(不包括n)3的倍数之和,在main函数中由键盘输入n 值,并输出运算结果。请改正程序中的错误,使它能得出正确的结果。# include longfun(int n) (int i; long int s=0; for(i=1;in;i+) if(i%3= =0) s+=i: return s: void main() int n; long int result; printf(“Enter n: ) ;/* * * * * * * * * *FOUND* * * * * * * * * * * */Scanf(“%d”,n)/* * * * * * * * * * FOUND* * * * * * * * * * * / result=fun( ) ; printf(Result=% ldn , result) ;5函数fun的功能是:计算正整数num的各位上的数字之积。请改正程序中的错误,使它能 得出正确的结果。例如,输入252,则输出应该是20。# include long fun (long num)/* * * * * * * * * * FOUND* * * * * * * * * * */long k; do k* =num%10;* * * * * * * * * * * *FOUND* * * * * * * * * * * * */ num= 10 ; while (num) ; return k;void main()long n;printf ( nPlease enter a number : “) ;scanf(r %ld” , &n) ;printf(n%ldn”,fun(n) ) ; )6.函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。# include int fun(int a,int b)int r,t;if(ab)T= a;/* * * * * * * * * *FOUND* * * * * * * * * * * */b=a;/* * * * * * * * * * * FOUND* * * * * * * * * * */ a=t;r=a%bwhile(r! =0) a=b; b=r;r=a%breturn b;void main()int numl , num2 , a;scanf(%d%d, &numl, & num2) ;a= fun(numl, num2) ;printf(the maximum common divisor is % dnn , a) ; 7. fun函数的功能是:实现3行3列矩阵的转置,即行列互换。请改正程序中的错误,使它能 得出正确的结果。 。# include void fun(int a33,int m,int n) int i,j,t; for(i=0;im;i+) for(j=0;jn;j+) /* * * * * * * * * * * *FOUND* * * * * * * * * * * * * */ scanf(”% d” , ai j) ; for(i=0;im;i+) for(j=0;jn;j+) printf(%4d, ai j) ; printf ( “n”) ; printf(“n”) ;for(i=0;im;i+)/* * * * * * * * * * * FOUND* * * * * * * * * */ for(j=0;jn;j+)T=aij;aij=aji;aji=tfor(i=0;im;i+)for(i=0;in;i+) printf(%4d,aij) ; printf (n) ;void main() int b33;fun(b,3,3) ; )8.下面程序的功能是:通过调用sort函数,用“起泡法”对输入的十个字符排序后按从小到大 的顺序输出。请改正程序中的错误,使它能得出正确的结果。 # include #: defineN 10void sort(char strN) int i,j;char t;for(j=1;jN;j+) for(i=0;(istri+l)t=stri;stri = stri+l ;stri+l=t; void main() int i; char strN; /* * * * * * * * * * * FOUND* * * * * * * * * * * * */scanf(%s”, &str) ;/* * * * * * * * * * * FOUND* * * * * * * * * * * * */sort(str(N) ; for(i=0;iN;i+) printf(”% c”, stri) ;printf(n) ; 9.函数fun的功能是:计算并输出n(包括n)以内的能被5或9整除的所有自然数的倒数之 和。要求n的值不大于100。请改正程序中的错误,使它能得出正确的结果。# include double fun(int n) int i; double sum= 0. 0 ; /* * * * * * * * * * * FOUND* * * * * * * * * * * * */ if(n0|n=100) for(i=1;in;i+) if(i%5= =0|i%9= =0) /* * * * * * * * * * * FOUND* * * * * * * * * * * * */ sum+ = 1/i; return sum;void main() int n; double s; printf(“nInput n:”); scanf(“%d”, &n); s=fun(n); printf(“nns= %fn”,s); )10.函教del的功能是:从字符串中删除第i个字符开始的n个字符。请改正程序中的错误, 使它能得出正确的结果。 # include * FOUND* void del(char s,int i,n) * FOUND* int j,length,k;while( slength) length+ ;- -l;J=i;if(ilength)k=i+n if(i+n=length) while(klength) sj+=sk+ sj=0 void main() int i,n; char str =uABCDEFGHIJKLMNOPQRSTUVWXYZ ;scanf(“%d,%d”,&i&n); del(str,i,n) ;printf(%sn”, str) ; 11.下面程序的功能是:调用函数fun,求一个3行4列矩阵的外框的元素值之和。请改正程序中的错误,使它能得出正确的结果。例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时,外框元素值之和应为65。# include int fun(int a34,int m,int n)* FOUND*int i,j, s, sl = s2 = s3 = s4=0 ;for(j一0;jn;j+)s1=s1+a0j;* FOUND*s2=s2+amj;for(i=l;im-l;i+)s3一s3+ai0;s4= s4+ain-l ;s=sl+s2+s3+s4;return s; void main() int a34=1,2,3,4,5,6,7,8,9,10, 11,12;printf(total=%dn”,fun(a,3,4); 12. fun函数的功能是:实现两个字符串的连接。请改正程序中的错误,使它能得出正确的结 果。 例如:输入dfdfqe和12345时,则输出dfdfqe12345。 # include void scat (char sl,char s2) int i=0,j=0; * FOUND* while(sli= =”0”) i+; * FOUND* while(s2j= =”0”) s1i=s2j; i+: j+; s1i=0; void main() char sl80l,s280; void scat(char sl , char s2) ; gets(sl) ; gets(s2) ; scat(sl,s2) ; puts(sl) ;13. fun函数的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t数组中。 请改正程序中的语法错误,使它能运行出正确的结果。 例如:当s所指的字符串的内容为”ABCD时,t数组中的内容为”DCBAABCD。 # include # include * FOUND* void fun(char s,char t) int i,d; * FOUND* d=len(s); for (i=0;id;i+) ti=sd-l-i; for (i=0;id;i+) td+i=si; t2*d=O; void main() char - sl00,t100 ; printf ( nPlease enter string S : ) ; scanf(“% s” , s) ; fun(s,t) ; printf(nThe result is : % sn, t) ;4.4程序设计1请编写函数swap,其功能是:比较变量x和变量y中的值,将大的值返回给主函数。# include void NONO() ;int swap(int x,int y)void main()2编写函数fun,其功能是:求n!。主函数的功能是计算: x!+y!+z!的值。 # include”stdio.h” long fun(int n) void

温馨提示

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

评论

0/150

提交评论