7.下列程序的输出结果是()。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:
a=1,b=0
B:
a=2,b=1
C:
a=1,b=1
D:
a=2,b=2
8.下列程序的输出结果是()。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:
a=1,b=0
B:
a=2,b=1
C:
a=1,b=1
D:
a=2,b=2
第四章循环结构
一、填空:
1.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是【1】.
for(x=0,y=0;y!
=123&&x<3;x++)
scanf("%d",&y);
2.程序段intk=10;while(k=0)k=k-1循环体语句执行【1】次.
3.若输入字符串:
abcde<回车>,则以下while循环体将执行【1】次.
While((ch=getchar())=='e')printf("*");
4.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【1】.
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
5.以下程序段要求从键盘输入字符,当输入字母为'Y'时,执行循环体,则括号内应填写【1】.
ch=getchar();
while(ch____'Y')/*在括号中填写*/
ch=getchar();
6.以下do-while语句中循环体的执行次数是【1】.
a=10;
b=0;
do{b+=2;a-=2+b;}while(a>=0);
二、单选
1.从循环体内某一层跳出,继续执行循环外的语句是
A:
break语句
B:
return语句
C:
continue语句
D:
空语句
2.C程序的基本结构单位是
A:
文件
B:
语句
C:
函数
D:
表达式
3.设j和k都是int类型,则下面的for循环语句()。
for(j=0,k=0;j<=9&&k!
=876;j++)scanf("%d",&k);
A:
最多执行10次
B:
最多执行9次
C:
是无限循环
D:
循环体一次也不执行
4.C语言中while和do-while循环的主要区别是()。
A:
do-while的循环体至少无条件执行一次
B:
while的循环控制条件比do-while的循环控制条件更严格
C:
do-while允许从外部转到循环体内
D:
do-while的循环体不能是复合语句
5.以下叙述正确的是()。
A:
do-while语句构成的循环不能用其它语句构成的循环来代替.
B:
do-while语句构成的循环只能用break语句退出.
C:
用do-while语句构成的循环,在while后的表达式为非零时结束循环.
D:
用do-while语句构成的循环,在while后的表达式为零时结束循环
6.t为int类型,进人下面的循环之前,t的值为0
while(t=1){……}则以下叙述中正确的是______。
A:
循环控制表达式的值为0
B:
循环控制表达式的值为1
C:
循环控制表达式不合法
D:
以上说法都不对
7.以下程序的执行结果是main()
{intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);}
A:
0
B:
1
C:
语法错误
D:
.无限循环
8.选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。
哪个数作为逻辑“假”值()。
A:
-1
B:
1
C:
非零的数
D:
0
9.下面有关for循环的正确描述是()。
A:
for循环只能用于循环次数已经确定的情况
B:
for循环是先执行循环循环体语句,后判断表达式
C:
在for循环中,不能用break语句跳出循环体
D:
for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
10.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达
式的值为“假”,则以下不能满足要求的表达式是()。
A:
A%2==1
B:
!
(A%2==0)
C:
!
(A%2)
D:
A%2
11.执行语句for(i=1;i++<4;);后变量i的值是()。
A:
3
B:
4
C:
5
D:
不定
12.若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;)printf("%d",i--);
A:
无限次
B:
0次
C:
1次
D:
2次
13.以下描述中正确的是()。
A:
由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B:
do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C:
在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D:
do-while循环中,根据情况可以省略while
14.对for(表达式1;;表达式3)可理解为()。
A:
for(表达式1;0;表达式3)
B:
for(表达式1;1;表达式3)
C:
for(表达式1;表达式1;表达式3)
D:
for(表达式1;表达式3;表达式3)
15.以下不是无限循环的语句为()。
A:
for(y=0,x=1;x>++y;x=i++)i=x;
B:
for(;;x++=i);
C:
while
(1){x++;}
D:
for(i=10;;i--)sum+=i;
16.以下语句中,循环次数不为10次的语句是()。
A:
for(i=1;i<10;i++);
B:
i=1;do{i++;}while(i<=10);
C:
i=10;while(i>0){--i;}
D:
i=1;m:
if(i<=10){i++;gotom;}
17.以下程序段的输出结果为()。
charc[]="abc";
inti=0;
do;while(c[i++]!
='\0');printf("%d",i-1);
A:
abc
B:
ab
C:
2
D:
3
18.判断两个字符串是否相等,正确的表达方式是
A:
while(s1==s2)
B:
while(s1=s2)
C:
while(strcmp(s1,s2)==0)
D:
while(strcmp(s1,s2)=0)
19.以下程序的执行结果是_______.
main()
{intnum=0;
while(num<=2){num++;printf("%d,",num);}}
A:
0,1,2
B:
1,2,
C:
1,2,3,
D:
1,2,3,4,
20.以下程序的运行结果是()。
main()
{intn;
for(n=1;n<=10;n++)
{
if(n%3==0)continue;
printf("%d",n);
}
}
A:
12457810
B:
369
C:
12
D:
1234567890
21.设j和k都是int类型,则for循环语句
for(j=0,k=-1;k=1;j++,k++)printf("****\n");()。
A:
循环结束的条件不合法
B:
是无限循环
C:
循环体一次也不执行
D:
循环体只执行一次
22.下列程序的输出为()。
答案:
D
main()
{inty=10;
while(y--);
printf("y=%d\n",y);
}
A:
y=0
B:
while构成无限循环
C:
y=1
D:
y=-1
第五章函数
一、填空
1.静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是在【2】时进行的.
2.C语言源程序的基本单位是【1】,【2】是程序的基本组成部分.
3.计算机中内存储器的最小存储单位是【1】.
4.函数调用时的实参和形参之间的数据是单向的【1】传递.
5.预处理命令行都必须以【1】号开始.
6.函数的定义不可以嵌套,但函数的调用【1】嵌套.
7.函数调用语句func((e1,e2),(e3,e4,e5))中含有【1】个实参.
8.函数的【1】调用是一个函数直接或间接地调用它自身.
9.在c语言中,格式输入操作是由库函数在C语言中,格式输入操作是由库函数【1】完成的,格式输出操作是由库函数【2】完成的.
10.如果函数不要求带回值,可用【1】来定义函数返回值为空.
11.getchar()函数只能接收一个【1】.
二、单选
1.若变量已正确定义,执行语句scanf("%d,%d,%d",&k1,&k2,&k3);时,()是正确的输入.
A:
2030,40
B:
203040
C:
20,3040
D:
20,30,40
2.C语言函数的隐含存储类别是().
A:
static
B:
auto
C:
register
D:
extern
3.以下对C语言函数的描述中,正确的是().
A:
C程序必须由一个或一个以上的函数组成
B:
C函数既可以嵌套定义又可以递归调用
C:
函数必须有返回值,否则不能使用函数
D:
C程序中有调用关系的所有函数必须放在同一个程序文件中
4.C语言中函数调用的方式有().
A:
函数调用作为语句一种
B:
函数调用作为函数表达式一种
C:
函数调用作为语句或函数表达式两种
D:
函数调用作为语句、函数表达式或函数参数三种
5.经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在微机上的值分别为().
charx=65;
floaty=7.3;
inta=100;
doubleb=4.5;
A:
2,2,2,4
B:
1,2,2,4
C:
1,4,2,8
D:
2,4,2,8
6.下列说法不正确的是().
A:
主函数main中定义的变量在整个文件或程序中有效
B:
不同函数中,可以使用相同名字的变量
C:
形式参数是局部变量
D:
在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
7.C语言程序中,当调用函数时().
A:
实参和虚参各占一个独立的存储单元
B:
实参和虚参可以共用存储单元
C:
可以由用户指定是否共用存储单元
D:
计算机系统自动确定是否共用存储单元
8.以下程序的输出结果为().
main()
{inta=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
intfunc(intx,inty)
{
return(x+y);
}
A:
15
B:
13
C:
9
D:
函数调用出错
9.关于return语句,下列正确的说法是().
A:
在主函数和其他函数中均可出现
B:
必须在每个函数中出现
C:
可以在同一个函数中出现多次
D:
只能在除主函数之外的函数中出现一次
10.C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为().
A:
void
B:
double
C:
int
D:
char
11.下面叙述中错误的是().
A:
主函数中定义的变量在整个程序中都是有效的
B:
在其它函数中定义的变量在主函数中也不能使用
C:
形式参数也是局部变量
D:
复合语句中定义的函数只在该复合语句中有效
12.下列字符序列中,是C语言保留字的是().
A:
sizeof
B:
include
C:
scanf
D:
sqrt
13.当调用函数时,实参是一个数组名,则向函数传送的是().
A:
数组的长度
B:
数组的首地址
C:
数组每一个元素的地址
D:
数组每个元素中的值
14.在C语言中,调用函数除函数名外,还必须有().
A:
函数预说明
B:
实际参数
C:
()
D:
函数返回值
15.在调用函数时,如果实参是简单变量,它与对应形参之间的数据
传递方式是().
A:
地址传递
B:
单向值传递
C:
由实参传给形参,再由形参传回实参
D:
传递方式由用户指定
16.以下正确的描述是:
在C语言程序中().
A:
函数的定义可以嵌套,但函数的调用不可以嵌套
B:
函数的定义不可以嵌套,但函数的调用可以嵌套
C:
函数的定义和函数的调用均不可以嵌套
D:
函数的定义和函数的调用均可以嵌套
17.char*match(charc)是().
A:
函数定义的头部
B:
函数预说明
C:
函数调用
D:
指针变量说明
18.sizeof(float)是().
A:
一种函数调用
B:
一个不合法的表达式
C:
一个整型表达式
D:
一个浮点表达式
第六章数据类型和表达式
一、填空
1.已知a=13,b=6,a&b的十进制数值为【1】.
2.设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!
(a+b)+c-1&&b+c/2后,t的值是【1】.
3.在C语言中的实型变量分为两种类型,它们是float型和【1】型.
4.已知a=10,b=15,c=1,d=2,e=0,则表达式(c==b)>e的值为【1】.
5.在微机中,字符的比较就是对它们的【1】进行比较。
6.intx=4,y=z=2;z=x==(y=z);则z的值为【1】.
7.写出语句b=(a=6,a*3);执行后整型变量b的值是【1】.
8.c语言表达式5>2>7>8的值是【1】,表达式!
10的值是【2】.(填数字)
9.若有定义:
charc='\010';则变量C中包含的字符个数为【1】.
10.设chara,b;若想通过a&&b运算保留a的第1位和第6位的值,则b的二进制数是【1】.
11.变量的本质是代表内存中的一个存储单元的【1】.
二、单选
1.下列数据中属于"字符串常量"的是().
A:
ABC
B:
"ABC"
C:
'ABC'
D:
'A'
2.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类型是().
A:
extern
B:
register
C:
auto
D:
static
3.下列正确的标识符是().
A:
_do
B:
6a
C:
%y
D:
a+b
4.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为().
A:
算术运算、赋值运算、关系运算
B:
关系运算、赋值运算、算术运算
C:
算术运算、关系运算、赋值运算
D:
关系运算、算术运算、赋值运算
5.C语言函数内定义的局部变量的隐含存储类别是().
A:
static
B:
auto
C:
register
D:
extern
6.C语言中,逻辑"真"等价于().
A:
大于零的数
B:
非零的数
C:
大于零的整数
D:
非零的整数
7.下列运算符中,不属于关系运算符的是().
A:
<
B:
>
C:
>=
D:
!
8.以下运算符中,优先级最高的运算符是().
A:
=
B:
!
=
C:
*(乘号)
D:
()
9.若有以下定义:
chars='\092';则该语句().
A:
使s的值包含1个字符
B:
定义不合法,s的值不确定
C:
使s的值包含4个字符
D:
使s的值包含3个字符
10.C语言中要求对变量作强制定义的主要理由是().
A:
便于移植
B:
便于写文件
C:
便于编辑预处理程序的处理
D:
便于确定类型和分配空间
11.在位运算中,操作数每右移一位,其结果相当于().
A:
操作数乘以2
B:
操作数除以2
C:
操作数乘以16
D:
操作数除以16
12.以下关于long、int和short类型数据占用内存大小的叙述中正确的是().
A:
均占4个字节
B:
根据数据的大小来决定所占内存的字节数
C:
由用户自己定义
D:
由C语言编译系统决定
13.全局变量的定义不可能在().
A:
函数内部
B:
函数外面
C:
文件外面
D:
最后一行
14.在C语言中,int、char和short三种类型数据在内存中所占用的字节数().
A:
由用用户自己定义
B:
均为2个字节
C:
是任意的
D:
由所用机器的机器字长决定
15.位字段数据的单位是()位.
A:
十六进制
B:
八进制
C:
二进制
D:
十进制
16.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为().
A:
自动(auto)
B:
静态(static)
C:
外部(extern)
D:
寄存器(register)
17.用户定义的函数不可以调用的函数是().
A:
非整型返回值的
B:
本文件外的
C:
main函数
D:
本函数下面定义的
18.在位运算中,操作数每右移一位,其结果相当于().
A:
操作数乘以2
B:
操作数除以2
C:
操作数除以4
D:
操作数乘以4
第七章数组
一、填空
1.设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的二进制数是【1】.
2.执行以下程序段后,s的值是【1】inta[]={5,3,7,2,1,5,3,10},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);
3.复制字符串的库函数是【1】,合并字符串的库函数是【2】,求字符串长度的库函数是【3】,字符串比较的库函数是【4】,只写函数名即可.
4.若有以下数组a,数组元素:
a[0]~a[9],其值为941282107513,该数组的元素中,数值最大的元素的下标值是【1】.
5.若有定义:
chars[]="china";则TurboC系统为数组s开辟【1】个字节的内存单元.
6.数组在内存中占一段连续的存储区,由【1】代表它的首地址.
7.staticinta[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为【1】.
8.执行语句charstr[81]="abcdef";后,字符串str结束标志存储在str[【1】(在括号内填写下标值)中.
9.C程序在执行过程中,不检查数组下标是否【1】.
10.C语言中,二维数组在内存中的存放方式为按【1】优先存放.
11.C语言中,数组名是一个不可变的【1】量,不能对它进行加减和赋值运算.
二、单选
1.下列说法中错误的是().
A:
一个数组只允许存储同种类型的变量
B:
如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值
C:
数组的名称其实是数组在内存中的首地址
D:
当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改
2.若有如下定义和语句,且0<=i<5,下面()是对数值为3数组元素的引用.
inta[]={1,2,3,4,5},*p,i;
p=a;
A:
*(a+2)
B:
a[p-3]
C:
p+2
D:
a+3
3.对于定义,char*aa[2]={"abcd","ABCD"},选项中说法正确的是().
A:
aa数组元素的值分别是"abcd"和"ABCD"
B:
aa是指针变量,它指向含有两个数组元素的字符型一维数组
C:
aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D:
aa数组的两个元素中各自存放了字符'a'和'A'的地址
4.下列数组说明中,正确的是().
A:
intarray[][4];
B:
intarray[][];
C:
intarray[][][5];
D:
intarray[3][];
5.数组名作为实参数传递给函数时,数组名被处理为().
A:
该数组的长度
B:
该数组的元素个数
C:
该数组的首地址
D:
该数组中各元素的值
6.chara[]="Thisisaprogram.";输出前5个字符的语句是().
A:
printf("%.5s",a);
B:
puts(a);
C:
printf("%s",a);
D:
a[5*2]=0;puts(a);
7.以下对一维整型数组a的正确说明是().
A:
inta(10);
B:
intn=10,a[n];
C:
intn;scanf("%d",&n);inta[n];
D:
#defineSIZE10(换行)inta[SIZE];
8.若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是().
A:
2
B:
3
C:
4
D:
无确定值
9.若使用一维数组名作函数实参,则以下正确的