试卷编号:167
所属语言:C语言
试卷方案:2019级C语言期末模拟考试
试卷总分:100分
共有题型:5种
你可能还会喜欢:成品 詹姆斯高清图片 欧文高清图片 科比高清图片
一、判断 共10题 (共计10分)
第1题 (1.0分) 题号:1173 难度:中 第3章
在C程序中,逗号运算符的优先级最低.
答案:Y 第2题 (1.0分) 题号:1215 难度:中 第6章三种循环(while语句、 for语句、 do-while语句)都可以用来处理同一个问题,一般它们可以相互代替.
答案:Y 第3题 (1.0分) 题号:1222 难度:中 第7章C语言的数组只能存放int 和 float 类型的数据.
答案:N 第4题 (1.0分) 题号:1329 难度:中 第10章将一维数组a的第i个元素的地址赋给指针变量p的语句是p=&a[i];
答案:Y第5题 (1.0分) 题号:1126 难度:中 第2章
char类型数据占2个字节.
答案:N 第6题 (1.0分) 题号:1243 难度:中 第7章设有数组定义: char array [ ]="hello"; 则数组 array所占的空间为5.
答案:N 第7题 (1.0分) 题号:1237 难度:中 第7章int a[2][3];按照它在内存的排列次序,a数组的所有元素是a[0][0]、a[1][0]、a[0][1]、a[1][1]、a[0][2]、a[1][2].
答案:N 第8题 (1.0分) 题号:1303 难度:中 第9章对结构体类型的变量的成员可以象普通变量一样参与各种运算.
答案:Y 第9题 (1.0分) 题号:1271 难度:易 第8章在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用.
答案:N 第10题 (1.0分) 题号:1120 难度:中 第1章C语言规定,在一个源程序中,main函数的必须在最开始.
答案:N二、单选 共50题 (共计50分)
第1题 (1.0分) 题号:5475 难度:中 第7章
char a[10];不能将字符串"abc"存储在数组中的是().
A:strcpy(a,"abc");
B:a[0]=0;strcat(a,"abc");
C:a="abc";
D:int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;
答案:C第2题 (1.0分) 题号:5411 难度:中 第5章
下列程序的输出结果是().
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B第3题 (1.0分) 题号:5426 难度:中 第6章
有以下程序段
int n=0,p;
do
{
scanf("%d",&p);
n++;
}while(p!=12345&&n<3);
此处do-while循环的结束条件是().
A:p的值不等于12345并且n的值小于3
B:p的值等于12345并且n的值大于等于3
C:p的值不等于12345或者n的值小于3
D:p的值等于12345或者n的值大于等于3
答案:D 第4题 (1.0分) 题号:5288 难度:易 第2章若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);时,()是正确的输入.
A:2030,40
B:20 30 40
C:20, 30 40
D:20,30,40
答案:D第5题 (1.0分) 题号:5294 难度:中 第2章
下列程序段的输出结果为().
float x=213.82631;
printf("%3d",(int)x);
A:213.82
B:213.83
C:213
D:3.8
答案:C第6题 (1.0分) 题号:5485 难度:中 第7章
已定义两个字符数组a,b,则以下正确的输入格式
是().
A:scanf("%s%s", a, b);
B:get(a, b);
C:scanf("%s%s", &a, &b);
D:gets("a"),gets("b");
答案:A第7题 (1.0分) 题号:5208 难度:中 第1章
以下叙述中正确的是().
A:构成C程序的基本单位是函数
B:可以在一个函数中定义另一个函数
C:main()函数必须放在其它函数之前
D:所有被调用的函数一定要在调用之前进行定义
答案:A第8题 (1.0分) 题号:5481 难度:中 第7章
若有
char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是().
A:if(strcmp(s1,s1)>0)puts(s2);
B:if(strcmp(s2,s1)>0)puts(s2);
C:if(strcmp(s2,t)>0)puts(s2);
D:if(strcmp(s1,t)>0)puts(s2);
答案:D第9题 (1.0分) 题号:5497 难度:中 第8章
以下函数的类型是().
fff(float x)
{
return 5;
}
A:与参数x的类型相同
B:void 类型
C:int类型
D:无法确定
答案:C第10题 (1.0分) 题号:5211 难度:中 第1章
C语言执行程序的开始执行点是().
A:程序中第一条可以执行语言
B:程序中第一个函数
C:程序中的main函数
D:包含文件中的第一个函数
答案:C 第11题 (1.0分) 题号:5333 难度:中 第3章假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是().
A:7
B:8
C:6
D:2
答案:B第12题 (1.0分) 题号:5521 难度:较难 第8章
以下程序的输出结果是().
void fun(int a, int b, int c)
{ a=456; b=567; c=678; }
main()
{ int x=10, y=20, z=30;
fun(x, y, z);
printf("%d,%d,%d\n", z, y, x);}
A:30,20,10
B:10,20,30
C:456567678
D:678567456
答案:A第13题 (1.0分) 题号:5488 难度:中 第8章
C语言规定,函数返回值的类型是由().
A:return语句中的表达式类型所决定
B:调用该函数时的主调函数类型所决定
C:调用该函数时系统临时决定
D:在定义该函数时所指定的函数类型所决定
答案:D 第14题 (1.0分) 题号:5314 难度:中 第3章设以下变量均为int类型,则值不等于7的表达式是().
A:(x=y=6,x+y,x+1)
B:(x=y=6,x+y,y+1)
C:(x=6,x+1,y=6,x+y)
D:(y=6,y+1,x=y,x+1)
答案:C 第15题 (1.0分) 题号:5582 难度:中 第10章若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是().
A:i=*p;
B:*p=*&j;
C:i=&j;
D:i=**p;
答案:B第16题 (1.0分) 题号:5547 难度:中 第9章
C语言中,定义结构体的保留字是().
A:union
B:struct
C:enum
D:typedef
答案:B第17题 (1.0分) 题号:5220 难度:中 第1章
求平方根函数的函数名为().
A:cos
B:abs
C:pow
D:sqrt
答案:D第18题 (1.0分) 题号:5429 难度:中 第6章
若i为整型变量,则以下循环执行次数是().
for(i=2;i==0;) printf("%d",i--);
A:无限次
B:0次
C:1次
D:2次
答案:B第19题 (1.0分) 题号:5379 难度:中 第4章
下列语句的结果是().
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
答案:D第20题 (1.0分) 题号:5443 难度:中 第6章
以下程序的运行结果是().
main()
{ int n;
for(n=1;n<=10;n++)
{
if(n%3==0) continue;
printf("%d",n);
}
}
A:12457810
B:369
C:12
D:1234567890
答案:A第21题 (1.0分) 题号:5446 难度:中 第7章
对以下说明语句 int a[10]=; 的正确理解是().
A:将5个初值依次赋给a[1]至a[5]
B:将5个初值依次赋给a[0]至a[4]
C:将5个初值依次赋给a[6]至a[10]
D:因为数组长度与初值的个数不相同,所以此语句不正确
答案:B 第22题 (1.0分) 题号:5278 难度:中 第2章char a[]="This is a program.";输出前5个字符的语句是().
A:printf("%.5s",a);
B:puts(a);
C:printf("%s",a);
D:a[5*2]=0;puts(a);
答案:A第23题 (1.0分) 题号:5504 难度:中 第8章
若用数组名作为函数的实参,传递给形参的是().
A:数组的首地址
B:数组第一个元素的值
C:数组中全部元素的值
D:数组元素的个数
答案:A 第24题 (1.0分) 题号:5584 难度:中 第10章若有下列定义,则对a数组元素地址的正确引用是().
int a[5],*p=a;
A:&a[5]
B:p+2
C:a++
D:&a
答案:B 第25题 (1.0分) 题号:5567 难度:中 第10章若有int i=3,*p;p=&i;下列语句中输出结果为3的是().
A:printf("%d",&p);
B:printf("%d",*i);
C:printf("%d",*p);
D:printf("%d",p);
答案:C第26题 (1.0分) 题号:5275 难度:中 第2章
下列变量说明语句中,正确的是().
A:char:a b c;
B:char a;b;c;
C:int x;z;
D:int x,z;
答案:D第27题 (1.0分) 题号:5463 难度:中 第7章
下列定义数组的语句中不正确的是().
A:static int a[2][3]=;
B:static int a[2][3]={,};
C:static int a[][3]={,};
D:static int a[][]={,};
答案:D第28题 (1.0分) 题号:5277 难度:中 第2章
以下不正确的叙述是().
A:在C程序中所用的变量必须先定义后使用
B:程序中,APH和aph是两个不同的变量
C:若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变
D:当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值
答案:D 第29题 (1.0分) 题号:5228 难度:中 第2章下面四个选项中,均是不合法的浮点数的选项是().
A:160. 0.12 e3
B:123 2e4.2 .e5
C:-.18 123e4 0.0
D:-e3 .234 1e3
答案:B第30题 (1.0分) 题号:5610 难度:中 第10章
下面说明不正确的是().
A:char a[10]="china";
B:char a[10],*p=a;p="china"
C:char *a;a="china";
D:char a[10],*p;p=a="china"
答案:D 第31题 (1.0分) 题号:5448 难度:中 第7章若有说明:int a[10];则对a数组元素的正确引用是().
A:a[10]
B:a[3,5]
C:a(5)
D:a[10-10]
答案:D 第32题 (1.0分) 题号:5326 难度:中 第3章在C语言中,要求运算数必须是整型的运算符是().
A:^
B:%
C:!
D:>
答案:B第33题 (1.0分) 题号:5569 难度:中 第10章
设变量定义为"int x, *p=&x;",则&(*p)相当于().
A:p
B:*p
C:x
D:*(&x)
答案:A第34题 (1.0分) 题号:5247 难度:中 第2章
以下叙述中错误的是().
A:用户所定义的标识符允许使用关键字
B:用户所定义的标识符应尽量做到"见名知意"
C:用户所定义的标识符必须以字母或下划线开头
D:用户定义的标识符中,大、小写字母代表不同标识
答案:A 第35题 (1.0分) 题号:5305 难度:易 第3章能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是().
A:a>=10 or a<=0
B:a>=0 | a<=10
C:a>=10 && a<=0
D:a>=10 || a<=0
答案:D第36题 (1.0分) 题号:5269 难度:中 第2章
以下字符中不是转义字符的是().
A:'\a'
B:'\b'
C:'\c'
D:'\\'
答案:C第37题 (1.0分) 题号:5257 难度:中 第2章
下列数据中,为字符串常量的是().
A:A
B:"house"
C:How do you do.
D:$abc
答案:B 第38题 (1.0分) 题号:5226 难度:中 第1章一个算法应该具有"确定性"等5个特性,下面对另外4个特性的描述
中错误的是().
A:有零个或多个输入
B:有零个或多个输出
C:有穷性
D:可行性
答案:B第39题 (1.0分) 题号:5377 难度:中 第4章
下列程序的输出结果是().
main()
A:0
B:5
C:1
D:不确定值
答案:A第40题 (1.0分) 题号:5561 难度:中 第9章
在下列程序段中,枚举变量c1,c2的值依次是().
enum color c1,c2;
c1=yellow;c2=white;
printf("%d,%d\n",c1,c2);
A:1,6
B:2,5
C:1,4
D:2,6
答案:A 第41题 (1.0分) 题号:5336 难度:中 第3章若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的
值是().
A:-3
B:9
C:-12
D:6
答案:C第42题 (1.0分) 题号:5416 难度:中 第6章
下列程序的输出为().
main()
{ int y=10;
while(y--);
printf("y=%d\n",y);
}
A:y=0
B:while构成无限循环
C:y=1
D:y=-1
答案:D第43题 (1.0分) 题号:5406 难度:中 第5章
以下不正确的定义语句是().
A:double x[5]=;
B:int y[5]=;
C:char c1[]={'1','2','3','4','5'};
D:char c2[]={'\x10','\xa','\x8'};
答案:B 第44题 (1.0分) 题号:5312 难度:中 第3章设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是().
A:6.500000
B:6
C:5.500000
D:6.000000
答案:D第45题 (1.0分) 题号:5400 难度:中 第5章
int a=1,b=2,c=3;
if(a>b)a=b; if(a>c)a=c;则a的值为().
A:1
B:2
C:3
D:不一定
答案:A第46题 (1.0分) 题号:5231 难度:中 第2章
C语言的注释定界符是().
A:{ }
B:[ ]
C:\* *\
D:/* */
答案:D第47题 (1.0分) 题号:5205 难度:易 第1章
C语言源程序名的后缀是().
A:exe
B:c
C:obj
D:cp
答案:B第48题 (1.0分) 题号:5237 难度:较易 第2章
下列正确的标识符是().
A:_do
B:6a
C:%y
D:a+b
答案:A第49题 (1.0分) 题号:5434 难度:中 第6章
以下程序段的输出结果为().
for(i=4;i>1;i--) for(j=1;jputchar('#');
A:无
B:######
C:#
D:###
答案:B 第50题 (1.0分) 题号:5476 难度:中 第7章char a1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是().
A:strcat(a2,a1);
B:strcpy(a2,a1);
C:strcat(a1,a2);
D:strcpy(a1,a2);
答案:A三、程序填空 共2题 (共计10分)
第1题 (5.0分) 题号:967 难度:中 第5章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出
最高成绩和最低成绩,当输入负数时结束输入,请填空。
-------------------------------------------------------*/
includevoid main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x;amin=x;
/***********SPACE***********/
while( 【?】 )
{ if(x>amax) amax=x;
/***********SPACE***********/
if( 【?】 ) amin=x;
scanf("%f",&x);}
printf("\namax=%f\n amin=%f\n",amax,amin);}
答案:=======(答案1)=======
x>=0
=========或=========
0<=x
=========或=========
x>0
=========或=========
0
=======(答案2)=======
x
=========或=========
amin>x
第2题 (5.0分) 题号:1010 难度:中 第1章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
程序功能:已有定义"int a[5]=;", 编写程序,用选择排序法将
数组a的元素按降序排列,并输出排序后的字符串。
要求:必须使用指针实现。-------------------------------------------------------*/
includevoid main()
{
int a[5]=,i,j,k,temp;
int *p;
/***********SPACE***********/
【?】 ; //指针指向数组
for(i=0;i<4;i++) //使用选择排序法将数组进行排序
{
/***********SPACE***********/
【?】 ;
for(j=i+1;j<5;j++)
/***********SPACE***********/
if( 【?】 )
k=j;
/***********SPACE***********/
temp=p[i]; 【?】 ; p[k]=temp;
}
for(i=0;i<5;i++) //输出数组元素
/***********SPACE***********/
printf("%4d", 【?】 );
}
答案:=======(答案1)=======
p=a
=========或=========
p=&a[0]
=======(答案2)=======
k=i
=======(答案3)=======
p[k]
=========或=========
p[j]>p[k]
=========或=========
p[k]
=========或=========
*(p+k)
=========或=========
*(p+k)
=========或=========
*(p+j)>*(p+k)
=======(答案4)=======
p[i]=p[k]
=========或=========
p[i]=*(p+k)
=======(答案5)=======
p[i]
=========或=========
*(p+i)
四、程序改错 共2题 (共计10分)
第1题 (5.0分) 题号:742 难度:中 第25章
/*----------------------------------------------------
【程序改错】
------------------------------------------------------
功能:求出数组中所有正数的平均值并输出。-----------------------------------------------------*/
includevoid main()
{
int s[10]={-50,10,80,90,-6,8,100,-70,8,9};
float sum=0.0;
int i,c=0;
double aver;
/**********FOUND**********/
for(i=0;i<=10;i++)
{
if (s[i]>0)
{
sum+=s[i];
c++;
}
}
/**********FOUND**********/
aver=sum*c;
printf("%f\n",aver);
}
答案:=======(答案1)=======
for(i=0;i<10;i++)
=========或=========
for(i=0;i<=9;i++)
=======(答案2)=======
aver=sum/c;
=========或=========
aver=1/c*sum;
=========或=========
aver=sum*1/c
第2题 (5.0分) 题号:740 难度:中 第25章
/*----------------------------------------------------
【程序改错】
------------------------------------------------------
功能:判断输入的字符是否为大写字母,如果是大写字母,
将其转换为小写字母,否则就不转换,最后输出。
-----------------------------------------------------*/
includevoid main()
{
/**********FOUND**********/
double ch;
scanf("%c",&ch);
if(ch>='A'&& ch<='Z')
/**********FOUND**********/
ch=ch-32;
printf("%c",ch);
}
答案:=======(答案1)=======
char ch;
=======(答案2)=======
ch=ch+32;
=========或=========
ch=32+ch;
五、程序设计 共2题 (共计20分)
第1题 (10.0分) 题号:342 难度:易 第1章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求1到100之间的偶数之积。------------------------------------------------*/
includedouble fun(int m)
{
/**********Program**********/
/********** End **********/
}
void main()
{
printf("ji=%f\n",fun(100));
}
答案:
double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
return y;
第2题 (10.0分) 题号:803 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:从键盘输入一个正整数x,判断它是否为3和7的倍数,若是,输出yes,否则输出no。
-------------------------------------------------------*/
includevoid main()
{
/**********Program**********/ /********** End **********/ }答案: int x;
printf("请输入一个正数:");
scanf("%d",&x);
if(x%3==0 && x%7==0)
printf("Yes!\n");
else
printf("No!\n");