1、题库1.用起泡法对N=10个整数由大到小排序。10个整数由键盘输入,排序后从屏幕输出成果#include void main() int a10,i,j,t; printf(输入十个整数:n); for(i=0;i10;i+) scanf(%d,&ai);for(j=0;j9;j+) for(i=0;i9-j;i+) if(aiai+1) t=ai,ai=ai+1,ai+1=t; printf(新顺序是:n);for(i=0;i10;i+) printf(%5d,ai);printf(n); 2.编写一函数,从实参传来一种字符串,分别记录其中数字、大写字母、小写字母和其他字符个数,输入输出在m
2、ain函数中完毕#includeint a,b,c,d;void main()void count(char);char text100;printf(输入字符串:n);gets(text);printf(string:);puts(text);a=0;b=0;c=0;d=0;count(text);printf(数字:%d,大写字母:%d,小写字母:%d,其他字符:%dn,a,b,c,d);void count(char str)int i; for(i=0;stri!=0;i+) if(stri=0&stri=A&stri=a&stri=z) c+; else d+;3.用一函数inv将一
3、种字符串字符逆序排列。输入输出在main函数中完毕。规定在inv中用指针解决。#include #include void inv(char str) int len,i;char t;len=strlen(str);for(i=0;ilen/2;i+) t=*(str+i);*(str+i)=*(str+(len-i-1);*(str+(len-i-1)=t; void main() char str20;printf(input str:);scanf(%s,str);inv(str);printf(%sn,str);4.求200之内素数和。从屏幕输出成果#include int prim
4、e(int m)int i;for(i=2;im;i+)if(m%i=0) break;if(i=m)return 1; elsereturn 0;void main()int i,sum=0;for(i=2;i=200;i+)if(prime(i)=1) sum+=i;printf(素数之和为%dn,sum);5从屏幕输入一行字符,将所有大写字母转换为小写字母,所有小写字母转换为大写字母,其他字符不变,从屏幕输出成果#include #include void change(char s)int len,i;len=strlen(s);for(i=0;i=65&si=97&si=122)si
5、=si-32; else si=si;void main()char s100;printf(input the string:);gets(s);change(s);printf(%sn,s);6一球从100米高度自由落下,每次落地后反跳回原高度一半,再落下。求它在第10次落地时,共通过多少米?第10次落地后又反弹多高?#includevoid main()float s(int n);float h(int n); printf(第十次反弹高度:%fm.n,h(10);printf(第十次落地路程:%fm.n,s(10);float h(int n) double a;if (n=0) a
6、=100.0;else a=h(n-1)/2.0;return a;float s(int n)float b;if(n=0) b=0.0;else if(n=1)b=100.0;else b=s(n-1)+2.0*h(n-1);return(b);7.对N=20个字符由大到小排序。20个字符由键盘输入,排序后从屏幕输出成果#include void main() int i,j; char a20,t; printf(输入二十个字符:n); for(i=0;i20;i+) ai=getchar();for(j=0;j19;j+) for(i=0;i19-j;i+) if(aiai+1) t=
7、ai,ai=ai+1,ai+1=t; printf(从大到小顺序是:n);for(i=0;i20;i+) printf(%3c,ai);printf(n); 8有一字符串,把其中字母a和A去掉,成为一种新字符串。原字符串从键盘输入。从屏幕输出成果#include void main()int i=0;char a100,b100;char*p;printf(Please input a string:);gets(a);for(p=a;*p!=0;p+) if(*p!=A&*p!=a)bi=*p;i+; bi=0;puts(b);9求Fibonacci数列前30项和。从屏幕输出成果。Fibon
8、acci数列为: F(1)=1,(n=1) F(2)=1,(n=2) F(n)=F(n-2)+F(n-1),(n=3)#include void main() int a30=1,1;int i,sum=0;for(i=2;i30;i+) ai=ai-2+ai-1;for(i=0;i30;i+) sum=sum+ai;printf(Fibonacci数列前30项和为:%dn,sum);10写一函数,使输入一种字符串按反序存储,在主函数中输入和输出字符串#include#includevoid main()void inverse(char s);char s800;printf(please
9、input string:);scanf(%s,s);inverse(s);printf(now the string is:%sn,s);void inverse(char s)int i,j;char t;for(i=0,j=strlen(s);i(strlen(s)/2);i+,j-)t=si;si=sj-1;sj-1=t;11从键盘输入一种不不大于2整数,鉴定与否是素数。从屏幕输出成果。规定用函数解决#includevoid main()int n;int prime(int);printf(请输入一种不不大于2整数:);scanf(%d,&n);if(prime(n)printf(n
10、%d是素数n,n);else printf(n%d不是素数n,n);int prime(int m)int a=1,b;for(b=2;bm/2&a=1;b+)if(m%b=0)a=0;return a;12从键盘输入月份,输出这个月有多少天。规定用函数解决#includevoid main()int sum(int);int m,d;printf(请输入月份:);scanf(%d,&m);d=sum(m);printf(该月有%d天.n,d);int sum(int m)int day13=0,31,28,31,30,31,30,31,31,30,31,30,31; m=daym;retur
11、n m;13求两个数最大公约数。规定用函数解决#includevoid main()int a(int,int);int c,d,e;printf(请输入两个整数:);scanf(%d,%d,&c,&d);e=a(c,d);printf(最大公约数:%dn,e);int a(int u,int v)int t,r;if(vu)t=u;u=v;v=t;while(r=u%v)!=0)u=v;v=r;return v;14求两个数最小公倍数。规定用函数解决#includevoid main()int a(int,int);int b(int,int,int);int c,d,e,f;printf(
12、请输入两个整数:);scanf(%d,%d,&c,&d);e=a(c,d);f=b(c,d,e);printf(最小公倍数:%dn,f);int a(int u,int v)int t,r;if(vu)t=u;u=v;v=t;while(r=u%v)!=0)u=v;v=r;return v;int b(int u,int v,int e)return(u*v/e);15从屏幕输入3个整数,按从小到大顺序输出,规定用指针进行解决#includevoid main()void s(int *p1,int *p2);int a,b,c;int *p1,*p2,*p3;printf(请输入3个数:);
13、scanf(%d,%d,%d,&a,&b,&c);p1=&a;p2=&b;p3=&c;if(ab) s(p1,p2);if(ac) s(p1,p3);if(bc) s(p2,p3);printf(当前顺序为:%d,%d,%dn,a,b,c);void s(int *p1,int *p2)int p;p=*p1;*p1=*p2;*p2=p;16自己编写一种函数,将两个字符串连接起来,规定在main函数中输入输出#includevoid main()void lian(char string1,char string2,char string3);char s1100,s2100,s3100;pr
14、intf(ninput string1:);gets(s1);printf(ninput string2:);gets(s2);lian(s1,s2,s3);printf(The new string is:%sn,s3);void lian(char string1,char string2,char string3)int i,j;for(i=0;string1i!=0;i+)string3i=string1i;for(j=0;string2j!=0;j+)string3i+j=string2j;string3i+j=0;17打印水仙花数(课本习题)#includevoid main()i
15、nt i,j,k,n;printf(水仙花数是:);for(n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf( %d ,n);printf(n);18打印杨辉三角形前10行#include#define N 11void main()int i,j,aNN;for(i=1;iN;i+)ai1=1;aii=1;for(i=3;iN;i+)for(j=2;j=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;iN;i+) for(j=1;j=i;j+) printf( %6d ,aij);
16、printf(n);19从一种5*5二维数组中找最大值并输出#include# define N 5void main()int i,j,max,aNN;printf(ninput the array:n);for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&aij);max=a00;for(i=0;iN;i+)for(j=0;jmax) max=aij;printf(the largest num is:%d,max);printf(n);20从一种5*5二维数组中找最小值并输出#include# define N 5void main()int i,j,min,aN
17、N;printf(ninput the array:n);for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&aij);min=a00;for(i=0;iN;i+)for(j=0;jN;j+)if(aijmin) min=aij;printf(the smallest num is:%d,min);printf(n);21求10个整数平均数。10个整数从键盘输入#include#define N 10void main()int i,sum=0,aN;float aver;printf(ninput N num:);for(i=0;iN;i+)scanf(%d,&ai)
18、;for(i=0;iN;i+)sum=sum+ai;aver=sum/N;printf(the average num is:%6f,aver);printf(n);22求100-200之间素数和#includeint prime(int n)int flag=1,i;for(i=2;in/2;i+)if(n%i=0)flag=0;return(flag);void main()int sum=0,n;for(n=100;n=200;n+)if(prime(n) sum=sum+n;printf(the sum of prime is:%d,sum);printf(n);23 求100-200
19、间合数(非素数)和# include # include void main ()int m,k,i,n=0,sum1=0,sum2;for (m=101;m=200;m=m+2)k=sqrt(m);for (i=2;i=k+1)sum1=sum1+m;sum2=101*(100+200)/2-sum1;printf(%d,sum2);24求10个整数最大值,用函数完毕# include void main()void sort (int x,int n);int * p,i,a10;p=a;for (i=0;i10;i+)scanf (%d,p+);p=a;sort(p,10);printf
20、(%d,a0);void sort (int x,int n)int i,j,k,t;for (i=0;in-1;i+)k=i;for (j=i+1;jxk)k=j;if(k!=i)t=xi;xi=xk;xk=t;25 10个字符排序,按从小到大顺序,用函数完毕#include#include/头文献char x10;/定义绝对字符变量void main()int i;void rang(char );/声明函数rangprintf(please put in 10 charn);scanf(%s,&x);/if(x)10)/printf(error);/elseprintf(zhuan hu
21、an hou:n);rang(x);/调用函数rangfor(i=0;i=9;i+)printf(%4c,xi);printf(n);/输出成果/void rang(char x10)int t,i,j;for(i=0;i9;i+)for(j=0;jxj+1)t=xj;xj=xj+1; xj+1=t;/排序函数rang26 编写一种函数,求一种正整数各个位数字和。如485各个位数和:4+8+5=17。在main函数中输入输出#include #include void main()int a=0,sum=0,b=0;scanf(%d,&a);for(int i=0;isizeof(a);i+)
22、b=int(a/(pow(10,i);sum=b%10+sum;printf(%dn,sum);27 把一种字符串中所有字母所有去掉,产生一种新字符串,输出#include #include void main()char str10,str110,str210;scanf (%s,&str);int i,j,k;for(i=0,j=0,k=0;i=a & stri=A & stri=Z)str1j=stri;j+;elsestr2k=stri;k+;str1j=0;str2k=0;printf(%sn,str2);28 把一种字符串中所有数字字符所有去掉,产生一种新字符串,输出#includ
23、e #include void main()char str100,str1100,str2100;int i,j,k;scanf(%s,&str);for(i=0,j=0,k=0;i=0) & (stri=99) )str1j=stri;j+;elsestr2k=stri;k+;str1j=0;str2k=0;printf(%sn,str2);29 求100到1000之间所有能被3整除但不能被5整除数和# include void main()int n,sum;for (n=100;n=1000;n+)if (n%3=0)&(n%5!=0)sum=sum+n;printf (%d,sum)
24、;30从键盘输入年份,输出与否是闰年。编写一种函数解决,main函数输入输出#includevoid deal(int year)if(year%4=0&year%100!=0)|year%400=0) printf(闰年n);else printf(不是闰年) ;void main()int year;printf(请输入一种年份:n); scanf(%d,&year);deal(year);31(1)编写一种函数,功能是求任意33矩阵主副两对角线各个元素之总和。(2)写出main函数,定一种33数组,从键盘任意输入9个数存入数组中,并调用(1)中函数求出主副两对角线各个元素之总和,最后输出
25、该数组和所求出和。#includevoid main() int deal(int a33);int i,j,a33;printf(请输入数据:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);printf(数组是:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%5d,aij);printf(n);printf(矩阵对角线和:n);printf(%dn,deal(a); int deal(int a33)int i,sum=0;for(i=0;i3;i+)sum+=aii;sum=sum+a13+a31;return(su
26、m);32从键盘任意输入9个整数存入33二维数组中,求出该数组最大元素值及其所在行列下标。最后输出该数组和所求出信息。#includevoid main()int i,j,a33,row=0,colum=0,max;max=a00;printf(请输入9个数据:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0;i3;i+)for(j=0;jmax)max=aij;row=i;colum=j;printf(输出该数组:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%5d,aij);printf(n);prin
27、tf(max=%d,row=%d,colum=%dn,max,row,colum);33有一种43矩阵,求出每行最小值及每列最小值。按如下格式输出该矩阵和所求出各值。8103083-19-164022-596-5-5-12#includevoid main()int i,j,a54,min; printf(请输入9个数据:n);for(i=0;i4;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0;i4;i+)for(j=0;j3;j+)min=ai0;if(aijmin)min=aij;ai3=min;for(j=0;j3;j+)for(i=0;i4;i+)mi
28、n=a0j;if(aijmin)min=aij;a4j=min;printf(输出该数组:n);for(i=0;i4;i+)for(j=0;j4;j+)printf(%5d,aij);printf(n);for(j=0;j3;j+)printf(%5d,a4j);printf(n);34(1)设计一种函数,功能是将44方阵转置。(2)写出main函数,定一种44数组,从键盘任意输入16个数存入数组中,并调用(1)中函数对该数组转置,最后输出该数组#include main() void array(int a44);int i,j;int a44;for(i=0;i4;i+) for(j=0;
29、j4;j+) scanf(%d,&aij);array(a);for(i=0;i4;i+) for(j=0;j4;j+) printf(%5d,aij);printf(n); void array(int a44)int i,j,k;for(i=0;i3;i+) for(j=i+1;j4;j+) k=aij;aij=aji;aji=k; 354个学生5门课,求每门课平均分、最高分,记录每门课程最高分学生下标,并显示出数组和所求各信息。#includevoid main()int i,j,row,m,a45,max;float b5,sum;printf(请输入20个数据:n); for(i=0
30、;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);printf(输出该数组:n);for(i=0;i4;i+)for(j=0;j5;j+) printf(%d ,aij); printf(n);for(j=0;j5;j+)sum=0;for(i=0;i4;i+)sum+=aij;bj=sum/4;for(j=0;j5;j+)max=a0j;m=j;row=0;for(i=0;imax) max=aij; row=i; printf(第%d课最高分为%d 平均分为%5.2f 最高分学生下标为%dn,m,max,bj,row);364个学生5门课,打印每门课程最高分学生所有成
31、绩#includevoid main()int i,j,t,m,n,a45,max; for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);for(j=0;j5;j+)max=a0j;m=j;t=0;for(i=0;imax) max=aij;t=i; printf(第%d门课最高分学生所有成绩: ,m); for(n=0;n5;n+) printf(%d ,atn); printf(n);374个学生5门课,打印所有有不及格课程学生所有成绩#includevoid main()int a45;int i,j;printf(请输入所有同窗成绩:n);for(i=
32、0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);printf(不及格同窗成绩:);for(i=0;i4;i+)for(j=0;j5;j+)if(aij60)for(j=0;j5;j+)if(j%5=0)printf(n);printf(%d ,aij);38(1)写一种函数length,功能求任意一种字符串长度(不能使用strlen函数)(2)在main函数,任意输入一种字符串,通过调用(1)中函数求出其长度,并显示。#includeint i=0;int length(char s)while(si!=0) i+;return(i);void main()char s80;int c;printf(请输入一种字符串:);gets(s);c=length(s);printf(%d,c);39#includevoid copystring(char a,char b)int i=0;while (ai!=0)bi=ai;i+;bi=0;void main()char a=I am a boy;char b=I am a student;printf(na=%snb=%sn,a,b);printf(把a复制给b:);copystring(a,b);printf(na=%snb=%sn,a,b);