重庆市计算机等级考试C语言二级考试试题及答案Word下载.docx
《重庆市计算机等级考试C语言二级考试试题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《重庆市计算机等级考试C语言二级考试试题及答案Word下载.docx(51页珍藏版)》请在冰豆网上搜索。
编译程序为值表中各标识符分
voidmain()
{inta=0;
a+=(a=12);
printf("
%d\n"
}
(A)0(B)6(C)12(D)24
7.若x,y为实数类型的变量,要判断x,y相等,最好使用下列关系表达式
15.若有定义inta,b,x;
且变量都已正确赋值,下面选项中合法的if语句是(
(A)if(a==b)x++;
(B)if(a=<
b)x++;
(C)if(a<
>
(D)if(a=>
16.执行下面的程序后,变量a的值是(
#include<
stdio.h>
#defineSQR(X)X*X
inta=10,k=2,m=3;
a/=SQR(m)/SQR(k);
printf("
%d\n"
voidmain()
{
(A)10(B)1(C)5
17.若变量t为double类型,表达式(t=1,t+5,t)
(A)1(B)6.0(C)1.0
18.
在C语言中,下面关于数组的描述中正确的是
二、基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各小题的空白
处。
每空2分,共10分
1•在C语言中,函数一般由两个部分组成,它们是函数首部和①。
2•任何程序都可调用标准函数exit(),当它被调用时就②程序的执行。
3•—个C语言程序在可以被执行之前,需要经过的4个处理程序是:
编辑程序、预处理程序、编译程序
和③。
4•在C语言中无固有的输入和输出语句,但是用C语言编写的程序可以用函数调用的形式来实现输入、
输出,这些函数由④提供。
5.C标准库函数rewind的作用是⑤。
备选项:
(A)主函数
(B)函数体
(C)函数首部
(D)用户自定义函数
(E)终止
(F)使读与指针指向文件的开头
(G)标准I/O库/系统
(H)连接程序
(J)判断文件指针是否指向文件末尾
三、程序填空题。
(每空2分,共20分)。
1.下面程序的功能是从键盘上输入一行字符,将其中的小写字母转换为大写字母后输出。
请填空完善程序。
#inelude<
{charc;
while((c=\n'
)
if(c>
='
&
c<
z'
)printf("
c-32);
2.下面程序的功能是从当前目录下的文本文件“f1.txt”中读取前10个字符,依次显示在屏幕上;
如果
文本文件中不足10个字符,则读完为止;
请填空完善程序。
#include<
{FILE*fp;
inti;
charc;
if(②==NULL)
{printf("
Can'
topenthisfile!
\n”);
return;
for(i=0;
i<
10;
i++)
{if(feof(fp))
break;
c=fgetc(fp);
putchar(c);
fclose(fp);
3.下面程序的功能是输出数组中的各字符串,请填空完成程序。
#include<
{char*a[]={"
abcd"
"
12345"
efghijk"
67890"
};
char③;
intj=0;
p=a;
for(;
j<
4;
j++)
④;
4.下面函数mfc用于求取两个正整数的最大公因子,请填空完善函数。
intmcf(inta,intb)
{inttemp;
while(b)
{temp=⑤;
a=b;
b=temp;
returna;
5.下面程序的功能是将字符串str的内容颠倒过来并输出,请填空完善程序。
{charstr[]={"
abcdefg"
},*p1,*p2,ch;
p1=p2=str;
while(*p2!
\0'
p2++;
⑥;
while(p1<
p2)
{ch=*p1,*p^*p2,*p2=ch;
⑦;
p2--;
puts(str);
6.下面函数yh的功能是构成一个杨辉三角形,请填空完成该函数。
#defineN11
voidyh(inta[][N])
{intj,k;
for(j=1;
N;
{a[j][1]=1;
a[j][j]=⑧;
for(⑨;
for(k=2;
k<
j;
k++)
a[j][k]=⑩+a[j-1][k];
四、阅读程序题(每小题5分,共30分
1.下面程序的输出结果是()。
{voidfun(int*k);
intw=5;
fun(&
w);
voidfun(int*k)
{(*k)++;
printf("
*k++);
2.下面程序的输出结果是()。
{charch[2][5]={"
1234"
5678"
},*p[2];
intj,k,s=0;
for(k=0;
2;
p[k]=ch[k];
k++)for(j=0;
p[k][j]>
'
0'
p[k][j]<
9'
;
j+=2)s=1O*s+p[k][j]-'
O'
s=%d\n"
s);
3.下面程序的输出结果是()。
intfunc(int,int);
{intk=4,m=1,p;
p=func(k,m);
%d,"
p);
intfunc(inta,intb)
{staticintm=1,n=2;
n+=m+1;
m=n+a+b;
returnm;
4.下面程序的输出结果是()。
{inta[10]={1,2,3,4,5,6,7,8,9,10},k,s,i;
doubleave;
for(k=s=i=0;
{if(a[i]%2)
continue;
s+=a[i];
k++;
}if(k!
=0)
{ave=s/k;
%d,%f\n"
k,ave);
,则输出结果是()。
5.在下列程序中,若输入为:
todayisMonday!
<
CR>
voidmain()
{chars[40],c,*str=s;
intnum=0,word=0;
gets(str);
while((c=*str++)!
{if(c=='
word=0;
elseif(word==0)
{word=1;
num++;
}printf("
%dwords\n"
num);
6.下列程序的输出结果是()。
unsignedf(unsignednum)
{unsignedk=1;
do
{k*=num%10;
num/=10;
}while(num);
returnk;
{intx=35,y=550;
%d,%d\n"
f(x),f(y));
五、编程序。
(每小题10分,共20分)
1.函数delspace的功能是删除一个字符串中所有的空格。
例如,输入字符串为"
Thisisastring"
则
输出结果为"
Thisisastring"
。
测试用主函数如下所示,请编制函数delspace。
string.h>
{char*delspace(char*str);
chars[81],*ds;
gets(s);
ds=delspace(s);
\nResult:
%s\n"
ds);
2.已知两个3位数abc和cba之和为1333(即abc+cba=1333),编程序求出3个数字a、b和c。
二级C语言笔试试卷(A)参考答案
(2007年4月)
(每小题1分,共20分)
BBDCCDCCCDAAACABCCBD
4.5,6.0000005.3words6.15,0
1.参考程序及评分标准
char*delspace(char*str)
{char*p=str;
〃2分
while(*p)
{if(*p=='
strcpy(p,p+1);
else
p++;
}〃6分
returnstr;
2.参考程序及评分标准
//参考程序一一
{intn,a,b,c;
for(n=100;
*1000;
n++)
{a=n/100;
b=n/10%10;
c=n%10;
if(a*100+b*10+c+c*100+b*10+a==1333)
abcis:
%d%d%d\n"
a,b,c);
}//8分
//参考程序二
{intn,m,a,b,c;
//2分
for(a=1;
a<
a++)
for(b=0;
b<
b++)for(c=0;
c++){n=a*100+b*10+c;
m=c*100+b*10+a;
if(n+m==1333)
//8分
2007年11月
1.一题为客观题,请将答案涂在机读答题卡上
2.请将二、三、四、五题的答案做在答题纸上
一.单项选择题。
(每小题1分,共20分)
1.一个C程序的执行是从()。
(A)本程序的main函数开始
(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
(C)本程序的main函数开始,到本程序文件的最后一个函数结束
(D)本程序文件的第一个函数开始,到本程序main函数结束
2.设有C语句:
intx=3,y=4,z=5;
则下面表达式中值为0的是()。
(A)x&
y(B)x<
=y
(C)x||y+z&
y-z(D)!
((x<
y)&
!
z||1))
3.以下有关宏替换的叙述不正确的是()。
(A)宏替换不占用运行时间(B)宏名无类型
(C)宏替换只是字符串替换;
(D)宏替换是在运行时进行的
4.在标准库函数的调用形式"
fread(buffer,size,count,fp);
”中,参数buffer代表的是()。
(A)一个整型变量,代表要读入的数据总数
(B)一个文件指针,指向要读的文件
(C)一个指针,指向读入数据存放的首地址
(D)—个存储区,存放要读的数据项
5.位运算中,操作数每左移一位,在没有溢出的情况下其结果相当于(
(A)操作数乘以2
(B)操作数除以2
(C)操作数除以4
操作数乘以4
6.下面程序运行后,变量m的值为(
{intm,n,k;
m=(n=4)+(k=10-7);
printf(”m=%d\n”,m);
(A)4(B)3
(C)7
(D)14
7.下面程序运行结果(或出现的情况)是()。
{intx=3,y=0,z=0;
if(x=y+z)
printf(”****"
printf("
####\n"
(A)有语法错误不能通过编译
(B)输出:
****
(C)可以通过编译,但不能通过连接,因而不能运行
switch(i)
{case9:
i+=1;
case10:
case11:
i-=1;
default:
(D)9
(D)a=b+c=1;
(A)10(B)11(C)12
13.在下列选项中,不正确的赋值语句是()。
(A)t/=5;
(B)n1=(n2=(n3=0));
(C)k=i==j;
14.下面C程序运行后变量x的值是()。
{inta,b,c,x;
a=b=c=0;
x=35;
if(!
a)
x--;
elseif(b)
if(c)
x=3;
x=4;
printf(”%d\n"
x);
(A)34(B)4(C)35(D)3
15.设有以下宏定义:
#defineN3
#defineY(n)(N+1*n)
则执行语句:
z=2*(N*Y(5+1));
后,z的值为()。
(A)30(B)72(C)48(D)54
16.在以下的四个运算符中,优先级最低的运算符是()。
(A)<
=(B)/(C)!
=(D)&
17.已知’E'
的ASCII码是69,则执行下面C语句的结果是()。
printf("
%c"
'
D'
-'
8'
+'
5'
(A)66(B)A(C)B(D)E
18.设有以下语句:
inta=3,b=6,c;
c=aAb<
执行后c的低8位二进制值是()。
(A)00011011(B)00010100(C)00011100(D)00011000
19.在C语言中,以下叙述错误的是()。
(A)函数被调用时,系统才为形参分配内存
(B)实参和对应形参的数据类型必须一致
(C)实参可以是变量、常量或表达式
(D)形参可以是变量、常量或表达式
20.字符串常量"
abc\nt\012\xa1*2"
在内存中所占的存储空间节数是()。
(A)11(B)13(C)15(D)18
二•基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项,并讲其号码填入各小题的空白处。
每空2分,共10分)
1.函数首部intmain(intargc,char*argv[])中argc表示的是①。
2.C语言能处理的文件类型可以是文本文件和②~。
3.下面语句定义了共用体(联合体)变量a,则a占用③—个字节。
uniondata{shortinti;
charc;
doubled;
}a;
4.为了避免嵌套的if-else语句的二义性,C语言规定else总是与④组成配对关系。
5.宏定义中的宏名不能包含⑤。
备选项:
(A)空格
(B)二进制文件
(C)数字
(D)在其之前未配对的if
(E)参数字符串
(F)命令行参数的个数
(G)11
(H)在其之前最近的未配对的if
(J)8
(K)在定义该函数时所指定的数据类型
(L)下划线
(M)程序文件
3.程序填空题(每空2分,共20分)
1.下面程序的功能是:
从键盘上输入若干个学生的成绩(用负数结束输入过程),统计计算出平均成绩;
请填空完成程序。
{floatsum=0.0,ave,a;
intn=0;
Entermark'
n"
seanf("
%f"
&
a);
while(a>
=0.0)
{sum=sum+a;
1;
scanf("
,&
a);
ave=sum/n;
ave=%f\n"
ave);
2.下面程序的功能是将一个字符串str的内容颠倒并输出,请填空完成程序。
{charstr[]={"
abcdefg"
};
char*p1,*p2,ch;
p1=str;
p2=str;
=z\0z)
p2++
2;
{ch=*p1,*p1=*p2,*p2=ch;
3;
3.下面程序从终端输入一行字符串存入字符数组,然后输出;
{charstr[80],*sp;
intn;
for(n=0;
n<
80;
{str[n]=④;
if(str[n]==/\n/)
str[n]=/\0/;
sp=str;
while(*sp)
putchar(⑤);
4.
0值,否则返回两个字符串中
下面函数fun的功能是比较两个字符串的大小,若两字符串相同则返回第一个不相同字符之差;
请填空完成函数。
intfun(char*s,char*t)
{while(*t++==*s++&
*t!
=/\0/&
*s!
=z\0/)
5
return(⑥);
{charstr1[80],str2[80];
gets(strl);
gets(str2);
%d\n"
fun(str1,str2));
5.下面程序的功能是统计字符串中大小写字母的个数,请填空完成程序。
#defineIA(x)⑦
{charstr[80],*s,ch;
intcount=0;
gets(str);
s=str;
while(*s)
{ch=*s++;
if(IA(ch))count++;
thesumis%d\n"
count);
6.
x添
下面函数在一维数组v中将x插入到下标为i(i>
=0)的元素前,如果i大于等于元素的个数,则
加到v数组原数据的末尾。
V数组原有元素个数保存在指针n所指向的变量中,插入后元素个数加
voidinsline(double[],int*n,doublex,int,i)
{intj;
if(⑧)
for(j=*n-1;
⑨;
j--)
⑩=vj
i=*n;
v[i]=x;
(*n)++;
{doubles[10]={11,23,65,78},x;
intm=4,*p=&
m,k;
x=99;
%d'
&
k);
insline(s,p,x,k);
m;
k++)printf("
s[k]);
putchar('
\n'
4.阅读程序题(每小题5分,共30分)
1.写出下面程序的运行结果。
intf(intnum,intrun)
{strticintfact,i;
if(run==O)
{fact=1;
i=1;
fact*=i;
if(++i<
=num)
f(num,1);
return(fact);
{inti=0;
f=%d\n"
f(3,0));
2.写出下面程序的运行结果。
{inta,b;
for(a=1,b=1;
=100;
{if(b>
=20)
if(b%3==1)b+=3;
b-