c语言练习试题库
c语言练习试题库
单项选择题
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.变量的指针,其含义是指该变量的( )。
A. 值
B. 地址
C. 名
D. 一个标志
28.下面程序运行的结果是( )。
void ss(char *s,char t)
{ while(*s)
{ if(*s= =t) *s=t-‘a’+’A’;
s++;
}
}
void main()
{ char str1[100]=”abcddfefdbd”,c=’d’;
ss(str1,c);
printf(“%s ”,str1);
}
A. ABCDDFEFDBD
B. abcDDfefDbD
C. abcAAfefAbA
D. Abcddfefdbd
29.下列说法中正确的是( )。
A. 结构体变量可以作为一个整体进行其值得输入和输出
B. 结构体成员项不可以是结构体
C. 结构体成员项可以是结构体或其他任何C语言的数据类型
D. 结构体变量和结构体是相同的概念
30.下面说法中不正确的是( )。
A. 一个C源程序可有一个或多个函数组成
B. 一个C源程序必须包含一个main函数
C. C程序的基本组成是函数
D. 在C程序中,注释语句只能位于一条语句的后面
31.若执行下面的程序段,则下面描述中正确的是( )。
int k=5;
while(k=1) k--;
A. while循环执行四次
B. 循环体执行一次
C. 循环体一次也不执行
D. 死循环
32.下面关于for循环的正确描述是( )。
A. for循环只能用于循环次数已经确定的情况
B. for循环中是先执行循环体语句,后判断表达式
C. 在for循环中,不能用break语句跳出循环
D. for循环的循环体可以包含多条语句,但必须用花括号括起来
33.不正确的定义语句是( )。
A. double x[5]={2.0,4.0,6.0,8.0,10.0};
B. int y[5]={0,1,3,5,7,9};
C. char c1[]={’1’,’2’,’3’,’4’,’5’};
D. char c2[]={’x10’,’x0a’,’x08’};
34.下面是对s的初始化,其中不正确的是( )。
A. char s[5]={“abc”};
B. char s[5]={‘a’,’b’,’c’};
C. char s[5]=””;
D. char s[5]=”abced”;
35.下面程序段的运行结果是( )。
char c[5]={‘a’,’b’,’’,’c’,’’};
printf(“%s”,c);
A. ‘a’’b’
B. ab
C. ab c
D. abc
36.以下说法中正确的是( )。
A. C语言程序总是从第一个定义的函数开始执行
B. 在C语言程序中,要调用的函数必须在main函数中定义
C. C语言程序总是从main函数开始执行
D. C语言程序中的main函数必须放在程序的开始部分
37.下列常量中,合法的C常量是( )。
A. “x-y”
B. ‘105’
C. ‘Be’
D. 07ff
38.下面程序的输出结果是( )。
void main
{
int i=011,j=11;
printf(“%d,%d ”,++i,j--);
}
A. 10,11
B. 12,10
C. 11,11
D. 10,9
39.下面程序的执行结果为( )。
void main()
{int x=20,y;
y=++x; y+=x;
printf(”%d,”y);
y=x--; y+=x;
printf(”%d,”y);
}
A. 42,41
B. 42,42
C. 40,41
D. 42,40
40.下面程序的输出结果是( )。
void main()
{ int i=010,j=10;
printf(“%d,%d”,i++,++j);
}
A. 10,11
B. 11,11
C. 8,11
D. 8,10
41.能正确表示a和b同时为正或同时为负的表达式是( )。
A. (a>=0||b>=0)&&(a<0||b<0)
B. (a>=0||b>=0)&&(a<0&&b<0)
C. (a+b>0)&& (a+|b<0)
D. a*b>0
42.以下关于运算符优先顺序的描述中正确的是( )。
A. 关系运算符<算术运算符<赋值运算符<逻辑运算符
B. 逻辑运算符<关系运算符<算术运算符<赋值运算符
C. 赋值运算符<逻辑运算符<关系运算符<算术运算符
D. 算术运算符<关系运算符<赋值运算符<逻辑运算符
43.下面程序的运行结果是( )。
void main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
A. 6,1
B. 2,1
C. 6,0
D. 2,0
44.若有条件表达式(exp)?a++:b--,则以下表达式中完全等价于表达式(exp)的是( )。
A. (exp= =0)
B. (exp!=0)
C. (exp= =1)
D. (exp!=1)
45.程序段如下,则正确的执行结果是( )。
int k=0;
while(k++<=2);
printf(“%d ”,k);
A. 2
B. 3
C. 4
D. 无结果
46.下面说法中正确的是( )。
A. 在C语言函数中,必须有形参
B. 在C语言函数中,形参必须是变量名
C. 在C语言函数中,可以有也可以没有形参
D. 在C语言函数中,数组名不能做形参
47.下面说法正确的是,在C语言中( )。
A. 实参和与其对应的形参各占用独立的存储单元
B. 实参和与其对应的形参共占用一个存储单元
C. 只有当实参和与其对应的形参同名时才共占用存储单元
D. 形参是虚拟的,不占用存储单元
48.下面不正确的说法是:C语言规定( )。
A. 实参可以是常量、变量或表达式
B. 形参可以是常量、变量或表达式
C. 实参传递给形参时,要求实参必须有确定的值
D. 形参应与其对应的实参类型可以不一致
49.C语言允许函数值类型缺省定义,此时函数值隐含的类型是( )。
A. float型
B. int型
C. long型
D. double型
50.若有以下定义:char s[10]=“include“,*p=s;,则不能代表字符‘u’的表达式为( )。
A. s[4]
B. s+4
C. *(p+4)
D. p+=4,*p;
51. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。
A. 地址传递
B. 单向值传递
C. 由实参传给形参,再由形参传给实参
D. 由用户指定传递方式
52. C语言规定,函数返回值的类型是由( )。
A. return语句中的表达式类型所决定
B. 调用该函数时的主调函数类型所决定
C. 调用该函数时系统临时决定
D. 在定义该函数时所指定的函数类型所决定
53. 若有int *p,a[10];p=a; ,则下列写法不正确的是( )。
A. p=a+2
B. a++
C. *(a+1)
D. p++
54. 若用数组名作为函数调用的实参,传递给形参的是( )。
A. 数组的首地址
B. 数组第一个元素的值
C. 数组中全部元素的值
D. 数组元素的个数
55. 若使用以为数组名作函数实参,则下面说法中正确的是( )。
A. 在被调函数中,与该实参相对应的形参必须是同类型的数组名或指针变量
B. 实参数组类型与形参数组类型可以不匹配
C. 在被调函数中,不需要考虑形参数组的大小
D. 实参数组名与形参数组名必须一致
56. 设p1、p2是指向同一个字符串的指针变量,c为字符变量,则不能正确执行的赋值语句为 ( )。
A. c=*p1+*p2;
B. p2=c;
C. p1=p2;
D. c=(*p1)*(*p2);
57. 若有一下结构体定义,则正确的引用和定义是( )。
struct example { int x; int y;} v1;
A. example.x=10
B. example v2; v2.x=10;
C. struct v2; v2.x=10;
D. struct example v2={10,5};
58. 说明一个结构体变量时,系统分配给它的内存是( )。
A. 各成员所需内存量的总和
B. 结构体中第一个成员所需内存量
C. 成员中占内存量最大者所需的容量
D. 结构体中最后一成员所需内存量
59. 在C语言中,文件由下面拿个组成( )。
A. 记录
B. 数据行
C. 数据块
D. 字符(字节)序列
60. 下面程序段的运行结果是( )。
char c[]=” will ”;
printf(“%d“,strlen(c));
A. 14
B. 3
C. 9
D. 字符串中有非法字符,输出值不确定
61.以下叙述中不正确的是( )。
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形式参数是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效
62.一个变量的指针是指( )。
A. 该变量的值
B. 该变量的地址
C. 该变量的变量名
D. 该变量的标志