




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计题集 (一)关于顺序结构、选择结构、循环结构的程序【程序1】编写程序,将10000秒转换成以“xx时xx分xx秒”格式输出。#includeint main()int h,m,s,a;a=10000;h=10000/3600;m=(10000-h*3600)/60;s=10000-h*3600-m*60;printf(%d时,%d分,%d秒,h,m,s);return 0;【程序2】输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。#includeint main()char c1,c2,c3;scanf(%c,&c1);if(c1=97&c1=122)c1=c1-32;c2=c1-1;c3=c1+1;if(c1=65) c2=90; if(c1=90) c3=65; printf(%c%c%c,c2,c1,c3); return 0;【程序3】输入简单表达式实现一次加、减、乘、除四则运算。例如输入1+5或3*6,计算结果。#includeint main()float a,b,x;char c;scanf(%f%c%f,&a,&c,&b);switch(c)case+:x=a+b;break; case-:x=a-b;break; case*:x=a*b;break; case/: if(b=0)printf(ivisoris zeron); else x=a/b;break;printf(%f,x);return 0;【程序4】输入十个整数,求其中的最大数、最小数及平均数。#includeint main()int a,i,max,min;float ave;scanf(%d,&a);max=min=a;ave=a;for(i=1;imax)max=a;else if(amin)min=a;ave=ave/10.0;printf(max=%dnmin=%dnave=%fn,max,min,ave);return 0;【程序5】题目:编写程序,求解一元二次方程ax2+bx+c=0的根,要求考虑a=0,及方程有实数根与复数根的情况。#include#includeint main()double a,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);if(a=0)x1=x2=-c/b;printf(real roots:nx1=%7.2fnx2=%7.2fn,x1,x2);elsedisc=b*b-4*a*c;if(disc0)printf(This equation hasnt real rootsn);elsep=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(real roots:nx1=%7.2fnx2=%7.2fn,x1,x2);return 0;【程序6】题目:输入任意学生的百分制成绩,要求输出成绩等级A、B、C、D、E:90分以上为A,80-89分为B,70-79F分为C,60-69分为D,60分以下为E。 #includeint main()int x;scanf(%d,&x);printf(Your score:);if(x=90&x=80&x=70&x=60&x=69)printf(D);else printf(E);return 0;【程序7】题目:输入一行字符,分别统计其中的英文字符,空格,数字字符和其他字符的个数是多少?#includeint main()char c81;int n1=0,n2=0,n3=0,n4=0,i;printf(输入一串字符n);gets(c);for(i=0;ci!=0;i+) if(ci=a&ci=0&ci=9) n2+; else if(ci= ) n3+; else n4+; printf(英文字符数=%d,数字字符数=%d,空格数=%d,其他字符数=%d,n1,n2,n3,n4); return 0;【程序8】题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天;如果是闰年且输入月份大于3时需考虑多加一天。#includeint main()int a,b,c;printf(输入某年某月某日n);scanf(%d%d%d,&a,&b,&c);switch(b-1)case 11:c=c+30;case 10:c=c+31;case 9:c=c+30;case 8:c=c+31;case 7:c=c+31;case 6:c=c+30;case 5:c=c+31;case 4:c=c+30;case 3:c=c+31;case 2: ;case 1:c=c+31;if(a%4=0&a%100!=0|a%400=0)c=c+29;else c=c+28;printf(是%d年的第%d天,a,c);return 0;【程序9】题目:古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?请写出前30个数。程序分析:兔子的规律为Fibonacci序列1,1,2,3,5,8,13,21.找出其规律,即可解决问题。#includeint main()int f1=1,f2=1,f3;int i;printf(%dn%dn,f1,f2);for(i=1;i=30;i+)f3=f1+f2;printf(%ldn,f3);f1=f2;f2=f3;return 0;【程序10】题目:判断101-200之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除2到此数的平方根整值,如果能被整除,则表明此数不是素数,反之是素数。 #include#includeint main()int n,r,i,a=0,w;for(n=101;n=200;n+) for(i=2,w=0;i=sqrt(n);i+)if(n%i=0)w=1;if(w=0)printf(%dn,n);a=a+1;printf(%d,a);return 0;【程序11】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。#includeint main()int i,a,b,c;for(i=100;i=999;i+)a=i/100;b=i%100/10;c=i%100%10;if(a*a*a+b*b*b+c*c*c=i)printf(%dn,i);return 0;【程序12】题目:输入两整数,求他们的最大公约数和最小公倍数。程序分析:最小公倍数等于两整数之乘积除以最大公约数#includeint main()int n,m,r,temp,p;printf(输入两个整数n);scanf(%d%d,&n,&m);if(nm)temp=n;n=m;m=temp;p=n*m;while(m!=0)r=n%m;n=m;m=r;printf(它们的最大公约数为:%d,n);printf(它们的最小公倍数为:%d,p/n);return 0;【程序13】 题目:求1+2!+3!+.+20!的和#includeint main()float s=0,t=1;int n;for(n=1;n=20;n+)t=t*n;s=s+t;printf(1!+2!+.+20!=%.0lfn,s);return 0;【程序14】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。#include int main()char ch;ch=getchar();switch(ch)case m:printf(today is Monday.);break; case t:ch=getchar(); if(ch=u) printf(today is Tuesday.);else if(ch=h) printf(today is Thursday.); break; case w:printf(today is Wednesday.);break; case f:printf(today is Friday.);break; case s:ch=getchar(); if(ch=a) printf(today is Saturday.); else if(ch=u) printf(today is Sunday.); break;default :printf(error);return 0;【程序15】题目:八进制转换为十进制(或十六进制转换成十进制)。8进制#include int main()int i,s,a;char c20;printf(输入一个8进制数:);gets(c);s=0;for(i=0;ci!=0;i+)a=ci-48;/*将字符转换成对应数字*/s=s*8+a;printf(十进制数:%dn,s);return 0;16进制#include int main()int i,s,a,w=0;char c20;printf(输入一个16进制数:);gets(c);s=0;for(i=0;ci!=0;i+)if(ci=0&ci=A&ci=E) a=ci-55; else w=1;break; s=s*16+a;if(w=0)printf(十进制数:%dn,s);else printf(errorn);return 0;【程序16】题目:企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,(1) 高于10万元的部分,可提成7.5%;(2) 20万到40万之间时,高于20万元的部分,可提成5%;(3) 40万到60万之间时高于40万元的部分,可提成3%;(4) 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数?#includeint main()double a,b;printf(当月利润n);scanf(%lf,&a);if(a200000&a400000&a600000&a1000000)b=100000*0.1+(a-100000)*0.075;else if(a100000&a=200000)b=100000*0.281+400000*0.015+(b-1000000)*0.01;printf(奖金为%.5lf元,b);return 0;【程序17】输出1000以内的完数(一个数恰好等于其因子之和)。#include int main()int i,a,j;for(i=1;i=1000;i+) a=0;for(j=1;j=i/2;j+)if(i%j=0) a=a+j;if(a=i) printf(%5d,i);return 0; (二)关于数组及函数的程序:【程序18】题目:将一个数组中的元素逆序输出。#include int main() int a10,i;for(i=0;i=0;i-)printf(%5d,ai);return 0;【程序19】题目:写一个函数,将一个3*3的整型矩阵转置。 #include int main()void zz(int x33);int a33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);zz(a);return 0;void zz(int x33)int i,j,y33;for(i=0;i3;i+)for(j=0;j3;j+)yij=xji;for(i=0;i3;i+)for(j=0;j3;j+)printf(%5d,yij);printf(n);【 程序20】题目:输入6行6列的矩阵a,然后1)输出矩阵a2). 将对角线(指矩阵的左上角到右下角的对角线)之外的上三角的每个元素加1,下三角中的每个元素减1,形成新的矩阵并输出。3). 找出新矩阵a中绝对值最大的元素及其所在的行、列位置并输出。#include int main()int a66,i,j,max,row,colum;for(i=0;i6;i+)for(j=0;j6;j+)scanf(%d,&aij); /*输入*/for(i=0;i6;i+)for(j=0;j6;j+)printf(%5d,aij);printf(n);/*输出*/max=a00;for(i=0;i6;i+)for(j=0;jmax)max=aij;row=i;colum=j;/*求最大值,行,列*/printf(max=%d,row=%d,colum=%dn,max,row,colum);return 0;【程序21】输出杨辉三角形。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1.#include #define N 10int main() int i,j,aNN; for (i=0;iN;i+) aii=1; ai0=1; for (i=2;iN;i+) for (j=1;j=i-1;j+) aij=ai-1j-1+ai-1j;for (i=0;iN;i+) for (j=0;j=i;j+) printf(%6d,aij); printf(n); printf(n); return 0;【程序22】已有一个排好序的数组1,3,6,7,9,要求输入一个数后,按原来的规律将它插入数组中。#include int main() int a6 = 1,3,6,7,9; int i,j,x,t; printf(insert data:); scanf(%d,&x); for(i=0;i5;i+) if(xi;j-) aj=aj-1; aj=x; printf(Now array a:n); for(i=0;i6;i+) printf(%4d,ai); printf(n); return 0; 【程序23】题目:有15个数按照值的升序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。已知15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。#include int main() int a15=1,3,6,7,9,12,14,15,17,19,20,22,23,34,45; int i=0,j=14,x,k; printf(find data:); scanf(%d,&x); k=(i+j)/2; while(x!=ak|i!=j)if(xak) j=k-1; else i=k+1; k=(i+j)/2; if(i=j) printf(无此数n); else printf(NO%5dn,k);return 0;【程序24】编写一个程序将两个字符串连接起来,不用strcat函数。#include int main() char s180,s240; int i,j; printf(input string1:); scanf(%s,s1); printf(input string2:); scanf(%s,s2); for(i=0;s1i!=0;i+) for(j=0;s2j!=0;i+,j+) s1i=s2j; s1i=0;printf(nThe new string is:%sn,s1); return 0; 【程序25】题目:设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。#define N 40main() int classN;float sum, ave; int number, i; sum=0; number=0; printf(please enter student score); for ( i=0 ; iN ; i+ ) scanf(%d, &classi ); sum += classi; ave= sum/N; for (i=0; iN; i+) if ( classiave)number+; printf(the number of lowed ave is %d,number); 【程序26】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。#include int main() int length(char p20); int len; char str20; printf(please input a string:n); gets(str); len=length(str); printf(the string has %d characters.,len);return 0;int length(char p20) int i; for(i=0;pi!=0;i+) return i; 【程序27】题目:输入三个整数,按由小到大的顺序输出。 #include int main() void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; printf(input three integer n1,n2,n3:); scanf(%d,%d,%d,&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3 if(n1n2) swap(p1,p2); if(n1n3) swap(p1,p3); if(n2n3) swap(p2,p3); printf(Now,the order is:%d,%d,%dn,n1,n2,n3); return 0; void swap(int *p1,int *p2) int p; p=*p1; *p1=*p2; *p2=p; 【程序28】 题目:有n个人围成一圈,顺序排号。从第1个人开始报数(从1报到3),凡报到3的人退出圈子,输出出圈人的序号。 #include int main() int i,k,m,n,num50,*p; printf(ninput number of person: n=); scanf(%d,&n); p=num; for (i=0;in;i+) *(p+i)=i+1; i=0; k=0; m=0; while (mn) if (*(p+i)!=0) k+; if (k=3) printf( NO.%dn,*(p+i);*(p+i)=0; k=0; m+; i+; if (i=n) i=0; return 0; 【程序29】输入10个学生的数据,每个学生数据包括学号、姓名、成绩,计算输出平均成绩,并输出最高分的学生数据(包括学号、姓名、成绩)。 #include struct Student int num; char name20; float score; ; int main() struct Student stu10; int i,j=0; float ave,max; for(i=0;i10;i+) scanf(%d%s%f,&stui.num,,&stui.score); max=stu0.score;ave=stu0.score; for(i=1;imax) max=stui.score;j=i; ave=ave+stui.score; printf(ave=%5.2fn,ave/10); printf(%5dn%sn%5.2fn,stuj.num,,stuj.score); return 0; 【程序30】 题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。 #include #include int main () FILE *fp; int i,j,n,i1; char c100,t,ch; printf(nfile A :n); if (fp=fopen(d:c1.dat,r)=NULL) printf(ncan not open c1 filen); exit(0); for (i=0;(ch=fgetc(fp)!=EOF;i+) putchar(ch); ci=ch; i1=i; fclose(fp); printf(nfile B :n); if (fp=fopen(d:c2.dat,r)=NULL) printf(ncan not open d1 filen); exit(0); for (i=i1;(ch=fgetc(fp)!=EOF;i+) putchar(ch); ci=ch; ci=0; fclose(fp); fp=fopen(d:c3.dat,w); for (i=0;ci!=0;i+) fputc(ci,fp); printf(n); fclose(fp); if (fp=fopen(d:c3.dat,r)=NULL) printf(ncan not open c1 filen); exit(0); printf(nfile c:n); for (;(ch=fgetc(fp)!=EOF;) putchar(ch); printf(n); fclose(fp); return 0; C语言 单项选择练习题 1. C语言程序是由 C 构成的。 A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数 2( A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 3C语言程序从 C 开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 4C语言程序从main()函数开始执行,所以这个函数要写在_D_。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 5. 下列方法中错误的是(D)。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 6. 下列说法错误的是:( B ) A. C程序运行步骤是编辑、编译、连接、执行。 B. C语言的变量名必须用小写,常量用大写。 C. C语言的三种基本结构是顺序、选择、循环。 D. C程序一定由函数构成的。 7.下列关于C语言的说法错误的是( B ) 。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 8. 系统默认的C语言源程序扩展名为.C,需经过 C 之后,生成.exe文件,才能运行 A) 编辑编译 B )编辑连接 C) 编译连接 D) 编辑改错 9. 不是C语言提供的合法关键字是(B)。 A.switchB.cherC.caseD.default 10.下列正确的标识符是(C)。 A.-a1 B.ai C.a2_i D.int t 11. 下列C语言用户标识符中合法的是( B )。 A、*y B、sum C、int D、%5f 12.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 13、下列可以正确表示字符型常量的是( A )。 A、t B、”a” C、”n” D、297 14.下列表达式中, ( D )是正确的C语言字符常量。 A)”x” B)e3 C)”COMPUTER” D)# 15.C语言中运算对象必须是整型的运算符是( A ) A) %= B) / C) = D) = 16.在C语言程序中,表达式8/5的结果是( B ) A)1.6 B)1 C)3 D)0 17.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 18如果int a=3,b=4;则条件表达式ab? a:b的值是_A_。 A) 3 B) 4 C) 0 D) 1 19若int x=2,y=3,z=4 则表达式xz?y:z的结果是( B ). A)4 B)3 C)2 D)0 E)1 20设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是( D ) A、a&b B、a=b C、a|b+c&b-c D、!(ab)&!c|1) 21. 下面( D )表达式的值为4. A) 11/3 B) 11.0/3 C) (float)11/3 D) (int)(11.0/3+0.5) 22.若有以下类型说明语句:char w;int x;float y;double z;则表达式w-x*y/z的结果为( D )类型,表达式(int)(x+y-z*w)的结果为( C )类型。 A)float B)char C)int D)double 23. 表示关系x=y=z的c语言表达式为 ( A ) A) (x=y)&(y=z) B) (x=y)AND(y=z) C) (x=y=z) D) (x=y)&(y=10 or a=0|a=10 &a=10a=0 25、判断char型变量c1是否为大写字母的表达式为( D )。 A、A=c1=A) & (c1=Z) C、(A=c1) D、 c1=A & c1=Z 25在C语言的库函数中,可以输出char型变量x值的语句是 ( C ) 。 A)getchar(x); B)fputc(x) C)putchar(x) D)puts(x) 26. 在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三个语句不等价,它是( D )。 A、if (a) s1 ; else s2; B、if (a= =0) s2; else s1; C、if (a!=0) s1; else s2; D、if (a= =0) s1; else s2; 27. C语言对嵌套if语句的规定是:else语句总是与( D )配对。 A) 其之前最近的if B) 第一个if C) 缩进位置相同的if D) 其之前最近的且尚未配对的if 28. break语句不能出现在( D)语句中 A. switch B.for C. while D. ifelse 29.语句while(!y);中的表达式!y等价于 ( A ) A)y0 B)y!1 C)y!0 D) y=1 30对于break语句和continue语句的说法错误的是( B ) A) break语句不能用于循环语句和switch语句之外的任何其他语句中。 B) break和continue也可以用于if语句中 C) continue语句只结束本次循环,而不是终止整个循环的执行。 D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。 31.当运行时输入:abcd$abcde, 下面程序的运行结果是( B ) #include main()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沥青渣子销售合同范本
- 合作合同解读与案例
- 快递物料采购合同范本
- 混凝土切块采购合同范本
- 酒店楼层转租合同范本
- 鸭场赔偿合同范本
- 武汉租商铺合同范本
- 土地勘察合同范本
- 护栏制作安装合同范本
- 防疫运输合同范本简单
- 生物制品生产工艺过程变更管理技术指导原则
- 建筑施工现场签证单(模板)
- GBZ(卫生) 49-2014职业性噪声聋的诊断
- GB/T 9729-2007化学试剂氯化物测定通用方法
- GB/T 7588.2-2020电梯制造与安装安全规范第2部分:电梯部件的设计原则、计算和检验
- GB/T 13560-2017烧结钕铁硼永磁材料
- 三视图及尺寸标注课件
- 混凝土配合比验证检验委托书模板
- 住房公积金投诉申请书
- 众辰变频器说明书3400
- 小学教师量化考核表
评论
0/150
提交评论