C程序设计考试题A.docx
《C程序设计考试题A.docx》由会员分享,可在线阅读,更多相关《C程序设计考试题A.docx(15页珍藏版)》请在冰豆网上搜索。
![C程序设计考试题A.docx](https://file1.bdocx.com/fileroot1/2023-1/30/8e395df3-613c-4b47-b3f1-8a293bc118bc/8e395df3-613c-4b47-b3f1-8a293bc118bc1.gif)
C程序设计考试题A
C语言程序设计考试题A
注意事项:
1.答题前,请先在试卷和机读卡上对应位置用钢笔准确清楚的填写上本人姓名和学号,机读卡的科目栏里填写年级和专业的简称,并用2B铅笔填涂学号(必须填在前8列,剩最右边的一列不填涂);
2.试卷答案必须用2B铅笔在机读卡上按对应题号准确、清楚涂写,答在试卷上无效;
3.本试卷共74个小题,机读卡上按【1】~【80】的编号顺序涂写。
【1】~【60】每题1分,【61】~【80】每题2分,共100分。
1.在C语言中,要求参加运算的数必须是整数的运算符是【1】
(A)/(B)*(C)%(D)=
2.以下不正确的说法是【2】
(A)全局变量、静态变量的初值是在编译时指定的
(B)静态数值型变量如果没有指定初值,则其初值为0
(C)局部变量如果没有指定初值,则其初值不确定
(D)函数中的静态变量在函数每次调用时,都会重新赋初值
3.已知:
inta[]={1,2,3,4},x,*pt=&a[1];则执行语句“x=(*--pt)++;”之后,变量x的值为【3】
(A)1(B)2(C)3(D)4
4.已知:
intx,*p=&x;则下列输入输出x值的函数调用中错误的是【4】
(A)scanf(“%d”,&x);(B)scanf(“%d”,p);
(C)printf(“%d”,x);(D)printf(“%d”,p);
5.在说明一个结构体变量时系统分配给它的存储空间是【5】
(A)该结构体中第一个成员所需的存储空间
(B)该结构体中最后一个成员所需的存储空间
(C)该结构体中占用最大存储空间的成员所需的存储空间
(D)该结构体中所有成员所需的存储空间的总和
6.C语言中函数返回值的类型是由【6】决定的
(A)return语句中的表达式类型(B)调用该函数的主调函数类型
(C)调用函数时临时(D)定义函数时所指定的函数类型
7.设有数组定义:
chararray[]="China";则数组array所占的空间为【7】
(A)4个字节(B)5个字节(C)6个字节(D)7个字节
8.凡在函数中未指定存储类别的变量,其隐含的存储类别为【8】
(A)自动(auto)(B)静态(static)(C)外部(extern)(D)寄存器(extern)
9.下列选项中是非法的C语言转义字符的是【9】
(A)'\b'(B)'\'(C)'\037'(D)'\xf'
10.下面说法正确的是【10】
(A)函数定义可以嵌套,但函数调用不能嵌套
(B)函数定义不可以嵌套,但函数调用可以嵌套
(C)函数定义和调用均不能嵌套
(D)函数定义和调用均可以嵌套
11.语句“staticinti=10;”中,“i=10”的含义是【11】
(A)将变量i初始化为10(B)只说明了一个静态变量
(C)与“autointi=10;”在功能上等价(D)给变量i赋值为10
12.下述对C语言字符数组的描述中错误的是【12】
(A)字符数组可以存放字符串
(B)字符数组中的字符串可以进行整体输入输出
(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
(D)字符数组的下标从0开始
13.有以下说明和语句,且0<=i<10,则下面【13】是对数组元素地址的正确表示
inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
(A)&(a+1)(B)a++(C)&p(D)&p[i]
14.若有以下说明和语句,则p2-p1的值为【14】
inta[10],*p1,*p2;
p1=a;p2=&a[5];
(A)5(B)6(C)10(D)错误的表达式
15.已知:
chars[10],*p=s;则在下列语句中,错误的语句是【15】
(A)p=s+5;(B)s=p+5;(C)s[2]=p[4];(D)p[0]=’a’;
16.已知:
chars[10];inti=1;则在下列引用数组元素的表达式中,错误的表示形式是【16】
(A)s[i](B)*(s+i)(C)*s(D)*((s++)+i)
17.已知:
chara[5],*p=a;则正确的赋值语句是【17】
(A)a=”abcd”;(B)*a=”abcd”;(C)p=”abcd”;(D)*p=”abcd”;
18.设有inti;charc;floatf;以下结果为整数的表达式是 【18】
(A)i+f(B)i*c(C)c+f(D)i+c+f
19.以下使变量i的运算结果为4的表达式是【19】
(A)inti=0,j=0;(B)inti=1,j=0;
(i=3,(j++)+i);j=i=((i=3)*2);
(C)inti=1,j=1;(D)inti=1,j=1;
(j==1)?
(i=1):
(i=3);i+=j+=2;
20.设charch;以下正确的赋值语句是【20】
(A)ch=’123’;(B)ch=’\xff’;(C)ch=’\08’;(D)ch=’’\’’;
21.设n=10,i=4,则赋值运算n%=i+1执行后,n的值为【21】
(A)0(B)3(C)2(D)1
22.逗号表达式(a=3*5,a*4),a+15运算后,a的值为【22】
(A)60(B)30(C)15(D)90
23.
若有说明intx,y;不能实现以下函数关系的程序段是【23】
(A)if(x<0)y=-1;(B)if(x>=0)
elseif(x==0)y=0;if(x>0)y=1;
elsey=1;elsey=0;
elsey=-1;
(C)y=0;(D)y=-1;
if(x>=0)if(x!
=0)
{if(x>0)y=1;}if(x>0)y=1;
elsey=-1;elsey=0;
24.设有说明ints[2]={0,1},*p=s;则下列错误的C语句是【24】
(A)s+=1;(B)p+=1;(C)*p++;(D)(*p)++;
25.为了判断两个字符串s1和s2是否相等,应当使用【25】
(A)if(s1=s2)(B)if(s1==s2)
(C)if(strcmp(s1,s2)==0)(D)if(strcpy(s1,s2))
26.一个C程序执行是从【26】
(A)第一个函数开始,直到最后一个函数结束
(B)第一个语句开始,直到最后一个语句结束
(C)从main()函数开始,在main()函数中结束
(D)从main()函数开始,直到源文件中的最后一个函数
27.下列选项中是C语言提供的合法的数据类型关键字的是【27】
(A)string(B)Int(C)integer(D)char
28.以下程序段intk=0;while(k=1)k++;while循环执行的次数是【28】
(A)无限次(B)有语法错,不能执行
(C)一次也不执行(D)执行1次
29.在下面的条件语句中(其中s1和s2表示C语言的语句),只有一个在功能上与其它三个语句不等价,它是【29】
(A)if(p)s1;elses2;(B)if(p==0)s1;elses2;
(C)if(p!
=0)s1;elses2;(D)if(p==0)s2;elses1;
30.若intk=10;执行下列程序后,变量k的正确结果是【30】
switch(k)
{
case9:
k+=1;
case10:
k+=1;
case11:
k+=1;
default:
k+=1;
}
(A)10B)11(C)12(D)13
31.若数组名作实参而指针变量作形参,函数调用实参传给形参的是【31】
(A)数组的长度(B)数组第一个元素的值
(C)数组所有元素的值(D)数组第一个元素的地址
32.以下错误的描述是【32】
(A)break语句不能用于循环语句和switch语句外的任何其他语句
(B)在switch语句中使用break语句或continue语句的作用相同
(C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环
(D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
33.for(表达式1;;表达式3)可理解为【33】
(A)for(表达式1;0;表达式3)(B)for(表达式1;1;表达式3)
(C)for(表达式1;表达式1;表达式3)(D)for(表达式1;表达式3;表达式3)
34.设intk;则语句for(k=0;k=1;k++);和语句for(k=0;k==1;k++);执行的次数分别是【34】
(A)无限次和0次(B)0次和无限次 (C)都是无限次 (D)都是0次
35.有以下程序段:
intn=0,p;
do
{scanf(“%d”,&p);n++;
}while(p!
=12345&&n<3);
此处do~while循环的结束条件是【35】
(A)p值不等于12345并且n的值小于3
(B)p值等于12345并且n的值大于等于3
(C)p值不等于12345或者n的值小于3
(D)p值等于12345或者n的值大于等于3
36.下列各程序段中,没有构成死循环的是【36】
(A)inti=10;(B)inty=1;
while
(1)for(;y=10;y++);
{i=i+i%10;
if(i==10)break;
}
(C)intk=100;(D)ints=4;
dowhile(--s)
{++k;s--;
}while(k>=100);
37.以下四个关于循环语句的结论中,只有一个是错误的,它是【37】
(A)可以用while语句实现的循环一定可以用for语句实现
(B)可以用for语句实现的循环一定可以用while语句实现
(C)可以用while语句实现的循环一定可以用do~while语句实现
(D)可以用do~while语句实现的循环一定可以用while语句实现
38.已知intj,i=1;则执行j=-i++;后,i和j的值为【38】
(A)1-1(B)11(C)2-1(D)21
39.以下正确的函数定义是【39】
(A)doublefun(intx,inty)(B)doublefun(intx,y)
{z=x+y;returnz;}{intz;z=x+y;returnz;}
(C)fun(x,y)(D)doublefun(intx,inty)
{intx,y;doublez;{doublez;
z=x+y;returnz;}z=x+y;returnz;}
40.若x为整型变量,以下定义指针的正确语句是【40】
(A)intp=&x;(B)intp=x;(C)int*p=&x;(D)p=x;
41.在C语言中,如果下面的变量都是int类型,则输出的结果是【41】
sum=a=5;a=sum++,a++,++a;
printf("%d\n",a);
(A)5(B)6(C)7(D)8
42.以下正确的说法是【42】
(A)实参变量与其对应的形参变量各占用独立的存储单元
(B)实参变量与其对应的形参变量共占用一个存储单元
(C)只有当实参变量与其对应的形参变量同名时才占用相同的存储单元
(D)形参变量是虚拟的,不占用存储单元
43.若i为整型变量,则以下循环执行次数是【43】
for(i=2;i!
=0;)printf("%d",i--);
(A)无限次(B)0次(C)2次(D)1次
44.对以下说明语句的正确理解是【44】
inta[10]={1,2,3,4};
(A)将4个初值依次赋给a[1]至a[4]
(B)将4个初值依次赋给a[0]至a[3]
(C)将4个初值依次赋给a[6]至a[9]
(D)因为数组长度与初值个数不一致,所以此语句不正确
45.已知:
charstr1[20],str2[10]=”books”;则在程序中能够将字符串“books”赋给数组str1的正确语句是【45】
(A)str1=”books”;(B)strcpy(str1,str2);
(C)str1=str2;(D)strcpy(str2,str1);
46.以下不正确的说法是【46】
(A)在不同函数中可以使用相同名字的变量
(B)形式参数是局部变量
(C)在函数内定义的变量只在本函数范围内有定义
(D)在函数内的复合语句中定义的变量在本函数范围内有定义
47.已知一个函数的定义如下:
doublefun(intx,doubley)
{……}
则该函数正确的函数原型声明为【47】
(A)doublefun(intx;doubley);(B)fun(intx,doubley);
(C)doublefun(int,double);(D)fun(x,y);
48.若已定义:
inta[10],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是【48】
(A)p+1(B)a+1(C)a++(D)++p
49.要在C中求
的值,则可以调用库函数,格式为【49】
(A)sin(3.14159/6)(B)sin(30)
(C)sin(double(30))(D)sin(30.0)
50.在一个源文件中定义的外部变量的作用域【50】
(A)本文件的全部范围(B)本程序的全部范围
(C)从定义该变量的位置开始至本文件结束(D)本函数的全部范围
51.已知函数fun的定义为:
voidf()
{……}
则函数定义中void的含义是【51】
(A)执行函数f后,函数没有返回值
(B)执行函数f后,函数不再返回
(C)执行函数f后,可以返回任意类型的返回值
(D)执行函数f后,函数返回void类型的值
52.若有定义:
inta[10];则对数组a中元素的正确引用是【52】
(A)a[10](B)a[4.8](C)a(5)(D)*(a+2)
53.以下不正确的定义语句是【53】
(A)doublex[5]={2.0,4.0,6.0,8.0,10.0};(B)inty[5]={0,1,3,5,7,9};
(C)charc1[]={‘1’,’2’,’3’,’4’,’5’};(D)charc2[]={‘\x10’,’\xa’,’\x8’};
54.有两个字符数组a,b,则以下正确的输入语句是【54】
(A)gets(a,b);(B)scanf(“%s,%s”,a,b);
(C)scanf(“%s,%s”,&a,&b);(D)gets(&a);gets(&b);
55.已知:
char*str1=”abcde”,*str2=”xyz”;则执行语句:
printf(“%d”,strlen(strcpy(str1,str2)));
输出结果是【55】
(A)9(B)3(C)5(D)8
56.调用strlen(“abcd\0ef\0g”)的返回值为【56】
(A)4(B)5(C)8(D)9
57.在C语言中进行乘方运算,例如求a的3次方,可以使用【57】
(A)a^3(B)a**3(C)pow(a,3)(D)power(a,3)
58.以下对一维整型数组a的正确说明是【58】
(A)inta(10);(B)intn=10,a[n];(C)intn;(D)#defineSIZE10
scanf(“%d”,&n);inta[SIZE];
inta[n];
59.已知:
inti=0,j=1,*p=&i,*q=&j;其中错误的语句是【59】
(A)i=*&j;(B)p=&*&i;(C)j=*p++;(D)i=*&q;
60.以下关于结构体与共用体的说法,其中正确的是【60】
(A)共用体每个成员分别占有自己的内存单元
(B)结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和
(C)共用体同一个内存段可以存放几种不同类型的成员,但在某一时刻只能存放一个成员
(D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中
61.以下程序的作用是将给出的字符按其格式读入数组ss中,然后输出行列号之和为3的数组元素。
#include
voidmain()
{charss[4][3]={‘A’,’a’,’f’,’c’,’B’,’d’,’e’,’b’,’C’,’g’,’f’,’D’};
intx,y,z;
for(x=0;【61】;x++)
for(y=0;【62】;y++){
z=x+y;
if(【63】)
printf(“%c\n”,ss[x][y]);
}
}
【61】(A)x<2;(B)x<=2;(C)x<=3;(D)x<=4;
【62】(A)y<3;(B)y<2;(C)y<=3;(D)y<4;
【63】(A)z==2;(B)z=2;(C)z==3;(D)z=3;
62.下面程序的功能是在一个键盘输入的字符串中找出最大的字符,并与它前一个字符对调,如果第1个字符最大,则与最后一个对调。
#include
#include
main()
{chara[10];inti,k,t,len;
gets(a);
len=【64】;
k=0;
for(i=0;iif(a[k]if(【66】)
{t=a[k];a[k]=a[k-1];a[k-1]=t;}
else
{t=a[k];a[k]=a[len-1];a[len-1]=t;}
puts(a);
}
【64】(A)10(B)strlen(a)(C)i(D)a
【65】(A)k=i(B)a[k]=a[i](C)k++(D)break
【66】(A)i>10(B)k>10(C)k!
=0(D)i!
=0;
63.以下count函数的功能是统计substr在母串str中出现的次数。
intcount(char*str,char*substr)
{inti,j,k,num=0;
for(i=0;【67】;i++)
for(【68】,k=0;substr[k]==str[j];k++,j++)
if(substr[【69】]==’\0’){
num++;
break;
}
return(num);
}
【67】(A)i=’\0’(C)i=’\0’
【68】(A)j=0(B)i=0(C)j=i+1(D)j=i
【69】(A)j(B)j+1(C)k(D)k+1
64.执行以下程序段后,k的值是【70】
inta[7],b[4],i,k=0;
for(i=0;i<7;i++)a[i]=i*i;
for(i=0;i<4;i++){
b[i]=a[i*(i-1)];
k+=b[i];
}
(A)29(B)20(C)40(D)47
65.分析以下程序的执行结果【71】
#include
voidmain()
{
chars1[]=”thisbook”,s2[]=”thishook”;
inti;
for(i=0;s1[i]!
=’\0’&&s2[i]!
=’\0’;i++)
if(s1[i]==s2[i])
printf(“%c”,s1[i]);
printf(“\n”);
}
(A)thisbook(B)thisook(C)thishook(D)无输出
66.分析以下程序的执行结果【72】
#include
voidmain()
{
staticchars[]=“china”,c;
inti,j;
for(i=0;i<5;i++)
for(j=4;j>=1;j--)
if(s[j]
{c=s[j];s[j]=s[j-1];s[j-1]=c;}
printf(“%s\n”,s);
}
(A)anihc(B)china(C)achin(D)incha
67.设有以下程序:
#include
voidmain()
{inta[9]={1,2,3,4,5,6,7,8,9},*p;
p=a;
printf(“%d\n”,p);
printf(“%x\n”,p+5);
}
执行此程序,如果第一个printf语句输出值是200,则第二个printf语句的输出是【73】
(A)205(B)210(C)CD(D)D2
68.以下程序运行后,如果从键盘上输入:
book<回车>
book<空格><回车>
则输出的结果是【74】
#include
main()
{chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!
strcmp(s1,s2))printf("*");
elseprintf("#");
printf("%d/n",strl