C语言期中试卷

更新时间:2023-03-15 12:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

期中复习题3

一、选择题(30题)

1.以下关于预处理命令的叙述中错误的是____(21)____。 A. 预处理命令由预处理程序解释 B. 程序中的预处理命令是以#开始的

C. 若在程序的一行中出现多条预处理命令,这些命令都是有效的

D. 预处理命令既可以出现在函数定义的外部,也可以出现在函数体内部

2.已有声明“int x,a=3,b=2;”,则执行赋值语句“x=a>b++?a++:b++;”后,变量x、a、b的值分别为___(26)___。

A. 3 4 3 B. 3 3 4 C. 3 3 3 D. 4 3 4 3.下列选项中可用作变量名的是_____(27)_____

A. Case B. a-b C. $cd D. 2ab 4.执行以下程序后的结果是_____(28)_____。 #include void main() { int x=3; do {

printf(“%d\\t”,x=x-3); }while(!x); }

A. 输出一个数:0 B. 输出一个数:3

C. 输出2个数:0和-3 D. 无限循环,反复输出数 5.以下关于c语言函数的叙述中,正确的是_____(29)_____。

A. 在一个函数体中可以定义另一个函数,也可以调用其他函数 B. 在一个函数体中可以调用另一个函数,但不能定义其他函数 C. 在一个函数体中不可以调用另一个函数,也不能定义其他函数 D. 在一个函数体中可以定义另一个函数,但不能调用其他函数 6.设有声明“int a=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是_____(30)_____。 A. if(a>b)c=a,a=b,b=c; B. if(a>b)c=a;a=b;b=c; C. if(a>b){c=a,a=b,b=c;} D. if(a>b){c=a;a=b;b=c;}

7. 某程序需要使用一个代表常数3.14的符号常量P,以下定义中正确的是(21)

A. #define P 3.14 ; B. #define P(3.14) C.#define P=3.14 ; D. #define P 3.14 8. 下列四个选项中,属于C语言关键字的是(22) A. Float B. single C. double D. real

9. 已知某编译系统中signed int 类型数据的长度是16位,该类型数据的最大值是( 23) A. 32767 B. 32768

C. 127 D. 65535

10. 以下关于if语句和switch语句的叙述中错误的是(24) A. if语句和switch语句都可以实现算法的选择结构 B. if语句和switch语句都能实现多路(两路以上)选择 C. if语句可以嵌套使用

D. switch语句不可以嵌套使用

11.以下选项中不符合C语言标识符命名规则的是 ___22___ 。 A.printf B._00 C.&a D.FOR

12.以下选项中,可作为C语言合法表达式的是 ___23___。 A.3.0%2 B.3=2=1=0 C.{3,2,1,0} D.(3,2,1,0)

13.若有宏定义\S(x,y) x/y\则执行语句\后的输出是___24___ 。

A.9 B.2

C.9.5 D.2.25

14.表达式\的值是___25___。 A.2 B. 1 C.0 D.-1

15.以下数组声明中错误的是 ___28___. A.int num[2][4]={{1,2},{3,4),{5,6}}; B.int num[][3]={{1,2},{3,4},{5,6}}; C.int num[]= {1,2,3,4,5,6}; D.int num[][4]={1,2,3,4,5,6};

16、已知声明“int x;”,实现“若x的值是奇数,则输出x”这一功能的语句是___(23)____。

A. if(x/2) printf(\ C. if(x/2==1) printf(\

B. if(x%2) printf(\D. if(x%2==0) printf(\

17. 已有声明“int a[3][4]={{3,4},{2,8,6}};”则数组a[1][0]的值为___(26)____。

A. 2

B. 4

C. 6

D. 8

18. 已有声明“char c=' \\72';”,则变量c包含___(28)____个字符。

A. 1

B. 2

C. 3

D. 4

19.判断char型变量c1的值是否为小写字母的正确表达式为______(30)_____。

A. 'a' <=c1<=' z' C. 'a' >=c1||' z' <=c1

B. c1>=a&&c1<=z D. c1>='a'&&c1<='z'

20、以下程序运行时,输出到屏幕的结果是_______(6)___8。 #include int main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;

for(i=0;i<3;i++) for(j=2;j>=i;j--)

t+=b[i][j]; printf(\ return 0; }

21、用8位无符号二进制数能表示的最大十进制数为( )。

A) 127 B) 128 C) 255 D)256

22、在while(x)语句中的x与下面条件表达式等价的是( )。

A)x==0 B) x= =1 C) x!=1 D) x!=0

23、已知 int i,a; 执行语句”i=(a=2*3,a*5),a+6;”后,变量a的值是( A)6 B)12 C)30 D)36 24、以下不是死循环的语句为( )。 A)for(; ; x+=k); B)while(1){x++};

C)for(k=10; ;k--)sum+=k;

D)for(;(c=getchar())!=’\\n’;)printf(“%c”,c);

25、若有说明:int a[3][4];则对a 数组元素的正确引用是( )。

A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)

26、以下合法的赋值语句是( )

A、x=y=100 B、d--; C、x+y; D、c=int(x+y);

(27)若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf(\ 其输出结果是

A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7

(28)有以下程序 #include main()

{ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++; break; case 1:b++; break;

。 )

}

case 2:a++; b++; break; case 3:a++; b++; }

printf(\ }

程序的运行结果是 A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1

29、已有预处理命令“#include ”和声明“int a=4,b;”,以下语句中语法正确的是__(24)___。

A. if(a%2=1) b=a; B. if(sqrt(a)%2) b=a; C. if(a==1) b=a; D. if(a==1) b=*a;

30、若有以下语句,则正确的描述是( )。

二、填空题(10题)

1.执行语句序列“int a,b;a=b=4;a+=b%3;”后,变量a、b的值分别是__(3)___。 2.执行程序段“int x=0x6c;printf(“x=%x\\n”,x);”后的输出结果为__(4)_。

char x[ ]=”abcd”; char y[ ]={‘a’,’b’,’c’,’d’}; A.x数组和y数组长度相同 C. x数组长度小于y数组长度

B. x数组长度大于y数组长度 D. x数组等价于y数组

3.已知有声明\a[5]={5,4,3,2,1},i=3;\执行语句\后,屏幕输出为 ___(3)_1__ 。

4、设x,y,z和t均为int型变量,执行语句x=y=z=0; t=++x||y++&&++z后,t的值为_____,x为____,y为_____,z为_______。

5、设a=1,b=2,c=3,d=4,则表达式a++

7、语句printf(“%d”,(a=2)&&(b=-2));的输出结果是________

8、若a为int类型,且其值为8,则执行完表达式a+=a%=a%3后,a的值为_____

9、表示“当x取值在[1, “y=___(4)___?1:-1”。

10、已有定义“#define M(a,b,c) a*b-c”,执行语句“printf(\”时的输出为___(3)___。(7)

三、程序分析题(7题)

10]范围内时y取值1,否则y取值-1”所使用的C表达式为

1. 以下程序运行时,输出到屏幕的结果中第一行是_____(11)____,第二行是_____(12)____,第三行是_____(12)____。

#include void main()

{ int a[100]={0},b[]={2,4,5,3,6,5,-1},x,i=0; while(b[i]> -1) { x=b[i] ; a[x]++ ; i++ ; }

for(x=0,i=0 ;i<100;i++) while(a[i]) { x++ ;

(x%3==0) ? printf(\

a[i]-- ; } }

2.以下程序运行时,输出到屏幕的结果是 ___(4)___ 。 #include int main() {

int a=6,b=15,t=a; while (t%b! =0)

t+=a;

printf(\return 0; }

3.以下程序运行时输出结果是(5)。 #include void main() { int k=5,n=0; while(k>0) { switch(k) { case 1:

case 3:n+=1;k--;break\ default:n=0;k--; case 2:

case 4: n+=2;k--;break; } }

printf(\ } }

4、#include void main() {

int j, x = 0; x++;

for (j=0; j<3; j++) {

if (j % 2) continue; x++; } x++;

printf(\}

运行结果是:

(5)阅读下面语句,则程序的执行结果是 【7】 。 #include \ main()

{ int a=-1,b=1,k;

if((++a<0)&&!(b--<=0)) printf(\

else printf(\

(6)下列程序的输出结果是 【8】 。 main() { int i;

for(i=1;i+1;i++) { if(i>4)

{ printf(\ break; }

printf(\

7、以下程序的输出结果是________

#include int main(void) {

char ch[7]={\int i,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=10*s+ch[i]-'0'; printf(\

}

四、完善程序题

return 0;

1、下面这个程序用于读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,程序结束运行。

#include main() {

int i, n;

for (i=1; i<=5; i++) {

printf(\ scanf( ); if (n <= 0) ; printf(\ }

printf(\}

2、对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。

#include

#define void main() {

int i,a[N];

for(i=N-1; ;i--) scanf(\ for(i=0;i

printf(\ printf(\

}

五、程序设计题

1、验证一个整数是否是回文数,如12321是回文数,1232不是回文数。

2、使用选择排序法对数组元素进行排序,并在main函数中验证。

本文来源:https://www.bwwdw.com/article/uw7v.html

Top