C语言题库参考模板_第1页
C语言题库参考模板_第2页
C语言题库参考模板_第3页
C语言题库参考模板_第4页
C语言题库参考模板_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、题库1.用起泡法对N=10个整数由大到小排序。10个整数由键盘输入,排序后从屏幕输出结果#include<stdio.h> void main() int a10,i,j,t; printf("输入十个整数:n"); for(i=0;i<10;i+) scanf("%d",&ai); for(j=0;j<9;j+) for(i=0;i<9-j;i+) if(ai<ai+1) t=ai,ai=ai+1,ai+1=t; printf("新顺序是:n");for(i=0;i<10;i+) p

2、rintf("%5d",ai); printf("n"); 2.编写一函数,从实参传来一个字符串,分别统计其中数字、大写字母、小写字母和其它字符的个数,输入输出在main函数中完成#include<stdio.h>int 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(

3、"数字:%d,大写字母:%d,小写字母:%d,其他字符:%dn",a,b,c,d);void count(char str)int i;1 / 30 for(i=0;stri!='0'i+) if(stri>='0'&&stri<='9') a+; else if(stri>='A'&&stri<='Z') b+; else if(stri>='a'&&stri<='z') c+;

4、 else d+;3.用一函数inv将一个字符串的字符逆序排列。输入输出在main函数中完成。要求在inv中用指针处理。#include <stdio.h> #include <string.h> void inv(char str) int len,i;char t;len=strlen(str); for(i=0;i<len/2;i+) t=*(str+i);*(str+i)=*(str+(len-i-1);*(str+(len-i-1)=t; void main() char str20; printf("input str:"); sc

5、anf("%s",str); inv(str);printf("%sn",str); 4.求200之内的素数的和。从屏幕输出结果#include <stdio.h>int prime(int m)int i;for(i=2;i<m;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从屏幕输入一

6、行字符,将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母,其它字符不变,从屏幕输出结果#include <stdio.h>#include <string.h>void change(char s)int len,i;len=strlen(s);for(i=0;i<len;i+)if(si>=65&&si<=90)si=si+32;else if(si>=97&&si<=122)si=si-32; else si=si;void main()char s100;printf("input

7、 the string:");gets(s);change(s);printf("%sn",s);6一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次落地后又反弹多高?#include<stdio.h>void 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

8、(n=0) a=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<stdio.h> void main() int i,j; char a20,t; printf("输入二十个字符:n"); for(i=0;i<20;i+) ai=getchar();for(j=0;j

9、<19;j+) for(i=0;i<19-j;i+) if(ai<ai+1) t=ai,ai=ai+1,ai+1=t; printf("从大到小的顺序是:n");for(i=0;i<20;i+) printf("%3c",ai); printf("n"); 8有一字符串,把其中的字母a和A去掉,成为一个新字符串。原字符串从键盘输入。从屏幕输出结果#include <stdio.h>void main()int i=0;char a100,b100;char*p;printf("Please

10、 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项的和。从屏幕输出结果。Fibonacci数列为: F(1)=1,(n=1) F(2)=1,(n=2) F(n)=F(n-2)+F(n-1),(n>=3)#include<stdio.h> void main() int a30=1,1; int i,sum=0; for(i=

11、2;i<30;i+) ai=ai-2+ai-1; for(i=0;i<30;i+) sum=sum+ai; printf("Fibonacci数列的前30项的和为:%dn",sum); 10写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串#include<stdio.h>#include<string.h>void main()void inverse(char s);char s800;printf("please input string:");scanf("%s",s);in

12、verse(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的整数,判断是否是素数。从屏幕输出结果。要求用函数处理#include<stdio.h>void main()int n;int prime(int);printf("请输入一个大于2的整数:");scanf("%d"

13、,&n);if(prime(n)printf("n%d是素数n",n);else printf("n%d不是素数n",n);int prime(int m)int a=1,b;for(b=2;b<m/2&&a=1;b+)if(m%b=0)a=0;return a;12从键盘输入月份,输出这个月有多少天。要求用函数处理#include<stdio.h>void main()int sum(int);int m,d;printf("请输入月份:");scanf("%d",&am

14、p;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;return m;13求两个数的最大公约数。要求用函数处理#include<stdio.h>void main()int a(int,int);int c,d,e;printf("请输入两个整数:");scanf("%d,%d",&c,&d);e=a(c,d);printf("最大公约数:%

15、dn",e);int a(int u,int v)int t,r;if(v>u)t=u;u=v;v=t;while(r=u%v)!=0)u=v;v=r;return v;14求两个数的最小公倍数。要求用函数处理#include<stdio.h>void main()int a(int,int);int b(int,int,int);int c,d,e,f;printf("请输入两个整数:");scanf("%d,%d",&c,&d);e=a(c,d);f=b(c,d,e);printf("最小公倍数:

16、%dn",f);int a(int u,int v)int t,r;if(v>u)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个整数,按从小到大顺序输出,要求用指针进行处理#include<stdio.h>void main()void s(int *p1,int *p2);int a,b,c;int *p1,*p2,*p3;printf("请输入3个数:");scanf("%d,%d,%d"

17、;,&a,&b,&c);p1=&a;p2=&b;p3=&c;if(a>b) s(p1,p2);if(a>c) s(p1,p3);if(b>c) 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函数中输入输出#include<stdio.h>void main()void lian(char string1,ch

18、ar string2,char string3);char s1100,s2100,s3100;printf("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=st

19、ring1i;for(j=0;string2j!='0'j+)string3i+j=string2j;string3i+j='0'17打印水仙花数(课本习题)#include<stdio.h>void main()int i,j,k,n;printf("水仙花数是: ");for(n=100;n<1000;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打印杨辉三角形

20、的前10行#include<stdio.h>#define N 11void main()int i,j,aNN;for(i=1;i<N;i+)ai1=1;aii=1;for(i=3;i<N;i+)for(j=2;j<=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;i<N;i+) for(j=1;j<=i;j+) printf(" %6d ",aij);printf("n");19从一个5*5的二维数组中找最大值并输出#include<stdio.h># define N 5voi

21、d main()int i,j,max,aNN;printf("ninput the array: n");for(i=0;i<N;i+)for(j=0;j<N;j+)scanf("%d",&aij);max=a00;for(i=0;i<N;i+)for(j=0;j<N;j+)if(aij>max) max=aij;printf("the largest num is: %d",max);printf("n");20从一个5*5的二维数组中找最小值并输出#include<

22、stdio.h># define N 5void main()int i,j,min,aNN;printf("ninput the array: n");for(i=0;i<N;i+)for(j=0;j<N;j+)scanf("%d",&aij);min=a00;for(i=0;i<N;i+)for(j=0;j<N;j+)if(aij<min) min=aij;printf("the smallest num is: %d",min);printf("n");21求10个

23、整数的平均数。10个整数从键盘输入#include<stdio.h>#define N 10void main()int i,sum=0,aN;float aver;printf("ninput N num: ");for(i=0;i<N;i+)scanf("%d",&ai);for(i=0;i<N;i+)sum=sum+ai;aver=sum/N;printf("the average num is:%6f",aver);printf("n");22求100-200之间的素数的和#

24、include<stdio.h>int prime(int n)int flag=1,i;for(i=2;i<n/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间合数(非素数)的和# include <stdio.h># include <mat

25、h.h>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;i+)if(m%i=0)break;if(i>=k+1)sum1=sum1+m;sum2=101*(100+200)/2-sum1;printf("%d",sum2);24求10个整数的最大值,用函数完成# include <stdio.h>void main()void sort (int x,int n);int * p,i,a10;p=a;for (i=0

26、;i<10;i+)scanf ("%d",p+);p=a;sort(p,10);printf("%d",a0);void sort (int x,int n)int i,j,k,t;for (i=0;i<n-1;i+)k=i;for (j=i+1;j<n;j+)if (xj>xk)k=j;if(k!=i)t=xi;xi=xk;xk=t;25 10个字符排序,按从小到大的顺序,用函数完成#include<stdio.h>#include<string.h>/头文件char x10;/定义绝对字符变量void

27、main()int i;void rang(char );/申明函数rangprintf("please put in 10 charn");scanf("%s",&x);/if(x)>10)/printf("error");/elseprintf("zhuan huan hou:n");rang(x);/调用函数rangfor(i=0;i<=9;i+)printf("%4c",xi);printf("n");/输出结果/void rang(char x1

28、0)int t,i,j;for(i=0;i<9;i+)for(j=0;j<9-i;j+)if(xj>xj+1)t=xj;xj=xj+1; xj+1=t;/排序函数rang26 编写一个函数,求一个正整数各个位的数字的和。如485的各个位数的和:4+8+5=17。在main函数中输入输出#include <stdio.h>#include <math.h>void main()int a=0,sum=0,b=0;scanf("%d",&a);for(int i=0;i<sizeof(a);i+)b=int(a/(pow(

29、10,i);sum=b%10+sum;printf("%dn",sum);27 把一个字符串中所有的字母都去掉,产生一个新字符串,输出#include <stdio.h>#include <string.h>void main()char str10,str110,str210;scanf ("%s",&str);int i,j,k;for(i=0,j=0,k=0;i<7;i+)if(stri>='a' && stri<='z')|(stri>=

30、9;A' && stri<='Z')str1j=stri;j+;elsestr2k=stri;k+;str1j='0'str2k='0'printf("%sn",str2);28 把一个字符串中所有的数字字符都去掉,产生一个新字符串,输出#include <stdio.h>#include <string.h>void main()char str100,str1100,str2100;int i,j,k;scanf("%s",&str);for

31、(i=0,j=0,k=0;i<100;i+)if(stri>=0) && (stri<=99) )str1j=stri;j+;elsestr2k=stri;k+;str1j='0'str2k='0'printf("%sn",str2);29 求100到1000之间所有能被3整除但不能被5整除的数的和# include <stdio.h>void main()int n,sum;for (n=100;n<=1000;n+)if (n%3=0)&&(n%5!=0)sum=sum+

32、n;printf ("%d",sum);30从键盘输入年份,输出是否是闰年。编写一个函数处理,main函数输入输出#include<stdio.h>void 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(

33、year);31(1)编写一个函数,功能是求任意3×3矩阵的主副两对角线各个元素之总和。(2)写出main函数,定一个3×3的数组,从键盘任意输入9个数存入数组中,并调用(1)中的函数求出主副两对角线各个元素之总和,最后输出该数组和所求出的和。#include<stdio.h>void main() int deal(int a33);int i,j,a33;printf("请输入数据:n");for(i=0;i<3;i+)for(j=0;j<3;j+)scanf("%d",&aij);printf(&

34、quot;数组是:n");for(i=0;i<3;i+)for(j=0;j<3;j+)printf("%5d",aij);printf("n");printf("矩阵对角线和:n"); printf("%dn",deal(a); int deal(int a33)int i,sum=0;for(i=0;i<3;i+)sum+=aii; sum=sum+a13+a31;return(sum);32从键盘任意输入9个整数存入3×3的二维数组中,求出该数组的最大元素值及其所在的行列下

35、标。最后输出该数组和所求出的信息。#include<stdio.h>void main()int i,j,a33,row=0,colum=0,max;max=a00;printf("请输入9个数据:n");for(i=0;i<3;i+)for(j=0;j<3;j+)scanf("%d",&aij);for(i=0;i<3;i+)for(j=0;j<3;j+)if(aij>max)max=aij;row=i;colum=j;printf("输出该数组:n");for(i=0;i<3

36、;i+)for(j=0;j<3;j+)printf("%5d",aij);printf("n");printf("max=%d,row=%d,colum=%dn",max,row,colum);33有一个4×3的矩阵,求出每行最小值及每列的最小值。按如下格式输出该矩阵和所求出的各值。8103083-19-164022-596-5-5-12#include<stdio.h>void main()int i,j,a54,min; printf("请输入9个数据:n");for(i=0;i&l

37、t;4;i+)for(j=0;j<3;j+)scanf("%d",&aij);for(i=0;i<4;i+)for(j=0;j<3;j+)min=ai0;if(aij<min)min=aij;ai3=min;for(j=0;j<3;j+)for(i=0;i<4;i+)min=a0j;if(aij<min)min=aij;a4j=min;printf("输出该数组:n");for(i=0;i<4;i+)for(j=0;j<4;j+)printf("%5d",aij);prin

38、tf("n");for(j=0;j<3;j+)printf("%5d",a4j);printf("n");34(1)设计一个函数,功能是将4×4方阵转置。(2)写出main函数,定一个4×4的数组,从键盘任意输入16个数存入数组中,并调用(1)中的函数对该数组转置,最后输出该数组#include<stdio.h> main() void array(int a44);int i,j; int a44; for(i=0;i<4;i+) for(j=0;j<4;j+) scanf(&quo

39、t;%d",&aij);array(a); for(i=0;i<4;i+) for(j=0;j<4;j+) printf("%5d",aij); printf("n"); void array(int a44)int i,j,k;for(i=0;i<3;i+) for(j=i+1;j<4;j+) k=aij; aij=aji; aji=k; 354个学生5门课,求每门课的平均分、最高分,记录每门课程最高分的学生下标,并显示出数组和所求的各信息。#include<stdio.h>void main()i

40、nt i,j,row,m, a45,max;float b5,sum;printf("请输入20个数据:n"); for(i=0;i<4;i+)for(j=0;j<5;j+)scanf("%d",&aij);printf("输出该数组:n");for(i=0;i<4;i+)for(j=0;j<5;j+) printf("%d ",aij); printf("n");for(j=0;j<5;j+)sum=0;for(i=0;i<4;i+)sum+=aij

41、;bj=sum/4;for(j=0;j<5;j+)max=a0j;m=j;row=0;for(i=0;i<4;i+) if(aij>max) max=aij; row=i; printf("第%d课的最高分为%d 平均分为%5.2f 最高分学生下标为%dn",m,max,bj,row);364个学生5门课,打印每门课程的最高分的学生的全部成绩#include<stdio.h>void main()int i,j,t,m,n,a45,max; for(i=0;i<4;i+)for(j=0;j<5;j+)scanf("%d&q

42、uot;,&aij);for(j=0;j<5;j+)max=a0j;m=j;t=0;for(i=0;i<4;i+)if(aij>max) max=aij;t=i; printf("第%d门课最高分学生全部成绩: ",m); for(n=0;n<5;n+) printf("%d ",atn); printf("n");374个学生5门课,打印所有有不及格课程的学生的全部成绩#include<stdio.h>void main()int a45;int i,j;printf("请输入全

43、部同学的成绩:n");for(i=0;i<4;i+)for(j=0;j<5;j+)scanf("%d",&aij);printf("不及格的同学的成绩:");for(i=0;i<4;i+)for(j=0;j<5;j+)if(aij<60)for(j=0;j<5;j+)if(j%5=0)printf("n");printf("%d ",aij);38(1)写一个函数length,功能求任意一个字符串长度(不能使用strlen函数)(2)在main函数,任意输入一个

44、字符串,通过调用(1)中的函数求出其长度,并显示。#include<stdio.h>int 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#include<stdio.h>void copystring(char a,char b)int i=0;while (ai!='0')b

45、i=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);40(1)写一个函数catstring,功能把一个字符串连接到另一个字符串的后面(不能使用strcat函数)(2)在main函数种,任意输入两个字符串,通过调用(1)中的函数实现

46、连接,并显示出连接后的字符串。#include<stdio.h>void main()void C(char string1,char string2,char string3);char s1100,s2100,s100;printf("ninput string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);C(s1,s2,s);printf("The new string is %sn",s);void C

47、(char string1,char string2,char string)int i,j;for (i=0;string1i!='0'i+)stringi=string1i;for(j=0;string2j!='0'j+)stringi+j=string2j;stringi+j='0'41任意输入一个字符串,删除该字符串中的数字字符,构成一个新字符串,最后显示出新字符串。#include <stdio.h> void main() char s100; int i,j; printf("Please input a st

48、ring:n"); scanf("%s", s);for(i=j=0;si!='0'i+)if(si>'9'|si<'0')sj+=si;sj='0' printf("The result is:n"); printf("%s", s); 42有一篇三行文字的文章,每行最多80个字符,编写函数,由实参传递字符串,分别统计文章中大写字母、小写字母、数字、空格及其它字符的个数。#include<stdio.h>int letter1,lett

49、er2,digit,space,others;void main()void count(char);char text300;printf("input string:n");gets(text);printf("string:");puts(text);letter1=0;letter2=0;digit=0;space=0;others=0;count(text);printf("大写字母:%d,小写字母:%d,digit:%d,space:%d,othersL%dn",letter1,letter2,digit,space,ot

50、hers);void count(char str)int i;for(i=0;stri!='0'i+)if(stri>='A'&&stri<='Z')letter1+;else if(stri>='a'&&stri<='z')letter2+;else if(stri>='0'&&stri<='9')digit+;else if(stri=32)space+;elseothers+;43任意输入10

51、个字符串,求出这10个字符串的最大的一个(字典顺序),并显示出来。#include <stdio.h>#include <string.h>void f(char a1020,char b20)int i; strcpy(b,a0); for (i=1;i<10;i+) if (strcmp(ai,b)>0) strcpy(b,ai); void main( ) char a1020,b20; int i; for (i=0;i<10;i+) gets(ai); f(a,b); printf("max is :%sn",b);44任

52、意输入5个英文人名,对这5个人名由小到大排序(用字符串处理函数进行比较和赋值,用起泡法或选择法排序),最后输出排好序的人名。#include <stdio.h>#include <string.h>void f(char a520)int i,j;char b20;for (i=0;i<4;i+) for (j=0;j<4-i;j+) if (strcmp(aj,aj+1)>0) strcpy(b,aj); strcpy(aj,aj+1); strcpy(aj+1,b); void main( ) char a520; int i; for (i=0;i<5;i+) gets(ai); f(a); printf("paixu is :n"); for (i=0;i<5;i+)printf("%sn",ai);45任意输入10个整数,求其中的素数,并对求得的素数按由小到大排序,并显示出排好序的素数#include<stdio.h>void main()

温馨提示

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

评论

0/150

提交评论