C题库.docx
《C题库.docx》由会员分享,可在线阅读,更多相关《C题库.docx(103页珍藏版)》请在冰豆网上搜索。
C题库
选择题:
1在"文件包含"的预处理中,被包含的文件应是___B____。
A)可执行文件B)源文件C)目标文件D)批处理文件
2若file1中包含file2,file2中要用到file3,若file2中没有#include"file3.h"语句,则在file1.c中应进行如下定义__B____。
A)#include"file2.h"和#include"file3.h"
B)#include"file3.h"和#include"file2.h"
C)#include"file2.h","file3.h"D)#include"file2.h,file3.h"
3设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句z=2*(N+Y(5+1));后,z的值为__C___。
A)出错B)42C)48D)54
4`关于宏的下列说法正确的是___C___。
A)宏名必须用大写字母表示。
B)在#defineR4.5中,R代替了常量4.5。
C)可以用#undef命令终止宏定义的作用域。
D)宏定义是特殊的C语句,应在行末加分号
5若有#defineS(r)PI*r*r,则S(a+b)展开后的形式为__A___。
A)PI*a+b*a+bB)PI*(a+b)*(a+b)C)PI*a*a+PI*b*bD)PI*r*r*(a+b)
6关于带参数的宏,下列说法正确的是__D__
A)宏名无类型,但是它的参数是有类型的。
B)宏展开只能得到一个结果。
C)宏展开时要进行内存单元的分配。
D)宏展开时,不求参数的值,而只进行字符替换。
7在C语言中,char型数据在内存中的存储形式是:
__D____。
A)补码B)反码C)原码D)ASCII码
8___B___是C语言提供的合法的数据类型关键字。
A)FloatB)unsignedC)integerD)Char
9下列语句中符合C语言语法的赋值语句是:
___D___。
A)a=7+b+c=a+7;B)a=7+b++=a+7;C)a=7+b,b++,a+7
D)a=7+b,c=a+7;
10字符串"\\\"ABC\"\\"的长度是:
___B____。
(最外边的双引号为字符串的定界符,不是字符串的内容。
)A)11B)7C)5D)3
11程序段unsigneda=65535;printf("%d",a);执行时输出的结果是:
____B_____。
A)65535B)-1C)-32767D)1
12程序段intx,y;x=13;y=5;printf("%d",x%=(y/=2));执行时输出的结果是:
____C_____。
A)3B)2C)1D)0
13___D___是不正确的C语言赋值语句。
A)x=1,y=2;B)x++;C)x=y=5;D)y=int(x);
14下列语句中符合C语言语法的赋值语句是:
____B____。
A)x=(3+b,z)=x+3;B)x=7+y,y++,z++;C)x=y+2=x+y+z;
D)x=3+y++=x+3;
15对于语句f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,___B_____是正确的。
A)语法错误B)使f的值为5.0C)使f的值为0.0D)使f的值为2.0
16对于赋值语句charcx='\037';判断正确的是:
__B__.
A)不合法,不能赋值B)cx的值是一个字符C)cx的值是四个字符D)cx的值是三个字符
17语句intx=-4L;printf("%d",x);对其正确的判断是:
___A___
A)输出值为-4B)赋值非法C)输出值不确定D)输出值为418若x,i,j,k都是int型变量,则计算x=(i=4,j=16,k=32)后,x的值为:
__C____。
A)4B)16C)32D)52
19以下符合C语言语法的赋值表达式是:
__B__。
A)d=q+e+f=d+9B)d=q+e,f=d+9;C)d=q+e=d+9;D)d=q+e++=d+7;
20文件包含中,被包含文件__D__
A)必须用“.h"为后缀。
B)可以是目标文件或源文件。
C)可以是可执行文件。
D)可以嵌套其它文件。
21设有以下变量定义
floata;inti;
选择正确的输入语句是__A__;
A)scanf("%f%d",&a,&i);B)scanf("%6.2f%d",&a,&i);
C)scanf("%f%d",a,i);D)scanf("%f%u",&a,&i);22若有以下结构体定义:
D
structexample
{intx;
inty;
}vl;)是正确的引用或定义。
A)example.x=10;B)examplev2;v2.x=10
C)structv2;v2.x=10;D)structexamplev2={10}
23对于如下的结构体定义,若对变量person的出生年份进行赋值,正确的赋值语句是:
C
structdate
{intyear,month,day;
};
structworklist
{charname[20];
charsex;
structdatebirthday;
}person;
A)year=1976;B)birthday.year=1976;C)person.birthday.year=1976;D)person.year=1976;
24若有以下说明,则对结构体变量stud1中成员age的不正确引用为()B
structstudent
{intage;intnum;
}stud1,*p;A)stud1.ageB)p.ageC)p->ageD)(*p).age
26对于下述定义,不正确的叙述是(C)。
uniondata
{inti;
charc;
floatf;
}a,b;
A)变量a所占内存的长度等于成员f的长度B)变量a的地址和它的各成员地址都是相同的C)可以在定义时对a初始化D)不能对变量a赋值,故a=b非法
27#include
unionunA
{inti;
charc[2];
};
main()
{unionunx;
x.c[0]=10;x.c[1]=1;
printf("\n%d",x.i);}A)266B)11C)265D)256
28若有以下说明,则对结构体变量stud1中成员age的不正确引用是:
structstudentB
{intage;intnum;
}stud1,*p;A)stud1.ageB)student.ageC)p->ageD)(*p).age
29若已定义了如下的共用体类型变量x,则x所占用的内存字节数为()C
(设在16位PC机的环境下)。
uniondata
{
inti;
charch;
doublef;
}x;A)7B)11C)8D)10
30设函数的调用形式如下:
f((x1,x2),(y1,y2,y3)),则函数有___A___个形参。
A)2B)3C)4D)5
31下列程序正确的运行结果为()。
C
#include"stdio.h"
unionp
{
inti;
charc[2];
}x;
main()
{
x.c[0]=13;x.c[1]=0;
printf("%d\n",x.i);
}A)208B)14C)13D)209
32若已定义了如下的结构体类型变量x,则x所占用的内存字节数为____D_____(设在16位PC机的环境下)。
structstudent
{intnum;
charname[20];
charsex;
intage;
}x;A)2B)6C)20D)25
33下列程序正确的运行结果为(C)。
#include
main()
{unionu
{char*name;
intage;
intincome;
}s;
s.name="WANGLING";
s.age=28;
s.income=1000;
printf("%d\n",s.age);
}A)8B)28C)1000D)不确定
34若有以下程序段,则使用错误的选项是(D)。
structstudent
{
intnum;
intage;
};
structstudentstu[3]={{1001,20},{1002,19},{1004,20}};
main();
{
structstudent*p;
p=stu;
…
;}
A)(p++)->numB)p++C)(*p).numD)p=&stu.age
35在C语言中,对文件的存取是以____D____为单位。
A)程序B)文件C)模块D)字节
36下面对函数的叙述,正确的是___B___。
A)函数的返回值是通过return语句获得的B)函数不能嵌套定义C)函数中没有return语句,说明不带回值D)函数中无论是否有return语句,都能返回正确值
37以下哪一个函数的运行不可能影响实参___C___。
A)voidf(char*x)B)voidf(charx[])
C)voidf(charx,chary)D)voidf(char*x[])
38以下对静态局部变量的叙述哪一个是不正确的___B___。
A)静态局部变量在整个程序运行期间都不释放B)在一个函数中定义的静态局部变量可以被另一函数调用C)静态局部变量是在编译时赋初值的,故它只被赋值一次D)数值型静态局部变量的初值默认为0
39所谓文本文件又叫_A_文件。
A)ASCIIB)可执行C)图象D)保存
40定义my_file为文件型指针变量,使用fopen打开一个能读能写的新的二进制文件,以下正确的调用形式为_____B______。
A)my_file=fopen("my.dat","ab+");B)my_file=fopen("my.dat","wb+");
C)my_file=fopen("my.dat","r+");D)my_file=fopen("my.dat","ab");
41定义my_file为文件型指针变量,使用fopen打开一个能读能写的新的文本文件,正确的调用形式为__C___。
A)my_file=fopen("my.dat","ab+");B)my_file=fopen("my.dat","wb+");
C)my_file=fopen("my.dat","w+");D)my_file=fopen("my.dat","r+");
42有一个已有值的实型变量voltage,若要把它们保存到一个磁盘文件fp中,正确的形式是__C___。
A)fprintf(voltage,fp);B)fprintf(fp,voltage,1);
C)fprintf(fp,"%f",voltage);D)fprintf("%f",voltage,fp);
43有一个已有值的实型变量current,若要把它们保存到一个磁盘文件fp中,正确的形式是__B___。
A)fprintf(current,fp);B)fprintf(fp,"%f",current);
C)fprintf(fp,"f",current);D)fprintf(fp,"%d",current);
44fprintf和fscanf只能一次输入/输出___D_____数据。
A)一个实数B)一个整数C)一个字符D)前三个都不是
45在函数调用语句中,fopen("my.dat","ab+");的含义是___A_____。
A)为读/写打开一个二进制文件B)为读/写打开一个文本文件
C)为写打开一个二进制文件D)读一个二进制文件
46在函数调用语句中,fopen("my.dat","rb");的含义是____D____。
A)为读/写打开一个二进制文件B)读一个二进制文件
C)为写打开一个二进制文件D)为输入打开一个二进制文件
47若有如下说明,则下列叙述中正确的是(已知int类型占两个字节):
structstD
{inta;intb[2];
}a;
A)结构变量a与结构体成员a同名,定义是非法的B)程序只在执行到该定义时才为结构体st分配存储单元C)程序运行时为结构体st分配6字节存储单元D)类型名structst可以通过extern关键字提前引用
48用数组名作为函数调用时的实参,实际上传递给形参的是___B___。
A)数组全部元素的值B)数组首地址
C)数组第一个元素的值D)数组元素的个数
49根据下面的程序,正确的输出形式是_D_;(答案中用U来代替空格)
main()
{inti=5,j=10;
printf("i=%d,",i);
printf("j=%d",j);
}A)i=5Uj=10B)5,10C)10,5D)i=5,j=10U
50能正确表示a和b同时为正或同时为负的逻辑表达式是:
(D)
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
52以下程序输出的是:
(C)(答案中用大写字母U代表空格)
main()
{inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);
}A)0U0U3B)0U1U2C)1U0U3D)1U1U2
53当x为偶数时值为“真”,为奇数时值为“假”的表达式是:
(B)
A)!
x!
=0B)x%2==0C)(x/2*2-x)==0D)!
(x%2==0)
54为表示关系x>=y>=z,应使用C语言表达式为:
(A)
A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
55要求在if后一对圆括号中表示a不等于0的关系,能正确表示这一关系的表达式为:
(A)A)a!
=0B)!
aC)a=0D)a
56设a为整型变量,不能正确表达数学关系10(A)
A)10C)a>10&&a<15D)!
(a<=10)&&!
(a>=15)
57在C语言中,表示逻辑值“真”的是:
(B)
A)大于0的值B)非0的值C)tureD)非零整数
58在以下一组运算符中,优先级最高的运算符是:
(C)
A)<=B)=C)%D)&&
59表示关系“x>0同时y<=10”的C语言表达式为A
A)(x>0)&&(y<=10)B)(x<=0)AND(y<=10)
C)x>0,y<=10D)(x<=0)&(y<=10)
60设a,b,c,f均为整型变量,则执行以下程序段后,f的值为:
(B)
a=0;b=c=1;
f=--a||++b&&--c;A)0B)1C)2D)不确定值
61不合法的关系表达式是:
(A)
A)x=yB)'a'+1=n+1D)x!
=x+y
62假定有以下变量定义:
intk=7,x=12;则能使值为3的表达式是:
(D)
A)x%=(k%=5)B)x%=(k-k%5)
C)x%=k-k%5D)(x%=k)-(k%=5)
63ggg(x)
{floatx;
printf(“\n%d",x*x);
}
则函数的类型为__C____。
A)与参数x的类型相同B)是voidC)是intD)无法确定
64以下程序的输出结果是___B___。
#include"stdio.h"
f(char*s)
{char*p=s;
while(*p!
='\0')p++;
return(p-s);
}
main()
{printf("%d\n",f("ABCDEF"));
}A)3B)6C)8D)0
65C语言程序的基本单位是:
__C____。
A)程序行B)语句C)函数D)字符
66下面函数的功能是:
___B___
sss(s,t)
char*s,*t;
{while((*s)&&(*t)&&(*t++==*s++));
return(*s-*t);
}
A)求字符串的长度B)比较两个字符串的大小
C)将字符串s复制到字符串t中D)将字符串s续接到字符串t中
67函数charctype(intx,inty)的返回类型由___A___确定。
A)字符型B)return语句返回的表达式类型
C)浮点型D)调用时的实参类型
68若定义了以下函数:
voidf(……)
{……
*p=(double*)malloc(10*sizeof(double));
……
}
p是该函数的形参,要求通过p把动态分配的存储单元的地址传回主调函数,则形参p的正确定义应当是:
___C___。
A)double*p;B)float**p;C)double**p;D)float*p;
69下面程序段运行的结果是:
B
x=-1;
do{x=x*x;
}while(!
x);
A)死循环B)循环执行一次C)循环执行两次D)有语法错误
70下列程序的运行结果是:
___B___。
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}A)63B)36C)编译出错D)00
71针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是:
(C)
A)break语句可以一次性跳出多层嵌套循环
B)continue语句可以一次性跳出多层嵌套循环
C)break语句只能跳出最内层循环
D)continue语句不能跳出最外层循环
72存在多层嵌套循环时,下列说法正确的是:
(B)
A)continue语句能够中止包含该语句的最内层循环
B)break语句能够中止包含该语句的最内层循环
C)continue语句可以中止所有循环D)break语句可以中止所有循环
73下面程序的运行结果是:
D
#include"stdio.h"
main()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}}A)3981B)4284C)2668D)2870
74下面程序正确的运行结果是:
C(大写字母U代表空格)
main()
{intnum=0;
while(num<=2)
{num++;
printf("%3d",num);
}
}A)UU1B)UU1UU2C)UU1UU2UU3D)UU1UU2UU3UU4
75针对下列程序段回答问题:
A
for(t=1;t<=100;t++)
{scanf("%d",&x);
if(x<0)continue;
printf("%3d",t);
}A)最多允许输出100个非负整数B)x>=0时什么也不输出
C)printf函数永远也不执行D)当x<0时整个循环结束
76下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。
请在A处填写正确语句。
B
#include"stdio.h"
main()
{intnum;
scanf("%d",&num);
do{
if(___A___)printf("%d",num);
scanf("%d",&num);
}while(num!
=0);
}A)num%100==3B)num/100%10==3
C)num%10/100==3D)num\100==3
77下面程序是从键盘输入4位正整数,然后输出百位是4的数字,
输入0或负数时结束循环。
请在A处填写正确语句。
A
#include"stdio.h"
main()
{intnum;
scanf("%d",&num);
do{
if(___A___)printf("%d",num);
scanf("%d",&num);
}while(num>0);
}A)num/100%10==4B)num/10%100==4C)num%100/10==4
78下面程序是从键盘输入4位正整数,输入0或负数时结束循环。
请在划线处填写内容。
A
#include"stdio.h"
main()
{intnum;
scanf("%d",&num);
do{
scanf("%d",&num);
}while(______);
}A)num>0B)num==0C)!
numD)!
num!
=0
79下面程序的运行结果是:
D
#include"stdio.h"
main()
{inta=1,b=10;
do{
a++;
b-=a;
}while(b-->0);
printf("a=%d,b=%d",a,b);
}A)a=2,b=-1B