c语言复习题期末考试用得着.docx
《c语言复习题期末考试用得着.docx》由会员分享,可在线阅读,更多相关《c语言复习题期末考试用得着.docx(66页珍藏版)》请在冰点文库上搜索。
c语言复习题期末考试用得着
第1章
1.1单选题
1.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是(B)。
A.有零个或多个输入B.有零个或多个输出
C.有穷性D.可行性
2.以下叙述中正确的是(B)。
A.C语言的源程序不必通过编译就可以直接运行
B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C.C语言源程序经编译形成的二进制代码可以直接运行
D.C语言中的函数不可以单独进行编译
3.用C语言编写的代码程序(B)。
A.可立即执行B.是一个源程序
C.经过编译即可执行D.经过编译解释才能执行
4.结构化程序由三种基本结构组成,三种基本结构组成的算法(A)。
A.可以完成任何复杂的任务
B.只能完成部分复杂的任务
C.只能完成符合结构化的任务
D.只能完成一些简单的任务
5.以下叙述中正确的是(C)。
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
第2章
13.假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式
的表达式是(D)。
A.1/a*b*cB.1/(a*b*c)
C.1/a/b/(float)cD.1.0/a/b/c
14.以下能正确定义且赋初值的语句是(B)
A.intn1=n2=10;B.charc=32;
C.floatf=f+1.1;D.doublex=12.3E2.5;
15.以下不能定义为用户标识符的是(D)
A.scanfB.VoidC._3com_D.int
16.设x、y、z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32+z)后,x的值为(C)
A.4B.16C.48D.32
17.设有intx=11,则表达式(x++*1/3)的值是(A)。
A.3B.4C.11D.12
18.以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子
的C语言表达式是(A)。
A.x/y*zB.x*(1/(y*z))
C.x/y*1/zD.x/y/z
19.有以下程序
main()
{chara1='M',a2='m';
printf("%c\n",(a1,a2));}
以下叙述中正确的是(B)
A.程序输出大写字母MB.程序输出小写字母m
C.格式说明符不足,编译出错
D.程序运行时产生出错信息
20.以下程序运行后的输出结果是(C).
main()
{charp[]={'a','b','c'},q[]="abc";
printf("%d%d\n",sizeof(p),sizeof(q));
};
A.44B.33C.34D.43
21.以下叙述中错误的是(A)
A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符应尽量做到“见名知意”
C.用户所定义的标识符必须以字母或下划线开头
D.用户定义的标识符中,大、小写字母代表不同标识
22.在C语言中,下列属于构造类型的是(D)
A.整型B字符型C实型D.数组类型
23.下列字符串属于标识符的是(A)
A.INTB.5_studentC.2ongD.!
DF
24.C语言中能用来表示整常数的进制是(A)
A.十进制、八进制、十六进制
B.十二进制、十进制
C.六进制、八进制D.二进制、十进制
25.在C语言中,回车换行符是(A)
A.\nB.\tC.\vD.\b
26.在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码(A)。
A)大32B)大64C)小32D)小64
27.设d为字符变量,下列表达式不正确的是(C)。
A)d=97B)d=’a’C)d=”a”D)d=’g’
28.设d为字符变量,下列表达式正确的是(B)。
A)d=678B)d=’a’C)d=”d”D)d=’gjkl’
29.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为A。
main()
{charx,y;
x=’0’;y=’9’;
printf(“%d,%d\n”,x,y);
}
A)因输出格式不合法,输出错误信息
B)B)48,57C)0,9D)48,58
30.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为。
main()
{charc=’A’;inti=10;
c=c+10;
i=c%i;
printf(“%c,%d\n”,c,i);
}
A)75,7B)75,5
C)K,5D)因存在非图形字符,无法直接显示出来
31.已知在ASCII集中,字母A的序号为65,下面程序的输出结果为B。
main()
{charc1=’B’,c2=’Y’;
printf(“%d,%d\n”,++c1,--c2);
}
A)输出格式不合法,输出错误信息B)67,88
C)66,89D)C,X
32.C语言中,运算对象必须是整型数的运算符是(A)。
A)%B)\C)%和\D)**
33..下列常数中,合法的C常量是(D)。
A)-0.B)’105’C)’AB’)”35”
34.下列常数中,合法的C常量是(D)。
A)”x-y”B)’105’C)’Be’D)7ff
35.下列常数中,合法的C常量是(A)。
A)’\n’B)e-310C)’DEF’D)’1234’
36.下列常数中,不合法的C常量是(B)。
A)-0x2aB)lg3C)’[’D]”CHINA”
37.下列常数中,不合法的C常量是(B)。
A)-0x3bB)123e+2.3C)’}’D)6e+7
38.下列符号中,可以作为变量名的是(C)。
A)+aB)12345eC)a3BD)5e+0
39.下列符号中,可以作为变量名的是(C)。
A)+cB)*XC)_DAYD)nextday
40.若已定义X和Y为double类型,则表达式:
x=1,y=x+3/2的值为(C)。
A)1B)2C)2.0D)2.5
41.下列程序的执行结果是(B)。
#include
#definesum10+20
main()
{intb=0,c=0;
b=5;
c=sum*b;
printf("%d",c);
}
A)100B)110C)70D)150
42..下列程序的执行结果是(D)。
#include
#definesum(10+20)
mian()
{inta=0,b=0,c=0;
a=sum;
b=5;
c=sum*b;
printf("%d",c);
}
A)100B)110C)70D)150
43.表达式(int)2.1416的值为(A)。
A)2B)2.1C)0D)3
44.表达式(double)(20/3)的值为(B)。
A)6B)6.0C)2D)3
45.假设所有变量均为整型,则表达式(a=5,b=2,a++,a+b)的值是(A)。
A)8B)7C)6D)5
46.C语言规定标识符由(A)等字符组成.
A)字母 数字 下划线 B)中划线 字母 数字
C)字母 数字 逗号 D)字母下划线中划线
47.已知ch是字符型变量,下面不正确的赋值语句是(B)。
A)ch=‘\0’B)ch=‘a+b’C)ch=‘7’+‘9’D)ch=7+9
48.若x和y都为float型变量,且x=3.6,y=5.8执行下列语句后输出结果为:
(B)。
printf(“%f”,(x,y));
A)3.600000B)5.800000C)3.600000,5.800000
D)输出符号不够,输出不正确值
49.设整型变量a值为9,则下列表达式中使b的值不为4的表达式:
B。
A)b=a/2B)b=a%2
C)b=8-(3,a-5)D)b=a>5?
4:
2
2.2填空题
9.写出下列程序段的执行结果
inta,b,c;
a=b=c=5;
a=++b+(c--);
变量a,b,c的值为1164
10.若有如下程序段:
inta=10,b=9,c=8;
c=(a-=(b-5));
c=(a%11)+(b=5);
顺序执行上述语句后,变量b的值为5
11.设有以下变量定义,并已赋确定的值
charw;intx;floaty;doublez;
则表达式:
w*x+z-y所求得的数据类型为double。
12.C语言基本数据类型包括整型、字符型、实型、枚举类型。
13.C语言在定义变量的同时说明变量的,系统在编译时就能根据变量定义及其为它分配相应数量的存储空间。
14.在C语言中,标识符只能由、和三种字符组成,且第一个字符必须或。
15.实型变量分为和,即float和double型。
16.C语言中规定,在变量定义的同时也可以给变量赋初值,叫做。
17.C的字符串常量是用括起来的字符序列。
18.在C语言中,系统在每一个字符串的结尾自动加一个“字符串结束标志符”即,以便系统据此数据判断字符串是否结束。
19.下面的程序
mian(
{floatx;inti;
x=3.6;i=(int)x;
printf("x=%f,i=%d",x,i);
}
运行结果为。
第3章
3.1单选题
13.设x为int型变量,则执行以下语句后,x的值为(B)。
x=10;x+=x-=x-x;
A.10B.20C.40D.30
14.下列可作为C语言赋值语句的是(C)。
A.x=3,y=5B.a=b=6
C.i--;D.y=int(x);
15.设x,y,z,t均为int型变量,则执行以下语句后,t的值为(C)。
x=y=z=1;
t=++x||++y&&++z;
A.不定值B.2C.1D.0
16.若以下选项中的变量已正确定义,则正确的赋值语句是(C)。
A.x1=26.8%3B.1+2=x2
C.x3=0x12;D.x4=1+2=3;
17.设有以下定义
inta=0;
doubleb=1.25;
charc='A';
#defined2
则下面语句中错误的是(D)。
A.a++;B.b++;C.c++;D.d++;
18.有以下程序
main()
{intx=102,y=012;
printf("%2d,%2d\n",x,y);}
执行后输出的结果是(C)。
A.10,01B.02,12C.102,10D.02,10
19.有以下程序
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x); }
程序运行后的输出结果是(D)。
A.3B.5C.-1D.-2
20.有以下程序
main()
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);}
程序运行后的输出结果是(A)。
A.b,bB.b,cC.a,bD.a,c
21.有以下程序
main()
{intm=0256,n=256;
printf("%o%o\n",m,n); }
程序运行后的输出结果是(C)。
A.02560400B.0256256
C.256400D.400400
22.有以下程序
main()
{chara,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%c\n",a,b,c,d);}
若运行时从键盘上输入:
6,5,65,66。
则输出结果是(A)。
A.6,5,A,BB.6,5,65,66
C.6,5,6,5D.6,5,6,6
23.数字字符0的ASCII值为48,若有以下程序
main()
{chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);}
程序运行后的输出结果是(C)。
A.3,2B.50,2C.2,2D.2,50
24.有以下程序
main()
{intm=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是(A)。
A.12353514B.12353513
C.12343514D.12343513
25.有以下程序
main()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
……
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A)。
A.m=123n=456p=789B.m=123n=456p=789
C.m=123,n=456,p=789D.123456789
26.有以下程序
main()
{inta,b,d=25;
a=d/10%9;
b=a-1;
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是(B)。
A.6,1B.2,1C.6,0D.2,0
27.以下叙述中错误的是(C)。
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
28.以下叙述中正确的是(B)。
A.调用printf函数时,必须要有输出项
B.使用putchar函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
29.有以下程序
#include“stdio.h”
main()
{ char c1=’1’,c2=’2’;
c1=getchar(); c2=getchar();
putchar(c1); putchar(c2); }
当运行时输入:
a<回车> 后,以下叙述正确的是(A)。
A.变量c1被赋予字符a,c2被赋予回车符
B.程序将等待用户输入第2个字符
C.变量c1被赋予字符a,c2中仍是原有字符2
D.变量c1被赋予字符a,c2中将无确定值
3.2填空题
11.已知字符A的ASCII码值为65,以下语句的输出结果是3。
charch='B';
printf("%c%d\n",ch,ch);
12.有以下语句段:
intn1=10,n2=20;
printf("",n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
13.有以下程序:
#include“stdio.h”
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getchar();
n1=ch1-'0';n2=n1*10+(ch2-'0');
printf("%d\n",n2);
}
程序运行时输入:
12<回车>,执行后的输出结果是。
14.以下程序段的输出结果是_____。
inti=9;
printf("%o\n",i);
15.以下程序运行后的输出结果是_______。
main()
{inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n',a,b,c);}
16.以下程序运行时,若从键盘输入:
102030<回车>,输出的结果是_______。
#include“stdio.h”
main()
{inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&k);
printf("%d%d%d\n",i,j,k);}
17.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<回车>,则输出结果是_______。
#include“stdio.h”
main()
{chara,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c%c\n",a,b);
}
18.以下程序运行后的输出结果是_______ 。
main()
{ int x=0210; printf("%x\n",x);
}
19.以下程序运行后的输出结果是_______ 。
main()
{char c; int n=100;
float f=10; double x;
x=f*=n/=(c=50);
printf("%d %f\n",n,x); }
20.已知字母A的ASCII码为65。
以下程序运行后的输出结果是 _______ 。
main()
{char a, b;
a=’A’+’5’-’3’; b=a+’6’-’2’ ;
printf("%d %c\n", a, b);
}
习题4
13.若变量c为char类型,能正确判断出c为小写字母的表达式是(D)
A.'a'<=c<='z' B.(c>='a')||(c<='z')
C.('a'<=c)and('z'>=c) D.(c>='a')&&(c<='z')
14.设有定义:
inta=2,b=3,c=4;,则以下选项中值为0的表达式是(A)
A.(!
a==1)&&(!
b==0)B.(a
c||1C.a&&bD.a||(b+b)&&(c-a)
15.能正确表示逻辑关系“a≥=10或a≤0”的C语言表达式是(D)。
A.a>=10ora<=0B.a>=0|a<=10
C.a>=10&&a<=0D.a>=10‖a<=0
16.下列运算符中优先级最高的是B。
A)>B)+C)&&D)!
=
17.以下关于运算符优先级的描述中,正确的是A。
A)!
(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算
B)&&(逻辑与)>算术运算>关系运算>赋值运算
C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算
D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)
18.逻辑运算符的运算对象的数据类型D。
A)只能是0或1B)只能是.T.或.F.
C)只能是整型或字符型D)任何类型的数据
19.以下程序的运行结果是B。
main()
{intc,x,y;
x=1;
y=1;
c=0;
c=x++||y++;
printf(“\n%d%d%d\n”,x,y,c);}
A)110B)211C)011D)001
20.以下程序的运行结果是A。
main()
{
intc,x,y;
x=0;
y=0;
c=0;
c=x++&&y++;
printf(“\n%d%d%d\n”,x,y,c);
}
A)100B)211C)011D)001
21.判断字符型变量ch为大写字母的表达式是C。
A)’A’<=ch<=’Z’B)(ch>=’A’)&(ch<=’Z’)
C)(ch>=’A’)&&(ch<=’Z’)
D)(ch>=’A’)AND(ch<=’Z’)
22.判断字符型变量ch为小写字母的表达式是D。
A)’a’<=ch<=’z’B)(ch>=a)&&(ch<=z)
C)(ch>=’a’)||(ch<=’z’)D)(ch>=’a’)&&(ch<=’z’)
23.以下if语句书写正确的是B。
A)if(x=0;)B)if(x>0)
printf(”%f”,x);{x=x+1;printf(”%f”,x);}
elseprintf(”%f”,-x);elseprintf(”%f”,-x);
C)if(x>0);D)if(x>0)
{x=x+1;printf(”%f”,x);}{x=x+1;printf(”%f”,x)}
elseprintf(”%f”,-x);elseprintf(”%f”,-x);
24.分析以下程序:
main()
{intx=5,a=0,b=0;
if(x=a+b)printf(“****\n”);
elseprintf(“####\n”);
以上程序D。
A)有语法错,不能通过编译
B)通过编译,但不能连接
C)输出****D)输出####
25.写出下面程序的执行结果D。
main()
{intx,y=1;
if(y!
=0)x=5;
printf(“%d\t”,x);
if(y==0)x=3;
elsex=5;
printf(“%d\t\n”,x);}
A)13B)15C)53D)55
26.若有以下变量定义:
floatx;inta,b;
则正确的switch语句是D。
A)switch(x)
{case1.0:
printf("*\n");
case2.0:
printf("**\n");
}
B)switch