信息工程学院C语言复习资料.docx
《信息工程学院C语言复习资料.docx》由会员分享,可在线阅读,更多相关《信息工程学院C语言复习资料.docx(18页珍藏版)》请在冰豆网上搜索。
![信息工程学院C语言复习资料.docx](https://file1.bdocx.com/fileroot1/2023-1/5/03a992e1-6613-4fd8-93c1-937416e65929/03a992e1-6613-4fd8-93c1-937416e659291.gif)
信息工程学院C语言复习资料
一、单项选择题
1.C语言的运算符按运算对象的数目可以分为_______。
A)单目运算一种B)单目和双目运算符
C)单目、双目和三目运算符D)单目、双目、三目运算和四目运算符
2.C语言表达式2/5*10的值是______。
A)0.04B)4C)4.0D)0
3.已知变量f和i的类型说明如下:
floatf=12.34;inti;
则以下符合C语言语法的表达式是______。
A)i=(int)f%5B)i=int(f)%5
C)i=f%5D)i=(intf)%5
4.能正确表示数学式1≤x≤5的C语言表达式是______。
A)1<=x<=5B)(x>=1)&(x<=5)
C)(x>=1)&&(x<=5)D)(1<=x)||(5>=x)
5.设变量c的数据类型是char,i的数据类型是int,f的数据类型是float,则C语言表达式c*i+c*f-i+100值的数据类型为______。
A)intB)floatC)charD)不确定
6.在下列选项中,合法的C语言用户标识符的是_______。
A)intB)sinC)ifD)i+j
7.C程序的执行从_______开始。
A)程序中的第1个语句B)程序中的第1个函数
C)名为main的函数D)包含文件的第1个函数
8.凡在C语言函数中未指定存储类别的变量,其隐含的存储类别为______。
A)自动(auto)B)静态(static)C)字符串D)字符或字符型变量值
11.在C语言中,以下错误的描述是______。
A)break语句不能用于循环语句和switch语句外的任何其它语句
B)在switch语句中使用break语句或continue语句的作用相同
C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环
D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
12.在C语言中,数组作为函数的形参,函数调用时,若用数组名作为函数的实参,则实际上传递给形参的是______。
A)数组首地址B)数组的第一个元素值
C)数组中全部元素的值D)数组元素的个数
13.C语言编译系统对宏命令是______。
A)在程序运行时进行替换处理
B)在程序连接时进行处理
C)和源程序中其它C语句同时进行编译
D)在对源程序中其它成份正式编译之前进行处理
14.设x、y为整型变量且已赋值,将其中较大的值输出的、正确的if语句是______。
A)if(x>y)printf(“%d”,x);
B)if(x>y)printf(“%d”,x);printf(“%d”,y);
C)if(x>y);printf(“%d”,x);elseprintf(“%d”,y);
D)if(x>y)printf(“%d”,x);elseprintf(“%d”,y);
15.对以下程序段描述正确的是______。
intx=10;
while(x)x=x/4;
A)不执行循环体B)循环体执行一次C)循环体执行二次D)死循环
16.在C语言中,引用数组元素时,对数组下标的数据类型以下说法错误的是______。
A)数组下标可以用整型常量B)数组下标可以用整型变量
C)数组下标可以用任意类型的表达式D)数组下标可以用整型表达式
17.以下C函数的功能是______。
intfun(intx,inty){
intz=0;
z=x>y?
x:
y;
returnz;
}
A)返回x和y二者中的最大值B)返回x和y二者中的最小值
C)返回一个不确定的值D)返回函数值0
18.定义数组:
ints[10];则数组元素下标的取值______。
A)最小值为1,最大值为10B)最小值为0,最大值为10
C)最小值为0,最大值为9D)最小值为1,最大值为9
19.定义inti,s[4][5];则不能表示数组第3行第3列元素值的是_____。
A)*(*(x))+3B)x[3][3]
C)*(*(x+3)+3)D)*(x[3]+3)
20.以下C函数的类型是_______。
fun(floatf){
printf(“%f\n”,f);
}
A)intB)floatC)voidD)无法确定
21.设char*s1,s2[255]=“programing”;以下操作正确的是_______。
A)*s1=“function”;B)s2=“function”;s1=s2;
C)s1=“function”;s2=s1;D)*s2='P';s1=s2;
22.设有下列语句:
structstudent{
intnum,age;
};
structstudentstu[3]={{6001,20},{6003,21},{6005,19}};
structstudent*p=stu;
则下面的C语言表达式中,值为6003的是_______。
A)++(p->num)B)(p++)->num
C)(*p++).numD)(*++p).num
23.已有定义int(*p)();则指针p可以_______。
A)代表函数的返回值B)指向函数的入口地址
C)代表函数的类型D)代表函数返回值的类型
24.若用下列语句输出26个大写英文字母:
(1)for(a='A';a<='Z';a++)printf("%c",a);
(2)for(a='Z';a>='A';a--)printf("%c",a);
(3)for(a='A';a<='Z';)printf("%c",a++);
(4)for(a='A';a++<='Z';)printf("%c",a);
以下说法正确的是_______。
A)全都能输出B)只有前三个语句可以输出
C)只有前两个语句可以输出D)只有第一个语句可以输出
25.设以下程序用来求三个元素的数组中,第1个元素与第3个元素之和。
voidmain(){
inta[3]={3*0},i;
for(i=1;i<3;i++)scanf("%d",a[i]);
for(i=1;i<3;i++)a[0]=a[0]+a[i+1];
printf("%d",a[0]);
}
则下述说法正确的是_______。
A)第2行有语法错误B)第3行有错误,程序得不到预期结果
C)编译时第4行出现语法错误D)可以得到正确结果
26.一个C程序的执行是从______。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
27.一个C语言程序是由______。
A)若干主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
28.以下不能定义为用户标识符是______。
A)MainB)_0C)_intD)sizeof
29.合法的C语言赋值语句是______。
A)a=b=58B)i++;C)a=58,b=58D)k=int(a+b);
30.以下所列的C语言常量中,错误的是______。
A)0xFFB)1.2e0.5C)2LD)’\72’
31.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是______。
A)1B)2C)2.0D)2.5
32.若有说明语句:
inta=5;a++;
此时表达式a++的值是______。
A)7B)6C)5D)4
33.putchar函数可以向终端输出一个______。
A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值
34.以下叙述中错误的是_____。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越界"的出错信息
D)可以通过赋初值的方式确定数组元素的个数
35.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为______。
A)1B)2C)3D)4
36.以下程序执行后j的值是______。
voidmain(){
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i<8){
if(p[i]%2)j+=p[i];
i++;
}
printf("%d\n",j);
}
A)42B)45C)56D)60
37.以下能正确定义一维数组的选项是______。
A)inta[5]={0,1,2,3,4,5};B)chara[]={0,1,2,3,4,5};
C)chara={'A','B','C'};D)inta[5]="0123";
39.以下程序的输出结果是______。
voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}
voidmain(){
inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p<=q){f(p,q);p++;q--;}
for(i=0;i<8;i++)printf("%d",a[i]);
}
A)82345671B)56781234C)12345678D)87654321
40.已有定义int(*p)();,则指针p可以_______。
A)代表函数的返回值B)指向函数的入口地址
C)代表函数的类型D)代表函数返回值的类型
43.以下程序执行后sum的值是______。
voidmain(){
inti,sum=0;
for(i=1;i<6;i++)sum+=i;
printf(“%d\n”,sum);
}
A)15B)14C)不确定D)0
44.以下程序的输出结果是______。
voidmain(){
inta=1,b;
for(b=1;b<=10;b++){
if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
A)3B)4C)5D)6
45.以下程序的输出结果是______。
voidmain(){
chars[]="159",*p;p=s;
printf("%c",*p++);printf("%c",*p++);
}
A)15B)16C)12D)59
46.若执行fopen函数时发生错误,则函数返回值是______。
A)EOFB)0C)1D)地址值
47.以下能正确定义二维数组的是_______。
A)inta[][3];B)inta[][3]=2{2*3};
C)inta[][3]={1};D)inta[2][3]={{1},{2},{3,4}};
48.下面函数的功能是______。
intfun(char*a,char*b){
while((*a!
='\0')&&(*b!
='\0')&&(*a==*b)){a++;b++;}
return(*a-*b);
}
A)计算a和b所指字符串的长度之差
B)将b所指字符串连接到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
49.设有以下语句
typedefstructS{
intg;
charh;
}T;
则下面叙述中正确的是_________。
A)可用S定义结构体变量B)可以用T定义结构体变量
C)S是struct类型的变量D)T是structS类型的变量
50.以下程序运行后的输出结果是____
#defineS(x)4*x*x+1
voidmain(){
inti=6,j=8;
printf("%d\n",S(i+j));
}
A)81B)785C)402D)401
51.有以下程序
voidmain(){
chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’};inti,j;
i=sizeof(a);j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序运行后的输出结果是_________。
A)9,9B)8,9C)1,8D)9,8
52.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是_____。
A)abs(x-y)<10B)x-y>-10&&x-y<10
C)@(x-y)<-10||!
(y-x)>10D)(x-y)*(x-y)<100
53.若有说明语句:
intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是_________。
A)p+1B)*(p+3)C)*(p+1)+3D)*(p[0]+2))
54.若执行fgetc函数时遇到文件结束符,则函数返回值是______。
A)EOFB)0C)1D)NULL
二、程序阅读题
1.源程序如下
#include
voidmain(){
inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}
程序运行结果为:
2.源程序如下
#include
voidmain(){
inta=10,b=0;
if(a!
=0){
a=a+1;
b=b+1;
}
else{
a=a+2;
b=b+2;
}
printf(“%d,%d\n",a,b);
}
程序运行结果为:
3.源程序如下
#defineV(s)s*s*s
#include
voidmain(){
intvolume;
volume=V
(1);printf("%d\t",volume);
volume=V
(2);printf("%d\t",volume);
volume=V(1+2);printf("%d\n",volume);
}
程序运行结果为:
4.源程序如下
#include
voidmain(){
chars[]={"12345"};
voidsub_s1(chars[],intn);
voidsub_s2(chars[],intn);
sub_s1(s,5);
sub_s2(s,6);
}
voidsub_s1(chars[],intn){
inti,j;
for(i=0;ifor(j=0;j
printf("%c",s[j%5]);
printf("\n");
}
}
voidsub_s2(chars[],intn){
inti,j;
for(i=0;ifor(j=i;jprintf("%c",s[j%5]);
printf("\n");
}
}
程序运行结果为:
5.源程序如下
#include
voidmain(){
inti,a;
intfun(intm);
for(i=0;i<2;i++){
a=fun(4+i);
printf("%d\n",a);
}
}
intfun(intm){
staticintn=0;
m/=2;m=m*2;
if(m){
n=n*m;
return(fun(m-2));
}
else
return(n++);
}
程序运行结果为:
6.源程序如下
#include
voidmain()
{inti,k=0,s[10]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
if(i%2)k+=s[i];
for(i=i-1;i>=0;i--)
if(i%5==0)printf(“%d\t”,s[i]);
printf(“%d\n”,k);
}
程序运行结果为:
7.源程序如下:
#include
voidmain(){
intk=4,m=1,p;
p=func(k,m);printf("%d,",p);
p=func(k,m);printf("%d\n",p);
}
intfunc(inta,intb){
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
returnm;
}
程序运算后的结果为:
____________。
8.源程序如下:
voidmain(){
inta[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;
pa=a;
for(i=0;i<3;i++)
if(i<2)
pa[1][i]=pa[1][i]-1;
else
pa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
程序运算后的结果为:
____________。
9.源程序如下:
intm(unsignedk){
ints=1;
do{
s*=k%10;k/=10;
}while(k);
returns;
}
voidmain(){
printf("%d,%d\n",m(1234),m(43209));
}
则程序的输出结果是果是:
____________。
10.源程序如下:
voidmain(){
inta=10,b=20,c;
c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
程序运算后的结果为:
____________。
11.源程序如下:
#include
move(char*str,intn){
chartemp;inti;
temp=str[n-1];
for(i=n-1;i>0;i--)
str[i]=str[i-1];
str[0]=temp;
}
voidmain(){
chars[50];intn,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++)
move(s,z);
printf("%s\n",s);
}
若从键盘输入:
3,abcde<回车>,则输出结果是:
____________。
12.源程序如下:
voidmain(){
intm=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d",n++,++m);
}
程序运算后的结果为:
____________。
三、程序填空题
1.以下程序运行时从键盘输入字符串ABCDE按回车键结束输入,要求在下划线上填入合适的内容,使输入字符串中的‘A’和‘B’转换为字符‘#’输出,其它字符输出为‘*’。
#include
voidmain(){
charc;
while((c=getchar())!
=________________){
switch(c){
case'A':
case'B':
putchar('#');___________________;
default:
putchar('*');
}
}
}
2.以下程序从键盘输入20个整数存入数组,统计输入非负数的个数,并计算输入的非负整数之和。
请填空完成。
#include
voidmain(){
inti,a[20],s,n;
s=n=0;
for(i=0;i<20;i++)____________;
for(i=0;i<20;i++){
if(a[i]<0)
__________________;
s+=a[i];n++;
}
printf("s=%d\t,n=%d\n",s,n);
}
3.以下函数的功能是删除字符串s中所出现的与变量c相同的字符,请填空完成。
voidfun(chars[],charc){
inti,j;
for(i=j=0;_____________;i++)
if(s[i]!
=c)___________________;
s[j]='\0';
}
4.以下程序输出1+2+3+……+10的和,请填空完成。
#include
voidmain(){
_______________;
i=1;
do{
s=s+i;
i++;
}while___________________;
printf("%d\n",s);
}
5.设fp为文件型指针变量,ch为字符变量,以下程序段从键盘输入字符,然后存入磁盘文件,直到输入一个‘#’为止,请填空完成。
(注:
‘#’不存入文件中)
ch=getchar();