c语言练习试题库

时间:2021-08-31

  单项选择题

  1.有char c=’1’,下面说法中正确的是(    )。

  A. 语句putc+2);的输出结果为51

  B. 语句put“%d”,c+2);的输出结果为3

  C. 语句put“%c”,c+2);的输出结果为51

  D. 语句put“%c”,c+2);的输出结果为3

  2.设c1,c2均是char型变量,则下面不正确的函数调用为(    )。

  A. scanf(”c1=2=%c”,&c1,&c2);

  B. get);

  C. putc2);

  D. putc1,c2);

  3.为了表示关系x>=y>=z,下面C语言表达式中正确的是(    )。

  A. (x>=y)&&(y>=z)

  B. (x>=y)and(y>=z)

  C. (x>=y>=z)

  D. (x>=y)&(y>=z)

  4.设x,y,z,t为int型变量,则执行以下语句后,t的值为(    )。

  x=y=z=1;

  t=++x||++y&&++z;

  A. 不定值

  B. 2

  C. 1

  D. 0

  5.对if语句中表达式的类型,下面正确的说法是(    )。

  A. 必须是关系表达式

  B. 必须是关系表达式或逻辑表达式

  C. 可以是任意表达式

  D. 必须是关系表达式或算术表达式

  6.对for(表达式1;;表达式3)可以理解为(    )。

  A. for(表达式1;0;表达式3)

  B. for(表达式1;表达式1;表达式3)

  C. for(表达式1;1;表达式3)

  D. for(表达式1;表达式3;表达式3)

  7.执行语句for(i=1;i++<4;);之后,变量i的值为(    )。

  A. 3

  B. 4

  C. 5

  D. 不确定

  8.若二维数组a有m列,则在a[i][j]前的元素个数为(    )。

  A. j*m+i

  B. i*m+j

  C. i*m+j-i

  D. i*m+j+1

  9.下面说法中正确的是(    )。

  A. 在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

  B. 在C语言中,数组元素的个数可以不确定,允许随即变动

  C. 在C语言中,数组元素的数据类型可以不一致

  D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数

  10.不能把字符串:“good!”赋给数组b的语句是(    )。

  A. char b[10]={’g’,’o’,’o’,’d’,’!’};

  B. char b[10];b=“good!”;

  C. char b[10];strcpy(b, “good!”) ;

  D. char b[10]=“good!”;

  11.执行下面程序段,给x,y赋值时,不能作为数据分隔符的是(    )。

  int x,y;

  scanf(”%d%d”,&x&y);

  A. 回车

  B. Tab键

  C. 回车

  D. 逗号

  12.已知ch是字符型变量,下面不正确的赋值语句为(    )。

  A. ch=’a+b’;

  B. ch=’’;

  C. ch=’7’+’9’;

  D. ch=5+9;

  13.下面程序段的输出结果是(    )。

  char c1=’6’,c2=’0’;

  printf(”%c,%c,%d,%d ”,c1,c2,c1-c2,c1+c2);

  A. 因输出格式不合法,输出出错信息

  B. 6,0,6,102

  C. 6,0,7,6

  D. 6,0,5,7

  14.在C语言的循环语句for, while,do while中,用于直接中断最内层循环的语句是(    )。

  A. switch

  B. continue

  C. break

  D. if

  15.下面的循环结构中,不是无限循环的是(    )。

  A. for( i=1;;i++) printf(“%d”,i--);

  B. i=1;while(i--) {printf(”%d”,i++);}

  C. i=1;do{printf(”%d”,i); i++;} while(--i);

  D. for(i=0;i;i++) printf(”%d”,i);

  16.下面程序段的运行结果是(    )。

  char c[]=” will ”;

  printf(“%d“,strlen(c));

  A. 14

  B. 3

  C. 9

  D. 字符串中有非法字符,输出值不确定

  17.下面说法中正确的是:在C语言程序中(    )。

  A. 函数的定义可以嵌套,但函数的调用不可以嵌套

  B. 函数的定义不可以嵌套,但函数的调用可以嵌套

  C. 函数的定义和调用均不可以嵌套

  D. 函数的定义和 调用均可以嵌套

  18.若用数据名作为函数调用的实参,传递给形参的是(    )。

  A. 数据的首地址

  B. 数组第一个元素的值

  C. 数组中全部元素的值

  D. 数组元素的个数

  19.以下叙述中不正确的是(    )。

  A. 在不同的函数中可以使用相同名字的变量

  B. 函数中的形式参数是局部变量

  C. 在一个函数内定义的变量只在本函数范围内有效

  D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效

  20.一个变量的指针是指(    )。

  A. 该变量的值

  B. 该变量的地址

  C. 该变量的变量名

  D. 该变量的标志

  21.若有定义:int a[10],*p=a;,则p+5表示(    )。

  A. 元素a[5]的地址

  B. 元素a[5]的值

  C. 元素a[6]的地址

  D. 元素a[6]的值

  22. C语言规定,在一个源程序中,main函数的位置(    )。

  A. 必须在最开始

  B. 必须在系统调用的库函数的后面

  C. 可以任意

  D. 必须在最后

  23. 一个C语言程序是由(    )。

  A. 一个主程序或若干个子程序组成

  B. 函数组成

  C. 若干过程组成

  D. 若干个子程序组成

  24. 下面哪项是构成C语言的基本单位(    )。

  A. 函数

  B. 过程

  C. 子程序

  D. 子例程

  25. 以下正确的说法是(    )。

  A. 定义函数时,形参的类型说明可以放在函数体内

  B. return后边的值不能为表达式

  C. 如果函数值的类型和返回值类型不一致,以函数值类型为准

  D. 如果形参与实参的类型不一致,以函数值类型为准

  26.对于基类型相同的两个指针变量之间,不能进行的运算是(    )。

  A. <

  B. =

  C. +

  D. –

  27.变量的指针,其含义是指该变量的(    )。