C语言基础试题_第1页
C语言基础试题_第2页
C语言基础试题_第3页
C语言基础试题_第4页
C语言基础试题_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

.一、单选题:1、以下说法中正确的是( c)A. C语言程序总是从第一个的函数开始执行B. 在C语言程序中,要调用的函数必须在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分2、C语言可执行程序的开始执行点是( c)A. 程序中的一条可执行语句B. 程序中第一个函数C. 程序中的main函数D. 包含文件中的第一个函数3、C程序是( B)A. 顺序执行B. 从Main函数开始C. 从函数体开始D. 任意语句4、C语言程序的基本单位是_B_.A. 语句B. 函数C. 程序行D. 字符5、C语言程序由( C)组成A. 子程序B. 过程C. 函数D. 主程序段程序6、一个C程序的执行是从( A)A. 本程序的main函数开始,到main函数结束B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C. 本程序的main函数开始,到本程序文件的最后一个函数结束D. 本程序文件的第一个函数开始,到本程序main函数结束7、以下叙述正确的是( C)A. 在C程序中,main函数必须位于程序的最前面B. C程序的每行中只能写一条语句C. C语言本身没有输入输出语句D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误8、以下叙述不正确的是 DA. 一个C源程序可由一个或多个函数组成B. 一个C源程序必须包含一个main函数C. C程序的基本组成单位是函数D. 在C程序中,注释说明只能位于一条语句的后面9、C语言规定,在一个源程序中,main函数的位置(C)A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后10、一个C语言程序是由 BA. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成二、填空题:1、函数体用_开始,用_结束。2、C源程序的基本单位是_函数_3、一个C源程序中至少应包括一个_MAIN函数_4、在一个C源程序中,注释部分两侧的分界符分别为_/*_和_*/_三、程序设计题:(这两个程序设计题上课讲过我就不做了,自己写吧)1、编写一个C程序,输出以下信息:*Very good!*2、编写一个程序,输入a,b,c三个值,输出其中最大者。第2 章 程序设计的灵魂算法一、单选题:1、将三个数排序需要比较_B_次。A. 2B. 3C. 4D. 不确定2、算法的表示方法有_A_。A. 自然语言,传统流程图,N-S流程图,伪代码,计算机语言B. 高级语言,汇编语言,机器语言C. C语言,QBASIC语言,InterDevD. 图形图像法,描述法,编程法二、问答题:1、什么是结构化的算法?为什么要提倡结构化的算法?2、算法有哪些特性?3、什么叫算法?为什么要提倡结构化算法?第3 章 数据类型、运算符和表达式一、单选题:1、设 int b=2;表达式b/(b*2)的值是_A_.A. 0B. 0.5C. 0.500000D. 0.0000002、设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m= a < b)&&(n= c > d)后,m的值为_A_。A. 1B. 2C. 3D. 03、设有a=b=c=2,求表达式a+b+c+的结果是_A_。A. 6B. 9C. 8D. 表达式出错4、表示关系X < =Y < =Z的C语言表达式为_A_。A. (X < =Y)&&(Y < =Z)B. (X < =Y)AND(Y < =Z)C. (X < =Y < =Z)D. (X < =Y)&(Y < =Z)5、选出运行结果为4的表达式( C);A. int i=0,j=1;(i=3,(+j > +1))B. int i=0,j=1;(j=1)?(i=1):(i=3)C. int i=1,j=1;i+=j+=2;D. int i=1,j=0;j=i=(i=3)*2);6、表达式(a=3*5,a*5),a+5的值是多少(B )A. 20B. 80C. 不能确定D. 157、设有整型变量a,b,c,它们的初值是1运行表达式:+a|+b&+c后,a,b,c的值分别是:_A_。 (这个最好电脑上通过一下)A. 2,1,1B. 2,2,1C. 1,2,1D. 1,1,28、下面的表达式中_A_满足:当x为偶数时值为“真”,为奇数时值为“假”A. x%2=0B. !x%2!=0C. 2*x/2-x=0D. !(x%2)9、C语言的对语句中用作判断的表达式一般为_E_A. 关系表达式B. 逻辑表达式C. 算术表达式D. 逻辑表达式和关系表达式E. 关系或逻辑表达式10、若已定义x和y为double型,则表达式:x=1,y=x+3/2的值是(D )A. 1B. 2C. 2.0D. 2.511、若有以下定义:char a; int b;float c;double d;则表达式a*b+d-c值的类型为_D_.A. floatB. intC. charD. double12、以下定义和语句:char cl=b,c2=e;printf(d,cn,c2c1,c2aA);则输出结果是:_B_.A. 2,MB. 3,E C. 2,ED. 输出项与对应的格式控制不一致,输出结果不确定13、语句:printf("%d n",12&&12);的输出结果是_B_.A. 12B. 1C. 24D. 014、设A=3,B=4,执行printf("%d,%d",(A,B),(B,A);的输出是_B_.A. 3,4B. 4,3C. 3,3D. 4,415、若x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y);上面程序片段的输出结果是 AA. 200B. 100C. 200 100D. 输出格式符不够,输出不确定的值16、表达式:10!=9的值是_D_A. trueB. 非零值C. 0D. 117、请读程序:main() int A;float B, C;scanf("%2d%3f%4f",&A,&B,&C);printf("nA=%d,B=%f,C=%fn",A,B,C);若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是 BA. A=98, B=765, C=4321B. A=10, B=765.000000, C=4321.000000C. A=98, B=765.0, C=4321.0D. 以上答案都不正确18、执行程序段char str20=a,b,c,o;int len=strlen(str);变量len的值为( C)A. 20B. 4C. 3D. 3或4或2019、若x,i,j和k都是int型变量,则计算下面表达式后,x的值为 Cx=(i=4,j=16.k=32)A. 4B. 16C. 32D. 5220、下列四组选项中,均不是C语言关键字的选项是 AA. define IF typeB. getc char printfC. include scanf caseD. while go pow21、下列四个选项中,均是C语言关键字的选项是 BA. auto enum includeB. switch typedef continueC. signed union scanfD. if struct type22、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符 CA. 必须为字母B. 必须为下划线C. 必须为字母或下划线D. 可以是字母,数字和下划线中任一字符23、下面四个选项中,均是不合法的浮点数的选项是 BA. 160. 0.12 e3B. 123 2e4.2 .e5C. -.18 123e4 0.0D. -e3 .234 1e324、已知各变量的类型说明如下: Aint k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是A. x%(-3)B. w+=-2C. k=(a=2,b=3,a+b)D. a+=a-=(b=4)*(a=3)25、以下不正确的叙述是 DA. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值26、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 AA. 2.500000B. 2.750000C. 3.500000D. 0.00000027、设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为 CA. intB. floatC. doubleD. 不确定28、以下关于运算符优先顺序的描述中正确的是 CA. 关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符B. 逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符C. 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符D. 算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符29、若有条件表达式 (exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是 BA. (exp=0)B. (exp!=0)C. (exp=1)D. (exp!=1)30、设 int x=1, y=1; 表达式(!x|y-)的值是 BA. 0B. 1C. 2D. -1二、填空题:1、字符串“This is a string"的存储形式为_顺序存储_。2、写出下问表达式运算后a的值设原来a=121) a+=a 242) a-=a 03) a/=a+a 04) a+=a-=aa 03、求下面算术表达式的值1) x+a%3*(int)(x+y)%2/4 2.5 设x2.5,a=7,y4.72) (float)(a+b)/2+(int)x%(int)y 3.5设a=2,b=3,x=3.5,y=2.54、写出该程序运行的结果。#includevoid main() int i, j, k=10;i=(j=k)>0;j=i=j;printf(%2d,%2dn,i,j); 1 0k=!i=+j;printf("%2d, %2d, %2dn", i, j, k); 1 1 05、main( )char st=A;int i=10; st=st+i;i=st%i;printf("%C,%dn",st,i);已知字母A的ASCII码为65结果:_K,5_6、假设所有变量均为整型,则表达式(a=2,b=5,a+,b+,a+b)的值为_9_7、C语言中的标识符只能由三种字符组成,它们是_字母_,_数字_和_下画线_8、已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+8-3的值为_f_9、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式 pow(y,fabs(x)的值为_8.0_10、若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt(double)n)*1.2/g+m后k的值是_13.7_第4 章 顺序程序设计一、单选题:1、输入一个华氏温度,要求输出摄氏温度。计算公式为: c=5/9(F-32),以下程序正确的是(B)A. main() float c,F; scanf("%f,%f",&c,&F); c=5/9*(F-32); printf("摄氏温度是:%fn",c); B. main() float c,F; scanf("%f,%f",&c,&F); c=5*(F-32)/9; printf("摄氏温度是:%fn",c); C. main() float c,F; scanf("%f,%f",&c,&F); c=5%9*(F-32); printf("摄氏温度是:%fn",c); D. main() float c,F; scanf("%f,%f",&c,&F); c=5.0/9.0(F-32); printf("摄氏温度是:%fn",c); 2、以下程序的输出结果是 Cmain( )int a=12,b=12;printf("%d %dn",-a,+b);A. 10 10B. 12 12C. 11 13D. 11 103、有如下程序main0int y=3,x=3,z=1;printf("%d %dn",(+x,y+),z+2);运行该程序的输出结果是 DA. 3 4B. 4 2C. 4 3D. 3 34、能正确表示逻辑关系:"a =10或a 0"的C语言表达式是 DA. a > =10 or a < =0B. a > =0|a < =10C. a > =10 &&a < =0D. a < =0 | a>=105、下列程序的输出结果是 Cmain()double d=3.2;int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d n", d*y);A. 3B. 3.2C. 0D. 3.07二、填空题:1、从键盘输入一个大写字母,要求改用小写字母输出,程序如下办#includemain( ) char c1,c2;(1)_scanf(“%c”,&c1);_;printf ("%c,%dn",c1,c1 );(2)_c2=c1+32;_;printf("%c,%dn",c2,c2);2、以下程序不用第三个变量,实现将两个数进行对调操作:#includemain() int a , b ;scanf ("%d%d" , &a , &b);printf("a=%d b=%dn" , a , b );a=(_a+b_); b=(_a-b_); a=(_a-b_);printf("a=%d b=%dn",a,b);3、写出该程序运行的结果。 K,5main( )char st=A;int i=10;st=st+i;i=st%i;printf("%c,%dn",st,i);(已知字母A的ASCII码为65)四、程序设计题:1、用scanf函数输入一个年份year,然后用一个赋值语句计算这一年中2月份的天数datesum,最后用格式输出函数printf输出datesum值。具体要求如下:(1)所有变量为整型(2)输入前要有提示(3)输出结果时要有必要的文字说明#include <stdio.h>void main( ) int year,datesum;clrscr();Printf(“请任意输入一个年份值:”);Scanf(“%d”,&year);Datesum=(year%400= =0)|(year%4= =0)&&(year%100!=0)?29:28;Printf(“n%d二月份的天数为:%d”,year,datesum);2、由键盘输入一个小于256的十进制整数,然后将该数转换成八位的二进制形式输出。具体要求如下:(1)输入前要有提示(2)若转换成的二进制数不够八位,则在前面添“0”补足八位。例如:十进制数79转换成的二进制数为1001111,但应输出01001111(3)分别输入十进制数54,96,175,233,255来运行这个程序。#include <stdio.h>#include <math.h>void main( ) int number,b,i,n=0;long result=0,p;clrscr();printf(“请输入一个大于0小于256的整数”);scanf(“%d”,&number);p=1;Printf(“n%d=”,number);do b=number%2;result=result+p*b;p=p*10;n+;number=number/2;While(number!=0)For(i=8;i>n;i-)Printf(“0”);Printf(“%ld B”,result); 第5 章 选择结构程序设计一、单选题:1、以下程序的输出结果是 Cmain() int a= -1,b=1;if(+a < 0)&& ! (b- < =0)printf("%d %dn",a,b);elseprintf("%d %dn",b,a);A. -1 1B. 0 1C. 1 0D. 0 02、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是_A_main()int x;scanf("%d",&x);if (x+> 5)printf("%d",x)else printf("%dn",x-);A. 7和5B. 6和3C. 7和4D. 6和43、若执行下面的程序从键盘输入3和4,则输出是_B_main() int a,b,s;scanf("%d%d",&a,&b);s=a;if (a < b) s=b;s=s*s;printf("%dn",s);A. 14B. 16C. 18D. 204、下面的程序是_D_main() int x=3,y=0,z=0;if (x=y+z) printf("*");else printf("#");A. 有语法错误不能过通过编译B. 输出*C. 可能通过编译,但是不能通过连接,因而不能运行D. 输出#5、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_D_。A. a < > 0B. !aC. a=0D. a!=06、在C语言中的if语句中,用作判断的表达式为(D)A. 关系表达式B. 逻辑表达式C. 算数表达式D. 任意表达式7、以下程序输出结果是 Bmain ( ) int m=5;if (m+ > 5) printf ("%dn",m);else printf ("%dn",m-);A. 7B. 6C. 5D. 48、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 Amain( ) int x;scanf("%d",&x);if(x + + 5)printf("%d",x);else printf("%dn",x - -);A. 7和5B. 6和3C. 7和4D. 6和49、为避免嵌套的条件分支语句ifelse的二义性,C语言规定,C程序中的else总是与_A_组成配对关系。A. 其上面距它最近的,并且没有其他else与其配对的if相配对B. 在同一行上的ifC. 缩排位置相同的ifD. 在其之前未配对的if10、若变量都已经说明,则以下程序段输出为( B)a=10;b=50;c=30;if (a > b) a=b; b=c;c=a;printf("a=%db=%dc=%dn",a,b,c);A. a=10 b=50 c=10B. a=10 b=30 c=10C. a=50 b=30 c=10D. a=50 b=30 c=5011、在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是 Dmain( ) int s,t,a,b;scanf("%d,%d",&a,&b);s=1;t=1;if(a < 0)s=s+1;if(a > b)t=s+1;else if(a= =b)t=5;else t=2*s;printf("t=%dn",t);A. 0 > a > bB. a=0 < bC. a=b < 0D. a < b < 012、若变量都已经说明,则以下程序段输出为( B)a=10;b=50;c=30;if (a > b) a=b; b=c;c=a;printf("a=%db=%dc=%dn",a,b,c);A. a=10 b=50 c=10B. a=10 b=30 c=10C. a=50 b=30 c=10D. a=50 b=30 c=5013、执行下面语句后的输出为( D)int i= -1;if (i < =0)printf("*n")else printf("%n")A. *B. %C. %CD. 有语法错,不能执行14、下列语句正确的是(B )A. if(a > b > c) temp=aB. if(a=b) > 0) temp=aC. int a=b=c=4D. int a;scanf(%d,a)15、若有定义: float w; int a, b; 则合法的switch语句是(c )A. switch(w) case1.0: printf("*n"); case2.0: printf("*n"); B. switch(a); case 1 printf("*n"); case 2 printf("*n"); C. switch(b) case 1: printf("*n"); case 2: printf("*n"); D. switch(a+b); case 1: printf("*n"); default: printf("n"); case 2 16、判断两个字符串S1 和 S2 相等的正确语句是_D_A. if (S1=S2)B. if (S1=S2)C. if(strcpy(S1,S2)D. if (strcmp(S1,S2)=0)17、以下不正确的if语句形式是 D是不是没写完啊A. if(x>y&&x!=y)t=x+;B. if(x=y) x+=y;C. if(x!=y) scanf("%d",&x) else scanf("%d",&y);D. if(x<>18、已知 int x=10,y=20,z=30;以下语句执行后x,y,z的值是 Bif(x>y)z=x;x=y;y=z;A. x=10,y=20,z=30B. x=20,y=30,z=30C. x=20,y=30,z=10D. x=20,y=30,z=2019、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 Bif(a < b)if(c < d) x=1;elseif(a < c)if(b < d) x=2;else x=3;else x=6;else x=7;A. 1B. 2C. 3D. 620、若运行以下程序时,从键盘输入 ADescriptor < CR > ( < CR > 表示回车),则下面程序的运行结果是 D#includemain()char c;int v0=0,v1=0,v2=0;doswitch(c=getchar()case a:case A:case e:case E:case i:case I:case o:case O:case u:case U:v1+=1;default:v0+=1;v2+=1;while(c!=n);printf("v0=%d,v1=%d,v2=%dn",v0,v1,v2);A. v0=7,v1=4,v2=7B. v0=8,v1=4,v2=8C. v0=11,v1=4,v2=11D. v0=12,v1=4,v2=1221、阅读以下程序:main() int x;scanf("%d",&x);if(x-<5) printf("%d"x);else printf("%d"x+);程序运行后,如果从键盘上输人5,则输出结果是 BA. 3B. 4C. 5D. 622、若执行以下程序时从键盘上输入9,则输出结果是 Bmain() int n;scanf("%d",&n);if(n+<10) printf("%dn",n);else printf("%dn",n-);A. 11B. 10C. 9D. 823、若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是 BA. switch(a+b); case 1:y=a+b;break; case 0:y=a-b;break; case 3:y=b-a,break; B. switch(a*a+b*b) case 3: case 1:y=a+b;break; C. switch a case c1:y=a-b;break; case c2:y=a*d;break; default:x=a+b; D. switch(a-b) default:y=a*b;break; case 4:x=a+b;break; case 10:y=a-b;break; 24、有如下程序main() int a=2,b=-1,c=2;if(a < b)if(b<0) c=0;else c+ ;printf("%dn",c);该程序的输出结果是 CA. 0B. 1C. 2D. 325、若有定义: float w; int a, b; 则合法的switch语句是 DA. switch(w) case1.0: printf("*n"); case2.0: printf("*n"); B. switch(a); case 1 printf("*n"); case 2 printf("*n"); C. switch(b) case a: printf("*n"); default: printf("n"); case b: printf("*n"); D. switch(a+b) case 1: printf("*n"); case 2: printf("*n"); default: printf("n"); 二、填空题:1、#include < stdio.h >main( )int i=0,j=0,a=6;if (+i > 0) | (j+ > 0) a+;printf("i=%d,j=%d,a=%dn",i,j,a);结果:_i=1,j=0,a=7_2、若从键盘输入58,则以下程序输出的结果是 _585858_ 。main() int a;scanf("%d",&a);if(a>50) printf("%d",a);if(a>40) printf("%d",a);if(a>30) printf("%d",a);3、下列程序段的输出结果是 _passwarm_ 。int n=c;switch(n+) default: printf("error");break;case a:case A:case b:case B:printf("good");break;case c:case C:printf("pass");case d:case D:printf("warm");三、程序设计题:1、编写程序,从键盘输入年号和月号,计算这一年的这一月共有几天.#include <stdio.h>Void main( ) int year,m,sumdate;Clrscr( );Printf(“请输入年号和月号:”);Scanf(“%d%d”,&year,&m);if (m=1|m=3|m=5|m=7|m=8|m=10|m=12) sumdate=31;else if(m=4|m=6|m=9|m=11) sumdate=30;else if(m=2)&&(year%400=0)|(year%4=0)&&(year%100!=0) sumdate=29else sumdate=28;printf(“n%d.%d的天数为:%d”,year,m,sumdate);2、编写程序,从键盘输入x的值,计算并打印下列分段函数的值。(这个题目太容易,自己写吧)y=0(x<60)y=1(60<=x<70)y=2(70<=x<80)y=3(80<=x<90)y=4(x>=90)3、编写程序,输入三个整数x,y,z,请把这三个数由小到大输出。(这个上课讲过)程序分析我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。4、编写程序,输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。#include <stdio.h>Void main() long date;int a,b,c,d;clrscr();printf(“请任意输入一个五位的整数:”)a=date/10000;b=(date/1000)%10;c=(date%100)/10;d=date%10;if(a=d&&b=c)printf(“n%d是一个回文数”,date);elseprintf(“n%d不是一个回文数”,date);5、编写程序,将一个不大于256的十进制正整数转化为8位的二进制数,若不足8位,则在前面补0,例如十进制数2转化位8位二进制数后是00000010,37转化后是00100101。试求出十进制数5、23、189转化位8位二进制分别是多少?(要求必须使用循环语句实现)(这个题目上一章做过了)第6章 循环结构程序设计一、单选题:1、以下程序运行后,输出结果是main () int y=18,i=0,j,a8;do ai=y%2;i+;y=y/2; while(y > =1);for(j=i;j > 0;j-)printf("%dn",aj);printf("n");A. 1000B. 11010C. 01001D. 101002、以下程序的输出结果是main( ) int x=10,y=10,i;for(i=0;x > 8;y=+i)printf("%d %d ",x-,y);A. 10 1 9 2B. 9 8 7 6C. 10 9 9 0D. 10 10 9 13、以下程序的输出结果是main( )int n=4;while(n-)printf("%d &quo

温馨提示

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

评论

0/150

提交评论