C语言最新 选择题答案文档格式.docx
《C语言最新 选择题答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言最新 选择题答案文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
=c
(B)a-b||a+b&
&
a+c
(C)a/b||c>
b
(D)a/b||b/c
在做逻辑运算时,非0值都当做真,0值当作假。
D选项中,a/b因为除号运算符两边为整数,结果取整数,于是为0。
后面的公式b/c的结果也是0。
“或”运算符”||”的两边公式计算结果均为0,因此结果也是0(假)。
9.若已定义
:
charc=’B’
inta=8
floatx=10.3
则表达式c%a+x的值是()
[已知’A’的ASCII码的十进制值为65]
(A)12.3
(B)12
(C)10
(D)18.3
字符数据做算术运算时,使用的是该字符的ASCII编码。
因此上面的公式是计算66%8+10.3
10.为避免在嵌套的条件语句if...else中产生二义性,C语言规定,else子句总是与()配对。
(A)其之后最近的if
(B)缩进位置相同的if
(C)同一行上的if
(D)其之前最近的if
11.若已定义:
inti,a=0
下列()不是无限循环语句。
(A)for(i=10
i--)a+=i
(B)while
(1)a++
(C)for(i=1
i>
++a
i++)a+=2
(D)for(i=1
a++)
for循环中,括号内的第2个表达式是循环控制条件,如果缺省则会使得for语句进入无限循环,此时需要在循环体中加入break语句才能解决问题。
B选项中,表达式2为i>
++a,要先对a变量执行自加,于是a的值变为1;
然后在执行判断i>
a,由于i的值也是1,因此条件不成立,循环结束。
12.能对二维数组a进行正确初始化的语句是()
(A)Inta[2][4]={{1,2},{3,4},{5,6}};
(B)Inta[][3]={{1,2},{},{3,5,6}};
(C)Inta[][3]={{1,2},{3,4,5}};
(D)Inta[2][]={{1,2},{3,0,5}};
参考书本第六章数组的定义和初始化
13.下列程序段执行后s的值是()
intk,s=0;
inta[3][3]={11,12,13,14,15,16,17,18,19};
for(k=0;
k<
2;
k++)
s+=a[k][k+1];
(A)76
(B)31
(C)28
(D)45
14.下列程序段的运行结果是()
charstr[80];
strcpy(str,”university”);
说明:
strcpy函数用于复制,把后面的字符串复制到前面的对象中
printf(“%d”,strlen(str));
strlen函数用于计算字符串中有效字符的个数(注意不包含\0)
(A)9
(B)10
(C)117
(D)8
15.下列程序的运行结果是()
#include<
stdio.h>
intnum=20;
这里的变量是全局变量,可以被本程序中,任何一个函数所使用
fun()
{intnum=5;
这里的变量num是局部变量,局部变量若和全局变量同名,则局部变量具有
return--num;
有限使用权,所以return–num;
中使用的是局部变量num的值5。
}
voidmain()
{fun();
printf(“%d\n”,num);
说明:
由于main函数内没有定义num变量,此处输出的是全局变量num的值20
(A)4
(B)20
(C)19
16.下列叙述中错误的是()
(A)在程序中凡是以#号开始的语句行都是预处理命令行
(B)下列是正确的宏定义:
defineR45
(C)C程序在执行过程中对预处理命令进行处理
(D)预处理命令行都必须以#号开始
17.
表达式前的*号是间接访问运算符,P+3是一个地址。
地址
201
202
203
204
205
206
207
元素
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
字符
f
u
j
i
a
n
\0
下列程序段运行后,表达式*(p+3)的值为()
chara[]=”fujian”;
char*p;
p=a;
(A)‘j’
(B)‘i’
(C)存放’i’的地址
(D)存放’j’的地址
P是指针变量,存放的是地址,第三句代码”p=a”的作用是把数组a的首地址赋予p,因为数组名代表数组首元素地址。
p+3则是第4个元素地址(参考图),*是间接访问运算符。
18.下列程序段的运行结果是(________)
inta[]={1,2,3,4,5,6,7},*p=a;
intn,s=0;
for(n=0;
n<
6;
n++)s+=p[n++];
printf(“%d”,s);
(A)1
(B)3
(C)9
(D)27
19.若有定义:
structstudent
{intnum;
charsex;
intage;
}stu1;
下列叙述错误的是()
(A)structstudent是结构体类型名
(B)stu1是用户定义的结构体类型变量名
(C)student是结构体类型名
(D)num,sex,age都是结构体变量stu1的成员
20.下列程序的运行结果是()
{
struct{charx1;
intx2;
}
a[3]={‘A’,1,’B’,2,’C’,3};
输出65-66/3的值,65是字符’A’的编码.66是字符
printf(“%d\n”,a[0].x1-a[1].x1/a[2].x2);
B的编码,这里用的是编码做算术运算
(A)80
(B)43
(C)40
(D)55
21.若已定义
typedefunion
{charname[10];
intage;
}ustu,*uyour;
下列叙述正确的是()
(A)age是共用体类型ustu的成员
(B)uyour是指向共用体类型ustu的指针类型名
(C)ustu是一个共用体类型名
(D)uyour是一个共用体类型名
22.下列叙述错误的是()
(A)C源程序必须包含一个main()函数
(B)表达式是构成C源程序的基本单元
(C)一个C源程序可由一个或多个函数组成
(D)C语言函数体使用一对花括号’{‘和’}’将构成函数的语句括起来
23.C语言基本数据类型不包括()
(A)字符型
(B)实型
(C)字符串型
(D)整型
24.若已定义:
intt,a,b;
语句t=(a=3,b=a++);
执行后,变量t、a、b的值依次为()
(A)4,3,4
(B)3,3,3
(C)4,3,3
(D)3,4,3
25.若已定义:
inta=5,b;
语句b=1+(--a);
执行后变量a,b的值分别为()
(A)a为5,b为4
(B)a为5,b为5
(C)a为4,b为6
(D)a为4,b为5
26.若已定义:
inta=1,b=2,c=3;
则表达式b>
=a&
(a+b)<
=c的值为()
(A)2
(C)0
(D)1
27.若已经定义:
charc=’N’;
则正确的赋值表达式是()
(A)c=c%3
(B)c=\0x2n
(C)c%=2.6
(D)c=c+029
28.对于下列程序段,叙述正确的是()
inta=2;
do
{a+=2;
}while(!
(a!
=0));
(A)是无限循环
(B)循环执行2次
(C)循环执行1次
(D)有语法错误
29.编译预处理命令的位置可以在()
(A)文件开头
(B)主函数内
(C)printf();
语句中
(D)自定义函数内
30.若已定义:
inta[3][4],*p=a;
则能表示数组元素a[1][2]地址的是()
(A)*(a[1]+2)
(B)a[1][2]
(C)p+6
(D)p[6]
31.下列程序的运行结果是()
main()
{staticchara[]=”bacdefg”,b[]=”abcbehg”;
char*p=a,*q=b;
inti;
for(i=0;
i<
=6;
i++)
if(*(p+i)==*(q+i))
printf(“%c”,*(q+i));
(A)fdb
(B)geca
(C)ceg
(D)aceg
32.若有定义
intnum;
(A)student是结构体类型名
(B)structstudent是结构体类型名
(C)stu1是用户定义的结构体类型变量名
33.若已定义
typedefstructstu
charname[20];
}STU;
则正确的语句是()
(A)STUaa[2]={{1,’chen’},{2,’li’}};
(B)studd[2]={{1,”chen”},{2,”li”}};
(C)STUcc[2]={{1,”chen”},{2,”li”}};
(D)structstubb[2]={{1,chen},{2,li}};
34.若有如下类型说明,则()是错误的叙述。
typedefstruct
{intno;
char*name;
intcj;
}STU,*p;
(A)p是一个结构体类型名
(B)p是指向结构体类型STU
(C)no是结构体类型STU的成员
(D)STU是一个结构体类型名
35.若已定义:
intm=2,n=4;
则表达式(m++,m+n)的值是()。
(A)5
(B)6
(C)7
36.putchar()函数的功能是向终端输出()
(A)字符串
(B)单个字符
(C)一串数字
(D)一个实型变量的值
37.若已定义:
inta=3,b=2,c=1;
则表达式((!
a)||b>
c)&
(a<
c)的值是()
(A)0
(B)1
(C)2
(D)3
38.下列程序运行时,循环体的执行次数是()
{inti,j=3;
=j++;
i=i+2)
printf(“%3d”,i);
(C)3
(D)4
39.若已定义:
ints[3][4]={{1,2},{0,1},{3,4,5}},则s[2][2]的值是()
40.若要定义一个符号常量,下列选项中正确的是()
(A)#defineR=3;
(B)#defineR3;
(C)#defineR=3;
(D)#defineR3
41.下列程序的运行结果是()
fun()
Return–num;
{fun();
(B)5
(C)20
(D)19
42.下列程序段运行后变量s的值为()
inta[]={1,2,3,4,5,6,7};
inti,s=1,*p;
p=&
a[2];
4;
s*=*(p+i);
(A)260
(B)360
(C)210
(D)120
43.若已定义
{intnum;
charname[8];
floatscore;
则变量stu1占用了()内存字节
(A)15
(B)18
(C)14
(D)13
44.在对无符号数的位运算中,操作数左移两位相当于()
(A)乘以8
(B)乘以4
(C)除以8
(D)除以4
45.若文本文件data.txt的内容为“University”(不包含引号),则下列程序段的运行结果是()
FILE*fp;
char*str;
if((fp=fopen(“data.txt”,”r”))!
=NULL)
str=fgets(str,6,fp);
printf(“%s”,str);
(A)Univ
(B)Univer
(C)University
(D)Unive
46.下列叙述错误的是()
(A)表达式是构成C源程序的基本单元
(B)C源程序必须包含一个main()函数
(C)C语言函数体使用一对花括号‘{‘和’}’将构成函数的语句括起来
(D)一个C源程序可由一个或多个函数组成
47.若已定义:
inta,b,c;
则逗号表达式a=10,b=23,c=a+b的值为()
(A)33
(C)23
(D)66
48.若已定义:
intx=8,y=7;
语句printf(“%d+%d=%d\n”,x,y,x+y);
执行后的输出结果是()
(A)8+7=15
(B)15
(C)7+8=15
(D)8+7
49.能正确表示数学关系式5≤f<
10的C语言表达式是()
(A)(f>
=5)&
(f<
10)
(B)f>
=5|f<
10
(C)(f>
(D)(f>
=5)and(f<
50.若已定义:
floatx=1.5,y=3,z=5;
下列表达式与x+y/2*z计算结果不相符的是()
(A)x+y/2*z
(B)x+1/2.0*y*z
(C)x+1.0/2*y*z
(D)x+1/2*y*z
51.若已经定义:
inta[6]={2,1,3};
则元素a[3]的值为()
(D)0
52.若已定义
charstr1[20]={“university”},str2[20];
则()语句是正确的。
(A)str2=str1;
(B)scanf(“%s”,str2[]);
(C)printf(“%c”,str1);
(D)if(str1+20==str2)printf(“###\n”);
53.下列程序的运行结果是()
intfun(inta,intb)
{return(a*b);
intx=15,y=2,z;
z=fun(x,y);
printf(“%d*%d=%d\n”,x,y,z);
(A)30
(B)x*y=30
(D)15*2=30
54.下列叙述中错误的是()
(A)下列是正确的宏定义:
defineR45
(B)预处理命令行都必须以#号开始
(C)在程序中凡是以#号开始的语句行都是预处理命令行
(D)C程序在执行过程中对预处理命令行进行处理
55.若已定义:
inta=6;
int*p=&
a;
下列均能表示地址的是()
(A)a,p
(B)&
a,&
p
(C)a,*p
(D)&
a,p
56.下列程序段的运行结果是()
(B)16
(C)12
(D)15
57.若已定义
};
structstudents[3]={{301,18},{302,21},{303,19}};
structstudent*p=s;
则表达式的值为21的是()
(A)(*++p).age
(B)(*p++).age
(C)(p++)->
age
(D)*(++p)->
58.若已定义:
enumti{a1,a2=10,a3,a4=13};
则枚举常量a2和a3的值分别是()
(A)2和3
(B)1和2
(C)10和11
(D)10和2
59.下列选项中,均为合法整型常量的是()
(A)0x2h21025
(B)170-0180x18
(C)-1900131e3
(D)120-0120x12
60.若已定义:
charc;
inta;
floatx;
doubley;
则表达式c*a+x-y的值的数据类型为()
(A)double
(B)float
(C)int
(D)char
61.下列程序运行时若输入6,则输出结果是()
{intx;
scanf(“%d”,&
if(x--<
6)
printf(“%d\n”,x);
else
printf(“%d\n”,x++);
62.下列程序段运行结果中变量b的值是()
intb=3;
chars1=”action”,s2=s1;
b=strcmp(s1,s2);
(B)-1
63.若有下列程序段,则叙述正确的是()
(A)数组a的长度和p所指向的字符串长度相等
(B)*p与a[0]相等
(C)数组a中的内容和指针变量p中的内容相等
(D)a和p完全相同
64.下列程序的运行结果是()
{char*p=”Chinese”,*q=p+4;
printf(“%c\n”,q[-1]);
(B)s
(C)n
(D)e
65.一个结构体变量占用的内存大小是由()决定的。
(A)占内存容量最大的成员所需容量
(B)各成员所需内存容量之和
(C)最后一个成员所需内存容量
(D)第一个成员所需内存容量
66.若已定义:
intm=12,n=10,k;
语句k=m&
n;
执行后k的值为()。
(A)14
(C)6
67.当文件正常关闭时,fclose()函数的返回值是()
(A)-1
(D)一个非0值
68.若已经定义:
inti,a=0;
(A)while
(1)
a++;
(B)for(i=1;
++a;
i++)
a+=2;
(C)for(i=1;
a++)
(D)for(i=10;
i--)
a+=i;
69.下列程序段执行后s的值是()
(A)31
(B)76
70.下列程序段的运行结果是()
charstr[3][3]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’};
str[2][1]=’\0’;
(A)abcdefghi
(B)abcdefg
(C)abcdefg0
(D)abcdefg0i
71.下列程序的运行结果是()
#include<
intfun(inta[4][4])
{inti;
printf(“%2d”,a[i][1]);
printf(“\n”);
{inta[4][4]={1,2,2,3,1,0,0,0,2,1,0,0,0,1,9,8};
fun(a);
(A)2019
(B)2008
(C)2011
(D)2009
72.下列叙述正确的是()
(A)程序中使用带参数的宏时,参数类型要与宏定义时一致
(B)编译预处理命令行必须以分号结束
(C)宏名只能包含大写字母和数字字符
(D)#define是宏定义命令
73.若已定义
enumc