C语言考试题库精选及答案免费Word文档格式.docx
《C语言考试题库精选及答案免费Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言考试题库精选及答案免费Word文档格式.docx(57页珍藏版)》请在冰豆网上搜索。
A、continue语句
B、空语句
C、break语句
D、return语句
8以下对一维整型数组a的正确说明是()。
A、inta(10);
B、intn;
scanf("
%d"
&
n);
inta[n];
C、intn=10,a[n];
D、#defineSIZE10(换行)inta[SIZE];
9以下定义语句中,错误的是()。
A、intn=5,a[n];
B、inta[]={1,2};
C、chars[10]="
test"
;
D、char*a[3];
10下面叙述中不正确的是().C
A、可以对字符型数组进行整体输入和输出.
B、不可以对浮点型数组进行整体输入和输出.
C、可以对整型数组进行整体输入和输出.
D、字符型数组可以存放字符串.
11下面叙述中不正确的是().C
12以下错误的描述是:
函数调用可以()。
A、出现在执行语句中
B、做为一个函数的实参
C、出现在一个表达式中
D、做为一个函数的形参
13以下不正确的说法是:
C语言规定()。
A、实参可以是常量,变量或表达式
B、实参可以为任何类型
C、形参可以是常量,变量或表达式
D、形参应与其对应的实参类型一致
14下列形式,不属于编译预处理命令的是().D
A、#ifdefM
B、#undefM
C、#if(M>
1)
D、while(M>
15下面判断正确的是()。
A、charc[4]="
abc"
d[4]="
等价于charc[4]=d[4]="
B、charstr[10]={"
china"
等价于charstr[10];
str[]={"
C、char*a="
等价于char*a;
*a="
D、char*s="
等价于char*s;
s="
16若有以下结构体定义:
structexample
{intx;
inty;
}v2;
则(D)是正确的引用或定义.
A、example.x=10;
B、structv2;
v2.x=10;
C、examplev2;
D、structexamplev2={10,3};
17若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数
feof(fp)的值为()。
A、-1
B、1
C、一个非0值
D、0
二、判断
1如果有一个字符串,其中第十个字符为'
\n'
,则此字符串的有效字符为9个。
【N】
2格式字符%o用来以十六进制形式输出整数.【N】
3已知a=3,b=4,c=5,则逻辑表达式!
(a>
b)&
!
c||1的值为1.【Y】
4已知x=2,y=2,执行分支语句if(x==y)y=1;
elsey=-1;
后,y=-1.【N】
5continue语句对于while和do-while循环来说,意味着转去计算While表达式.【Y】
6在do-while循环中,根据情况可以省略while.【N】
7对于字符数为n个的字符串,其占用的内存为n+1个字节空间.【Y】
8puts函数用来输出一个字符.【N】
9引用数组元素时,下标可以是整型表达式或整型常量.【Y】
10函数调用结束后,静态局部变量所占用的空间被释放.【N】
11在一个函数中定义的静态局部变量可以被另一个函数调用.【N】
12当全局变量与局部变量同名时,在局部变量的作用域范围之内,全局变量起作用.【N】
13计算机编译系统对宏定义在编译时进行语法检查.【N】
14若定义intarray[5],*p;
则赋值语句p=array;
是正确的.【Y】
15共同体变量所占的内存长度等于最长的成员的长度。
【Y】
16C语言中,打开一个文件就意味着产生了一个文件.【N】
三、填空
1设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是_____.0
2已知a=-13,b=6,a%b的十进制数值为_____.-1
3已知a=12,写出表达式0<
a&
a<
2的值是_____.0
4已知i=5,写出语句a=(i>
5)?
0:
1;
执行后整型变量a的值是_____.1
5C语言中,数组名是一个不可变的_____常量,不能对它进行加减和赋值运算.指针地址
6C语言中一个函数由函数首部和_____两部分组成.函数体
7设有以下共用体类型说明和变量定义,则变量c在内存所占字节数是__20___。
unionstud{shortintnum;
charname[10];
floatscore[5];
doubleave;
}c;
8在C语言中,关闭文件即是文件指针不再指向该_____.文件
四、程序设计
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
计算并输出给定整数n的所有因子之和(不包括1与
自身)。
注意:
n的值不大于1000。
例如:
n的值为855时,应输出704。
------------------------------------------------*/
#include"
stdio.h"
intfun(intn)
{
/*********Begin**********/
/**********End**********/
}
voidTestFunc()
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("
in.dat"
r"
);
if(IN==NULL)
{
printf("
PleaseVerifyTheCurrerntDir..ItMayBeChanged"
}
OUT=fopen("
out.dat"
w"
if(OUT==NULL)
PleaseVerifyTheCurrentDir..ItMayBeChanged"
for(i=0;
i<
5;
i++)
fscanf(IN,"
iIN);
iOUT=fun(iIN);
fprintf(OUT,"
%d\n"
iOUT);
fclose(IN);
fclose(OUT);
}
main()
s=%d\n"
fun(855));
TestFunc();
【参考代码】
ints=0,i;
for(i=2;
n;
if(n%i==0)s=s+i;
returns;
/*------------------------------------------------------
--------------------------------------------------------
删去一维数组中所有重复的数,只保留不同的数。
数组中的数已按由小到大的顺序排列,
函数返回删除后数组中数据的个数。
一维数组中的数据是:
2223445666677899101010。
删除后,数组中的内容应该是:
2345678910。
请勿改动主函数main和其它函数中的任何内容。
------------------------------------------------------*/
#defineN80
intfun(inta[],intn)
voidTestFunc();
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
Theoriginaldata:
\n"
i++)printf("
%3d"
a[i]);
n=fun(a,n);
\n\nThedataafterdeleted:
\n\n"
inta[N];
intn;
inti;
ReadFileError"
WriteFileError"
i++)fscanf(IN,"
a[i]);
i++)fprintf(OUT,"
inti,j=1,k=a[0];
for(i=1;
if(k!
=a[i])
a[j++]=a[i];
k=a[i];
a[j]=0;
returnj;
=========================================================
五、程序改错
【程序改错】
函数fun的功能是:
求1到20的阶乘的和。
--------------------------------------*/
main()
{
intn,j;
floats=0.0,t=1.0;
for(n=1;
n<
=20;
n++)
{
/**********ERROR**********/
s=1;
for(j=1;
j<
=n;
j++)
t=t*n;
s+t=s;
jiecheng=%f\n"
s);
【改错1】
【参考答案】
t=1;
t=1.0;
============================================================
【改错2】
t=t*j;
t*=j;
t=j*t;
【改错3】
s=s+t;
s+=t;
s=t+s;
/*------------------------------------------------------
实现两个字符串的连接。
输入dfdfqe和12345时,则输出dfdfqe12345.
#include"
chars1[80],s2[80];
voidscat(chars1[],chars2[]);
gets(s1);
gets(s2);
scat(s1,s2);
puts(s1);
voidscat(chars1[],chars2[])
inti=0,j=0;
/**********ERROR**********/
while(s1[i]=='
\0'
)i++;
while(s2[j]=='
)
s2[j]=s1[i];
i++;
j++;
s2[j]='
while(s1[i]!
='
)i++;
while(s1[i])i++;
=NULL)i++;
=0)i++;
while(s2[j]!
while(s2[j])
=NULL)
=0)
【改错3】
s1[i]=s2[j];
【改错4】
s1[i]='
s1[i]=NULL;
*(s1+i)='
s1[i]=0;
六、程序填空
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
打印以下图形。
*****
*****
-------------------------------------------------------*/
main()
chara[5][9]={"
"
inti,j;
for(i=0;
/***********FILL***********/
for(j=i;
_____;
a[i][j]='
*'
for(_____;
for(j=0;
9;
%c"
_____);
【空1】
i+5
i+5>
j
=i+4
i+4>
5+i
【空2】
i=0
【空3】
a[i][j]
【空4】
printf("
【程序填空】
计算n门课程的平均分。
若有5门课程的成绩是:
90.5,72,80,61.5,55
则函数的值为:
71.80。
#include<
stdio.h>
floatfun(float*a,intn)
floatave=0.0;
/***********FILL***********/
for(i=0;
________;
i++)
ave=ave+a[i];
ave=ave/n;
_________;
intmain()
floatscore[30]={90.5,72,80,61.5,55},aver;
aver=fun(_______,5);
printf("
\nAveragescoreis:
%5.2f\n"
aver);
return0;
【空1】
n
n>
i
returnave;
score
第二套
一、选择题:
1sizeof(float)是(C)。
A、一个浮点表达式
B、一个不合法的表达式
C、运算结果是一个整型表达式。
D、一种函数调用
2下列数据中属于"
字符串常量"
的是(B)。
A、'
A'
B、"
C、ABC
D、'
ABC'
3用下面的scanf函数输入数据,使得i=10,k=15选择正确的键盘输入方法(B).
(用"
[CR]"
表示回车,U表示空格)
{inti,k;
i=%d,k=%d"
i,&
k);
A、i=10[CR]k=15[CR]
B、i=10,k=15[CR]
C、10U15[CR]
D、10,15[CR]
4逻辑表达式3<
2||-1&
4>
3-!
0的值为:
(A)
A、1
B、3
C、0
D、2
5语句while(!
E);
中的表达式!
E等价于(D)。
A、E==1
B、E!
C、E!
=1
D、E==0
6以下正确的描述是(A).
A、只能在循环体内和switch语句内使用break语句
B、continue语句的作用是终止整个循环的执行
C、从多层嵌套的外层循环中退出时,只能使用goto语句
D、在循环体内使用break和continue语句的作用相同
7下面各语句中,能正确进行赋字符串操作的语句是(B).
A、chars1[5][]={"
ABCDE"
B、chars2[6]={'
'
B'
C'
D'
E'
C、charst[][]={"
D、chars[5]={'
8若有说明:
inta[3][4]={0};
则下面正确的叙述是(A)。
A、数组a中每个元素均可得到初值0
B、只有元素a[0][0]可得到初值0
C、数组a中各元素都可得到初值,但其值不一定为0
D、此说明语句不正确
9执行下面程序后,输出结果是(D)。
{inta,b,c;
a=45,b=27,c=0;
c=max(a,b);
c);
intmax(intx,inty)
{intz;
if(x>
y)z=x;
elsez=y;
return(z);
A、72
B、18
C、27
D、45
10以下正确的描述是:
在C语言程序中(B)。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,