2024年C语言考试题及答案
在各个领域,我们都经常看到试题的身影,试题是考核某种技能水平的标准。你所了解的试题是什么样的呢?下面是小编整理的2024年C语言考试题及答案,希望对大家有所帮助。
C语言考试题及答案 1
一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题卡相应位置上涂黑,答在试卷上不得分。
(1) 所谓“裸机”是指
A.单片机
B.单板机
C.不装备任何软件的计算机
D.只装备操作系统的计算机
(2) 下列存储器中,存取速度最快的是
A.软盘
B.硬盘
C.光盘
D.内存
(3) 系统软件中最重要的是
A.操作系统
B.语言处理程序
C.工具软件
D.数据库管理系统
(4) CPU处理的数据基本单位为字,一个字的字长
A.为8个二进制位
B.为16个二进制位
C.为32个二进制位
D.与CPU芯片的型号有关
(5) 打印当前屏幕内容应使用的控制键是
A.Scroll-Lock
B.Num-Lock
C.PgDn
D.PrtSc(Print Screen)
(6) 能将高级语言源程序转换成目标程序的是
A.调试程序
B.解释程序
C.编译程序
D.编辑程序
(7) 二进制数1110111.11转换成十进制数是
A.119.375
B.119.75
C.119.125
D.119.3
(8) 十六进制数FF.1转换成十进制数是
A.255.0625
B.255.125
C.127.0625
D.127.125
(9) 3.5英寸软盘片的一个角上有一个滑动块,如果移动该滑块露出一个小孔,则该软盘
A.不能读但能写
B.不能读也不能写
C.只能读不能写
D.能读写
(10) 控制键^C的功能为
A.终止当前操作
B.系统复位
C.暂停标准输出设备的输出
D.结束命令行
(11) COMMAND.COM为命令处理程序,DOS系统启动后,它
A.驻留在外存,需要时再装入内存
B.常驻内存,包含所有内部命令
C.不能处理外部命令
D.不能处理后缀为.EXE的可执行文件
(12) 为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令
A.REN *.PAS *.?AS
B.REN PAS P
C.REN *.PAS *.P
D.REN *.PAS *.P??
(13) 设当前盘中文件XY.C的路径为\A\B\XU,当前目录为\A\B。为了查看文件XY.C的内容,应使用命令
A.TYPE XU\XY.C
B.TYPE \XU\XY.C
C.DIR XU\XY.C
D.DIR \A\B\XU\XY.C
(14) 要将提示符改成当前盘当前目录后加一个大于号">",应使用命令
A.PROMPT
B.PROMPT $p$g
C.PROMPT $$
D.PROMPT C\>
(15) 设C盘根目录中有一个批处理文件A.BAT,当前盘为A盘。为了执行该批处理文件,下列命令中一定正确的是
A.C:\A
B.C:A.BAT
C.A.BAT
D.\A.BAT
(16) 设当前盘为C盘,将A盘根目录下的文件目录信息存放到当前盘当前目录下的文件AB中,应使用命令
A.TYPE A:\>AB
B.DIR >AB
C.DIR A:\>AB
D.DIR \>AB
(17) 可执行文件ABC.EXE所需要的输入数据已经按格式存放在文件XYZ中,要求将执行结果在打印机上打印输出。下列命令中正确的是
A.ABCXYZ
C.ABC>XYZPRN
(18) 在当前盘当前目录下有一个文件A.BAT,其内容为
CD \
MD \XYZ\AB\B\C
CD XYZ\AB\B
在正确执行上述文件后,接着执行下列命令时,不会发生错误的是
A.MD C
B.RD \XYZ
C.RD C
D.RD B
(19) 下列命令组中两个命令互相等价的是
A.TYPE AB.TXT 与 DIR AB.TXT
B.DISKCOMP A: B: 与 COMP A:*.* B:*.*
C.TYPE AB.TXT>>XY.TXT 与 COPY AB.TXT XY.TXT
D.TYPE AB.TXT>XY.TXT 与 COPY AB.TXT XY.TXT
(20) 设A盘为启动盘,其目录结构为
其中文件AUTOEXEC.BAT的内容如下:
MD \XYZ
CD \DOS\USER
则由A盘启动成功后,A盘的当前目录是
A.\DOS\USER
B.\XYZ
C.根目录
D.\DOS(21) 在C语言提供的合法的关键字是
A.swicth
B.cher
C.Case
D.default
(22) 在C语言中,合法的字符常量是
A.‘\084’
B.‘\x43’
C.‘ab’
D.“\0”
(23) 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是
A.1
B.2
C.2.0
D.2.5
(24) 合法的数组定义是
A.int a[]="string";
B.int a[5]={0,1,2,3,4,5};
C.vhst s="string";
D.char a[]={0,1,2,3,4,5};
(25) 设a为整型变量,不能正确表达数学关系:1010&&a>15
D.!(a<=10)&&!(a>=15)
(26) 若t为double类型,表达式t=1,t5,t++的值是
A.1
B.6.0
C.2.0
D.1.0
(27) 若有定义和语句:
char s[10]:s="abcd";printf("%s\n",s);
则结果是(以下u代表空格)
A.输出abcd
B.输出a
C.输出abcduuuuu
D.编译不通过
(28) 若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);
则输出结果是:
A.10,20
B.10,10
C.20,10
D.20,20
(29) 若有以下定义和语句:
int u=010,v=0x10,w=10;
printf("%d,%d,%d\n,u,v,w);
则输出结果是:
A.8,16,10
B.10,10,10
C.8,8,10
D.8,10,10
(30) 若有以下定义和语句
char c1=’b’,c2=’e’;
printf("%d,%c\n",c2-c1,c2-’a’+"A");
则输出结果是:
A.2,M
B.3,E
C.2,E
D.输出项与对应的格式控制不一致,输出结果不确定
(31) 若有以下定义:
char s[20]="programming",*ps=s;
则不能代表字符o的表达式是
A.ps+2
B.s[2]
C.ps[2]
D.ps+=2,*ps
(32) 若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是
for (i=5;i;i--)
for(j=0;j<4;j++){...}
A.20
B.25
C.24
D.30
(33) 若有以下定义和语句:
char *s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是
A.4
B.5
C.9
D.10
(34) 若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是
A.*p
B.a[10]
C.*a
D.a[p-a]
(35) 下面程序的输出是
main()
{ char *s="121";
int k=0, a=0, b=0;
do {k++;
if(k%2==0) {a=a+s[k]-’0’;
continue;}
b=b+s[k]-’0’;
a=a+s[k]-’0’;
}
while (s[k+1]);
printf("k=%d a=%d b=%d\n",k,a,
B.
A.k=3 a=2 b=3
B.k=3 a=3 b=2
C.k=2 a=3 b=2
D.k=2 a=2 b=3
(36) 下面程序的输出是
main()
{ unsigned a=32768;
printf("a=%d\n",a);
}
A.a=32768
B.a=32767
C.a=-32767
D.a=-1(37) 若有以下定义:
float x;int a,b;
则正确的switch 语句是
A.switch(x)
B.switch(x)
{ case1.0:printf("*\n"); { case1,2:printf("*\n");
case2.0:printf("**\n"); case3:printf("**\n");
} }
C.switch (a+
B.
D.switch (a+
B.;
{ case 1:printf("\n"); { case 1:printf(."*\n");
case 1+2:printf("**\n"); case 2:printf("**\n");
} }
(38) 若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行符,/u代表空格):
1u2
AuBuC
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是
A.scanf("x=%d y+%d",&x,&y);a=get);b=get);c=get);
B.scanf("%d %d",&x,&y);a=get);b=get);c=get);
C.scanf("%d%d%c%c%c,&x,&y,&a,&b,&
C.;
D.scanf("%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&
C.;
(39) 以下程序输出的结果是
#include
#include
main()
{ char w[][10]={"ABCD","EFGH","IJKL","MNOP"},K;
for (k=1;k<3;k++)
printf("%s\n",&w[k][k]);
}
A.ABCD
B.ABCD
FGH EFG
KL IJ
M
C.EFG
D.FGH
JK KL
O
(40) 若有以下的定义:
int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a;
则值为3的表式是
A.p+=2, *(p++)
B.p+=2,*++p
C.p+=3, *kp++
D.p+=2,++*p
(41) 假定所有变量均已正确说明,下列程序段运行后x的值是
a=b=c=0;x=35;
if(!a)x--;
else if(
B.;
if(
C.x=3;
else x=4;
A.34
B.4
C.35
D.3
(42) 在以下一组运算符中,优先级最高的运算符是
A.<=
B.=
C.%
D.&&
(43) 若有以下定义和语句:
int w[2][3],(*pw)[3];
pw=w;
则对w数组元素非法引用是
A.*(w[0]+2)
B.*(pw+1)[2]
C.pw[0][0]
D.*(pw[1]+2)
(44) 若有以下程序片段:
char str[]="ab\n\012\\\"";
printf(",strlen(str));
上面程序片段的输出结果是
A.3
B.4
C.6
D.12
(45) 函数调用:strcat(strcpy(str1,str2),str3)的功能是
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2之后再复制到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1之后再将串str1复制到串str3中
(46) 以下对C语言函数的有关描述中,正确的是
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
(47) 以下叙述中不正确的是
A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
B.在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。
C.在C中,外部变量的隐含类别是自动存储类别。
D.在C中,函数形参可以说明为register变量。
(48) 以下程序的输出结果是
#include
subl(char a,char
B.{char c; c=a;a=b;b=c;}
sub2(char* a,char
B.{char c; c=*a;*a=b;b=c;}
sub3(char* a,char*
B.{char c; c=*a;*a=*b;*b=c;} { char a,b;
a=’A’;b=’B’;sub3(&a,&
B.;puta);put
B.;
a=’A’;b=’B’;sub2(&a,
B.;puta);prt
B.;
a=’A’;b=’B’;sub1(a,
B.;puta);put
B.;
}
A.BABBAB
B.ABBBBA
C.BABABA
D.BAABBA
(49) 设有如下定义:
struct sk
{int a;float b;}data,*p;
若有p=&data;,则对data中的a域的正确引用是
A.(*p).data.a
B.(*p).a
C.p->data.a
D.p.data.a
(50) 以下对枚举类型名的定义中正确的'是
A.enum a={one,two,three};
B.enum a {one=9,two=-1,three};
C.enum a={"one","two","three"};
D.enum a {"one","two","three"};
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡 【1】 至 【20】序号的横线上,答在试卷上不得分。
(1) 与十进制数101等值的二进制数为 【1】 。
(2) DOS命令分为内部命令和外部命令,XCOPY命令属于 【2】 。
(3) 设当前盘为A盘,当前系统提示符为">",在不改变当前盘的情况下,显示C盘的当前目录的路径,应使用命令 【3】 。
(4) 自动批处理文件名必须是 【4】 。
(5) 设当前盘当前目录下有两个文件W.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为 【5】 。
(6) 请写出以下数学式的C语言表达式 6
──.
a
───
b.c
(7) 若已知a=10,b=20,则表达式!ab)
printf("****y%d\n",y);
else
printf("####x=%\n",x);
(11) 在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是 11 函数.──
(12) 若函数fun的类型void,且有以下定义和调用语句:
#define M 50
main()
{ int a[M];
. . .
fun(a);
. . .
}
定义fun函数首部可以用三种不同的形式,请写出这三种形式: 12 .13 .14
─ ─ ─
(注意:①形参的名字请用q,②使用同一种风格).
(13) 若给fun函数的形参s传送字符串:"uuuu6354abc",则函数的返回值是 15
─.
log fun(char s[]) {long n;int sign;
for(;isspace(*s);s++); sign+(*s==’-’)?-1:1;
if(*s==’+’‖*s==’-’s++; for(n=0;isdigit(*s);s++)
n=10*n+(*s-’0’); return sign * n;
(14) 以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.
void fun (char *w,char x,int *n)
{ int i,p;
p=0;
w[*n]=x;
while (x>w[p]) 16
──;
for(i=*n;i>p;i--)w[i]= 17
─;
w[p]=x;
++ *n;
}
(15) fun1函数的调用语句为:fun1(&a,&b,&c); 它将三个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放量大数.请填空.
void fun2 (int *x,int *y)
{ int t;
t=*x; *x=*y;*y=t;
}
void fun1 (int *pa,int *pb,int *pc)
{ if(*pc>*pb) fun2( 18)
───;
if(*pa<*pc)fun2(19)
──;
if(*pa<*pb)fun2(20)
──; }
参考答案
一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。
(1)C (2)D (3)A (4)D (5)D (6)C 7)B (8)A (9)C (10)A
(11)B (12)C (13)A (14)B (15)A (16)C (17)D (18)C (19)D (20)C
(21)D (22)B (23)C (24)D (25)A (26)D (27)D (28)D (29)A (30)B
(31)A (32)A (33)A (34)B (35)C (36)C (37)C (38)D (39)D (40)A
(41)B (42)C (43)B (44)C (45)C (46)A (47)C (48)A (49)B (50)B
二、填空题(每空2分,共40分)
(1) 1100101或(1100101)2
(2) 外部命令(答 外部 不扣分)
(3)cd c:(cd与C:中间至少要有一个空格)
(4)AUTOEXEC.BAT
(5)COPY W.TXT+P.TXT 或copy w.txt+p.txt w.txt
(6)a/(b*c)或a/(a*b)或a/b/c 或a/c/b
(7)1
(8)###a=26,b=13,c=19
(9)*(p+5)或p[5]
(10)if(a<=b){x=1;printf("####x=%d\n",x);}else {y=2;printf("****y=%d\n",y);}
或if(a>b){y=2;printf("****y=%d\n",y);}else{x=1;printf("####"x=%d\n",x);}
或if(a<=b) printf("####"x=%d\n",x=1);else printf("****y=%d\n",y=2);
或if(a>b) printf("****y=%d\n",y=2);else printf("####"x=%d\n",x=1);
(11)rewind或 fseek
(12)(13)(14) void fun(int *q); 或 void fun(q) int *q;
void fun(int q[]); void fun(q) int q[];
void fun(int q[M]); void fun(q) int q[M];
说明:以上两组答案中(A)三个答案可以任意次序 (B)标识符q可以用字母或下划线开头以字母、数字和下划线组成的名字代替。(C)两种风格可以混用。
(15)6354
(16)p++ 或 ++p 或 p=p+1 或p+=1或p=1+p
(17)w[i-1]或 *(w+i-1)
(18) pc ,pb 或 pb , pc
(19)pc , pa 或 pa , pc
(20)pb , pa或 pa , pb
C语言考试题及答案 2
一、选择题。
1). 下列关于栈的描述中正确的是( )
A.在栈中只能插入元素而不能删除元素
B.在栈中只能删除元素而不能插入元素
C.栈是特殊的线性表,只能在一端插入或删除元素
D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
正确答案:C
答案解析:栈是限定在一端进行插入与删除的线性表,在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
2). 在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则循环队列中的元素个数为( )
A.2
B.3
C.4
D.5
正确答案:B
答案解析:循环队列中,rear表示尾指针,front表示头指针,当有元素入队时,rear=rear+1,而元素出队的时候,front=front+1,当rear值大于front值时,队列中的元素个数为rear-front,当rear的值小于front时,列队中的元素个数为rear-front+m(m表示队列的容量)。
3). 数据处理的最小单位是( )
A.数据
B.数据元素
C.数据项
D.数据结构
正确答案:C
4). 栈和队列的共同点是( )
A.都是先进后出
B.都是先进先出
C.只允许在端点处插入和删除元素
D.没有共同点
正确答案:C
5). 在深度为5的'满二叉树中,叶子结点的个数为
A.32
B.31
C.16
D.15
正确答案:C
答案解析:满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
6). 一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是( )
A.1,2,3,A,B,C
B.C,B,A,1,2,3
C.C,B,A,3,2,1
D.1,2,3,C,B,A
正确答案:C
答案解析:栈是按照″先进后出″或″后进先出″的原则组织数据的。所以出栈顺序是CBA321。
C语言考试题及答案 3
一、选择题。
1). 下列叙述中正确的是( )。
A.调用printf( )函数时,必须要有输出项
B.使用put )函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出
D.调节get )函数读入字符时,可以从键盘上输入字符所对应的ASCII码
正确答案:B
答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。
2). 以下结构体类型说明和变量定义中正确的是( )
A.typedef struct { int n; char c; } REC; REC t1,t2;
B.struct REC ; { int n; char c; }; REC t1,t2;
C.typedef struct REC; { int n=0; char c=′A′; } t1,t2;
D.struct { int n; char c; } REC; REC t1,t2;
正确答案:A
答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。
3). 若实体A和B是一对多的联系,实体B和C是一对一的.联系,则实体A和C的联系是( )
A.一对一
B.一对多
C.多对一
D.多对多
正确答案:B
答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。
4). 关于C语言的变量,以下叙述中错误的是( )
A.所谓变量是指在程序运行过程中其值可以被改变的量
B.变量所占的存储单元地址可以随时改变
C.程序中用到的所有变量都必须先定义后才能使用
D.由三条下划线构成的符号名是合法的变量名
正确答案:B
答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。
5). 当变量c的值不为2、4、6时,值也为″真″的表达式是( )
A.(c==2)||(c==4)||(c==6)
B.(c>=2 && c<=6)&& !(c%2)
C.(c>=2 && c<=6)&&(c%2!=1)
D.(c>=2 && c<=6) || (c!=3) || (c!=5)
正确答案:D
答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2 && c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。
6). 在C语言中,函数返回值的类型最终取决于
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
正确答案:A
答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。
C语言考试题及答案 4
一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)
(1)下列数据结构中,属于非线性结构的是
A.循环队列
B.带链队列
C.二叉树
D.带链栈
(2)下列数据结果中,能够按照“先进后出”原则存取数据的是
A.循环队列
B.栈
C.队列
D.二叉树
(3)对于循环队列,下列叙述中正确的是
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
(4)算法的空间复杂度是指
A.算法在执行过程中所需要的计算机存储空间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
(5)软件设计中划分模块的一个准则是
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D. 高内聚高耦合
(6)下列选项中不属于结构化程序设计原则的是
A.可封装。
B. 自顶向下。
C.模块化。
D. 逐步求精。
(7)软件详细设计产生的图如下:
该图是
A.N-S图
B.PAD图
C.程序流程图
D. E-R图
(8)数据库管理系统是
A.操作系统的一部分
B.在操作系统支持下的系统软件
C.一种编译系统
D. 一种操作系统
(9)在E-R图中,用来表示实体联系的图形是
A.椭圆图
B.矩形
C.菱形
D. 三角形
(10)有三个关系R,S和T如下:
其中关系T由关系R和S通过某种操作得到,该操作为
A.选择
B.投影
C.交
D.并
(11)以下叙述中正确的是
A.程序设计的任务就是编写程序代码并上机调试
B.程序设计的任务就是确定所用数据结构
C.程序设计的任务就是确定所用算法
D.以上三种说法都不完整
(12)以下选项中,能用作用户标识符的是
A.void
B.8_8
C._0_
D.unsigned
(13)阅读以下程序
#include
main()
{ int case; float printF;
printf(“请输入2个数:”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f ”,case,printF);
}
该程序编译时产生错误,其出错原因是
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
(14)表达式:(int)((double)9/2)-(9)%2的值是
A.0
B.3
C.4
D.5
(15)若有定义语句:int x=10;,则表达式x-=x+x的值为
A.-20
B.-10
C.0
D.10
(16)有以下程序
#include
main()
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d ”,a=2*b);
}
程序运行后的输出结果是
A.0,0
B.1,0
C.3,2
D.1,2
17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是
A.if(a>B. c=a,a=b,b=c;
B.if(a>B. {c=a,a=b,b=c;}
C.if(a>B. c=a;a=b;b=c;
D.if(a>B. {c=a;a=b;b=c;}
(18)有以下程序
#include
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%d ”,C.;
}
程序运行后的输出结果是
A.3
B.5
C.7
D.9
(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是
A.if((a>b)&&(b>C.) k=1;
else k=0;
B.if((a>b)||(b>C. k=1;
else k=0;
C.if(a<=B. k=0;
else if(b<=C.k=1;
D.if(a>B. k=1;
else if(b>C.k=1;
else k=0;
20)有以下程序
#include
main()
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=’a’&&s[i]<=’z’) n++;
printf(“%d ”,n);
}
程序运行后的输出结果是
A.0
B.2
C.3
D.5
(21)有以下程序
#include
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d ”,k,n);
}
程序运行后的.输出结果是
A.0 2
B.1 3
C.5 7
D.1 2
(22)有以下定义语句,编译时会出现编译错误的是
A.char a=’a’;
B.char a=’ ’;
C.char a=’aa’;
D.char a=’x2d’;
(23)有以下程序
#include
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d ”,c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是
A.E,68
B.D,69
C.E,D
D.输出无定值
(24)有以下程序
#include
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
main()
{ int a=1;
fun(a); printf(“%d ”,a);}
程序运行后的输出结果是
A.32
B.12
C.21
D.22
(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能
#define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i
{ max=MIN;
if(max
return max;
}
造成错误的原因是
A.定义语句int i,max;中max未赋初值
B.赋值语句max=MIN;中,不应给max赋MIN值
C.语句if(max
D.赋值语句max=MIN;放错了位置
(26)有以下程序
#include
main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d ”,m,n,*p,*q);
}
程序运行后的输出结果是
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是
A.p=a
B.q[i]=a[i]
C.p=a[i]
D.p=&a[2][1]
(28)有以下程序
#include
#include
main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s ”,p);
}
程序运行后的输出结果是
A.9,One*World
B.9,One*Dream
C.10,One*Dream
D.10,One*World
(29)有以下程序
#include
main()
{ int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i[=0;
}
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);
}
A.3 3 4 4
B.2 0 5 0
C.3 0 4 0
D.0 3 0 4
(30)有以下程序
#include
#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d ”,strlen(a),sizeof(a));
}
程序运行后的输出结果是
A.7,4
B.4,10
C.8,8
D.10,10
(31)下面是有关C语言字符数组的描述,其中错误的是
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
(32)下列函数的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’’) {a++,b++;} }
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’’
(33)设有以下函数
void fun(int n,char * s) {……}
则下面对函数指针的定义和赋值均是正确的是
A.void (*pf)(); pf=fun;
B.viod *pf(); pf=fun;
C.void *pf(); *pf=fun;
D.void (*pf)(int,char);pf=&fun;
(34)有以下程序
#include
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d ”,s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行以后的输出结果是
A.7
B.8
C.9
D.10
(35)有以下程序
#include
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d ’,s,t);
}
程序运行后的输出结果是
A.10,64
B.10,10
C.64,10
D.64,64
(36)下面结构体的定义语句中,错误的是
A.struct ord {int x;int y;int z;}; struct ord a;
B.struct ord {int x;int y;int z;} struct ord a;
C.struct ord {int x;int y;int z;} a;
D.struct {int x;int y;int z;} a;
(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是
A.char str[ ]=”string”;c=str;
B.scanf(“%s”,C.;
C.c=get);
D.*c=”string”;
(38)有以下程序
#include
#include
struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;
}
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
程序运行后的输出结果是
A.1001,ZhangDa,1098.0
B.1001,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1001,ChangRong,1202.0
(39)若有以下程序段
int r=8;
printf(“%d ”,r>>1);
输出结果是
A.16
B.8
C.4
D.2
(40)下列关于C语言文件的叙述中正确的是
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
【C语言考试题及答案】相关文章:
C语言经典例题及答案12-05
C语言试题及答案07-26
C语言模拟试题及答案03-28
C语言测试试题及答案08-02
C语言考前练习试题及答案03-28
C语言考试试题及答案06-12
C语言测试题及答案07-03
C语言笔试试题及答案12-05