C语言33次试题及答案文档格式.docx
《C语言33次试题及答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言33次试题及答案文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
1.已知inti=10;
表达式"
5<
=i<
=10"
的值是(16)。
(考点:
关系运算表达式)
16(A)0(B)1(C)10(D)没有正确答案
2.求取满足式12+22+32+……+n2≤1000的n,正确的语句是(17)。
循环结构)
17(A)for(i=1,s=0;
(s=s+i*i)<
=1000;
n=i++);
(B)for(i=1,s=0;
n=++i);
(C)for(i=1,s=0;
(s=s+i*++i)<
n=i);
(D)for(i=1,s=0;
(s=s+i*i++)<
3.以下叙述中正确的是(18)。
循环语法)
18(A)C语言中所有的循环语句都是先判断条件再执行循环体
(B)break语句只能中断循环
(C)continue语句可以结束所有的循环
(D)C语言中,任意表达式都可作为循环条件,只要能做出0和非0的判断即可
4.设有以下定义:
structnode
{
intdata;
structnode*next;
}*p;
则以下的语句中正确的是(19)。
结构体指针、动态分配存储空间函数)
19(A)p=malloc(sizeof(structnode))(B)p=(structnode*)malloc(sizeof(structnode))
(C)*p=(structnode*)malloc(4)(D)p=(structnode)malloc(sizeof(structnode))
5.运行以下程序的输出结果为(20)。
枚举类型)
#include<
stdio.h>
voidmain()
enumcolor{Black=1,Red,Blue,Green};
enumcolorc1,c2;
c1=Red;
c2=Blue;
printf("
%d,%d\n"
c1,c2);
}
20(A)2,3(B)1,2(C)1,1(D)0,-1
6.若变量x和y都为int类型,x=100,y=200,下面程序段的输出结果是(21)。
逗号运算)
printf("
%d"
(x,y));
21(A)200(B)100(C)100200(D)输出不确定的值
7.以下程序的输出结果是(22)。
带参数的宏)
#definef(x)x*x
inta=6,b=2,c;
c=f(a+b)/f(a-b);
%d\n"
c);
22(A)-2.5(B)-2(C)64(D)4
8.C语言中fscanf函数的正确调用形式是(考点:
文件)
23(A)fscanf(文件指针,格式字符串,输出列表);
(B)fscanf(格式字符串,输出列表,文件指针);
(C)fscanf(格式字符串,文件指针,输入列表);
(D)fscanf(文件指针,格式字符串,输入列表);
9.设有定义:
inta=1,b=2,c=3;
,以下语句中执行效果与其它三个不同的是(24)。
if语句)
24(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;
10.以下选项中与if(a==1)a=b;
elsea++;
语句功能不同的switch语句是(25)。
switch语句)
25(A)switch(a)(B)switch(a==1)
{case1:
a=b;
break;
{case0:
default:
a++;
case1:
}}
(C)switch(a)(D)switch(a==1)
{default:
{case1:
case1:
case0:
}}
二、读程序回答问题(每个选择3分,共45分)
1.有如下程序:
函数、变量的作用域)
intk=1;
voidfun(intm)
m+=k;
k+=m;
{
chark='
D'
;
\n%d"
k-'
C'
);
/*①*/
inti=4;
fun(i);
\n%d,%d"
i,k);
/*② */
①处输出结果为(26)。
26(A)2(B)1(C)3(D)A、B、C参考答案都不对
②处输出结果为(27)。
27(A)4,1(B)5,6(C)4,6(D)A、B、C参考答案都不对
2.有如下程序(考点:
函数、字符数组)
voidfun(char*s)
inti;
charc;
c=s[0];
for(i=1;
s[i]!
='
\0'
i++)
s[i-1]=s[i];
s[i-1]=c;
chars[10]="
abcdefg"
i<
=3;
fun(s);
puts(s);
}
函数fun的功能是(28)。
28(A)左移一个字符,并将第一个字符放到字符串末尾
(B)右移一个字符,并将最后一个字符放到字符串开头
(C)删除第一个字符(D)删除最后一个字符
程序的运行结果是(29)。
29(A)bcdefga(B)defgabc(C)efgabcd(D)bcdefg
3.有下列程序(考点:
递归函数)
voidfun(intn)
{intm;
m=n/10;
if(m!
=0)fun(m);
putchar(n%10+'
0'
{intn;
scanf("
&
n);
if(n<
0)
{putchar('
-'
n=-n;
fun(n);
若输入整数-1234,请回答下面两个问题:
函数fun的调用次数为(30)。
30(A)5(B)4(C)3(D)2
程序的输出结果为(31)。
31(A)4321(B)1234(C)-4321(D)-1234
4.有下列程序(考点:
函数(地址参数)、指针运算)
voidfun1(int*x,int*y)
{int*z;
z=x;
x=y;
y=z;
voidfun2(int*x,int*y)
{intz;
z=*x;
*x=*y;
*y=z;
(*x)++;
(*y)++;
{inta=5,b=9;
fun1(&
a,&
b);
a=%d,b=%d\n"
a,b);
fun2(&
main函数中第一个printf输出结果为(32)。
32(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10
main函数中第二个printf输出结果为(33)。
33(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10
5.有如下程序(设其文件名为2-5.c)(考点:
命令行参数)
voidmain(intargc,char*argv[])
{inti;
char*p;
argc);
if(argc>
2)p=argv[1];
puts(p+1);
若运行该程序时,在命令提示符后输入('
↙'
表示回车换行符):
2-5file1file2file3↙
则执行printf("
时,输出结果为(34)。
34(A)1(B)2(C)3(D)4
执行puts(p+1);
时,输出结果为(35)。
35(A)file1(B)file2(C)ile1(D)ile2
6.有下列程序(考点:
字符数组、函数(地址参数))
string.h>
longfun(charstr[])
longs=0,t;
for(i=0;
str[i]!
{t=0;
while(str[i]>
&
&
str[i]<
9'
)
{t=t*10+str[i]-'
i++;
s=s+t;
returns;
charstring[]="
Welcome123To456Sichuan789"
longlen;
len=fun(string);
%ld\n"
len);
(1)程序运行的输出结果为(36)
36(A)123456789(B)9(C)1368(D)450
(2)该程序的功能是(37)
37(A)取出字符串中的数字子串连接起来
(B)统计数字子串在字符串中出现的次数
(C)将数字了串转换为整数并累加
(D)将字符串中的数字字符转换为数字,结果加起来乘以10
7.有如下程序:
字符数组、循环、switch语句)
{staticchars[]="
SSSWiLTECH1\11W\1WALLMP1"
intj;
charch;
for(j=2;
(ch=s[j])!
j++)
{switch(ch)
case'
A'
:
putchar('
a'
continue;
1'
break;
case1:
while((ch=s[++j])!
\n'
ch!
case9:
#'
E'
L'
default:
putchar(ch);
*'
}
\n"
①程序的运行结果是(38)。
38(A)SWiTCH*#(B)SSSWiTCH*#
(C)SWiTCH*#W#(D)SSSWiLTECHWWALLMP
②字符串"
中的“\1”是(39)。
39(A)字符1(B)十制制数值1(C)两个字符(D)八进制数值1
8.在下面程序中,若file.dat文件中原有内容为:
abc,则运行程序后file.dat文件中的内容为(40)。
文件打开方式)
{FILE*fp;
fp=fopen("
file.dat"
"
w"
fprintf(fp,"
def"
fclose(fp);
40(A)abcdef(B)abc(C)def(D)NULL
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.下面程序的功能是按学生的姓名(假设没有重名)查询其成绩排名和平均成绩。
查询可以连续进行,直到输入0时查询结束。
请填空。
结构体类型,顺序查找算法)
#defineNUM4
structstud
{intcode;
char*name;
floatscore;
};
structstudstu[]={2,"
liuying"
85.5,3,"
wangyong"
79.6,
4,"
ligang"
92.5,1,"
tianling"
88.2};
{charstr[10];
do
{prnitf("
Enteraname:
"
%s"
str);
NUM;
if(strcmp(①,str)==0)
{printf("
Name:
%s\n"
stu[i].name);
Code:
%3d\n"
stu[i].code);
Average:
%5.1f\n"
sut[i].score);
②;
if(③)printf("
Notfound.\n"
}while(strcmp(str,"
0"
)!
=0);
2.函数fun的功能是:
求出无符号十进制数n中包含0的个数,及各位数字的最大值。
最大值通过函数值返回,0的个数通过形参指针zero带回。
在main函数中输入n的值,调用fun函数并输出结果。
例如:
n=300800,则0的个数为4,各位数字的最大值为8。
求最值、整数的分解算法)
intfun(unsignedintn,int*zero)
{intcnt=0,max=0,t;
while(n!
=0)
{t=①;
if(t==0)cnt++;
if(max<
t)max=t;
n=n/10;
②=cnt;
returnmax;
{unsignedintn;
intzero,max;
Inputn:
%u"
max=fun(③);
max=%d,zero=%d\n"
max,zero);
3.以下程序的功能是把从键盘输入的字符依次存放在文件test.txt中,但是要过滤掉其中的数字字符,在输入字符‘%’并回车作为结束标志。
文件、字符串)
#include<
charfname[12]="
test.txt"
if((fp=fopen(fname,"
))==①)
Fileopenerror!
else
Pleaseentercharacters:
while((ch=getchar())!
%'
if(ch>
ch<
else
fputc(ch,③);
4.以下程序是建立一个带头结点的单向链表,并用随机函数为各个结点赋值。
函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
单链表)
stdlib.h>
typedefstructaa
{intdata;
structaa*next;
}NODE;
intfun(NODE*h)
{intsum=0;
①;
p=②;
while(p)
{if(p->
data%2==0)
sum+=p->
data;
p=③;
returnsum;
NODE*creatlink(intn)
{NODE*h,*p,*s;
h=p=(NODE*)malloc(sizeof(NODE));
=n;
{s=(NODE*)malloc(sizeof(NODE));
s->
data=rand()%16;
next=p->
next;
p->
next=s;
p=p->
next=NULL;
returnh;
outlink(NODE*h)
{NODE*p;
p=h->
->
%d"
p->
data);
{NODE*head;
inteven;
head=creatlink(12);
head->
data=9000;
outlink(head);
even=fun(head);
\nThesumofevennumbers:
%d\n"
even);
5.程序的功能是计算
,其中,m与n为两个正整数。
请在程序中编号处填写适当的表达式,使程序得出正确的结果。
(考点:
循环、阶乘算法)
intfun(intx)
{longs=1;
=x;
①;
return②;
{intm=12,n=8;
P=%f\n"
1.0*fun(m)/fun(n)/③);
第三十三级考试
第一部分软件技术基础
一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)
1~10:
BAAAB AAABA
二、单项选择题:
(每小题1分,共5分)
1~5:
BDCAD
第二部分C与C++语言程序设计
一、单项选择题(每小题1分,共10分)
1、B2、A3、D4、B5、A6、A7、D8、D9、C10、B
二、读程序题(每个选择3分,共45分)
1、BC2、AB3、BD4、BC5、DC
6、CC7、CD8、C
三、程序填空题(每空2分,共30分)
1、①stu[i].name②break③i>
=NULL
2、①n%10②*zero③n,&
zero
3、①NULL②continue③fp
4、①NODE*p②h->
next③p->
next
5、①s=s*i②s③fun(m-n)