C语言阶段测验1.docx
《C语言阶段测验1.docx》由会员分享,可在线阅读,更多相关《C语言阶段测验1.docx(14页珍藏版)》请在冰点文库上搜索。
C语言阶段测验1
《程序设计基础》阶段测验(1-6章)
班级:
学号:
姓名:
成绩:
一、单项选择题(每小题2分,共60分)
1.下列叙述中正确的是________。
A)每个C程序文件中都必须有一个main()函数
B)在C程序中main()函数的位置是固定的
C)C程序可以由一个或多个函数组成
D)在C程序的函数中不能定义另一个函数
2.下列定义变量的语句中错误的是________。
A)int_int;
B)doubleint_;
C)charFor;
D)floatUSS
3.以下能正确定义一维数组的选项是________。
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";
4.有以下程序
main()
{intx,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是________。
A)2,3,3
B)2,3,2
C)2,3,1
D)2,2,1
5.有以下程序
main()
{inta=0,b=0;
a=10;/*给a赋值
b=20;给b赋值*/
printf("a+b=%d\n",a+b);/*输出计算结果*/
}
程序运行后输出结果是________。
A)a+b=10
B)a+b=30
C)30
D)出错
6.在嵌套使用if语句时,C语言规定else总是________。
A)和之前与其具有相同缩进位置的if配对
B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对
D)和之前的第一个if配对
7.下列叙述中正确的是________。
A)break语句只能用于switch语句
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
8以下不合法的用户标识符是________。
A)j2_KEY
B)Double
C)4d
D)_8_
9.表达式3.6-5/2+1.2+5%2的值是________。
A)4.3
B)4.8
C)3.3
D)3.8
10.以下能正确定义字符串的语句是________。
A)charstr[]={‘\064'};
B)charstr=”\x43”;
C)charstr=”;
D)charstr[]=”\0”;
11.有以下程序
main()
{chara[7]="a0a0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
}
程序运行后的输出结果是________。
A)22
B)76
C)74
D)62
12.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是________。
A)(!
E=0)
B)(E>0||E<0)
C)(E==0)
D)(E!
=0)
13.要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序段是________。
A)while((ch=getchar())!
='N')printf(“%c”,ch);
B)while(ch=getchar()!
='N')printf(“%c”,ch);
C)while(ch=getchar()==N')printf(“%c”,ch);
D)while((ch=getchar())=='N')printf(“%c”,ch);
14.有以下程序
main()
{
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)if(p[i]%2)j+=p[i];
printf("%d",j);
}
程序运行后的输出结果是________。
A)42
B)45
C)56
D)60
15.以下叙述中正确的是________。
A)调用printf函数时,必须要有输出项
B)使用putchar函数时,必须在之前包含头文件stdio.h
C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
16.以下程序的功能是:
给r输入数据后计算半径为r的圆面积s。
程序在编译时出错。
main()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=*p*r*r;printf("s=%f\n",s);
}
出错的原因是________。
A)注释语句书写位置错误
B)存放圆半径的变量r不应该定义为整型
C)输出语句中格式描述符非法
D)计算圆面积的赋值语句中使用了非法变量
17.有以下程序段
intk=0,a=1,b=2,c=3;
k=a>c?
c:
k;
执行该程序段后,k的值是________。
A)3
B)2
C)1
D)0
18.有以下程序段
intn,t=1,s=0;
scanf("%d",&n);
do{s=s+t;t=t-2;}while(t!
=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是________。
A)任意正奇数
B)任意负偶数
C)任意正偶数
D)任意负奇数
19.数字字符0的ASCII值为48,若有以下程序
main()
{chara='1',b='2';
printf("%c,",b++);
printf("%d",b-a);
}
程序运行后的输出结果是________。
A)3,2
B)50,2
C)2,2
D)2,50
20.有以下程序
main()
{intm=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d",n++,++m);
}
程序运行后的输出结果是________。
21.有定义语句:
intb;charc[10];,则正确的输入语句是________。
A)scanf("%d%s",&b,&c);
B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);
D)scanf("%d%s",b,&c);
22.有以下程序
main()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是________。
A)m=123n=456p=789
B)m=123n=456p=789
C)m=123,n=456,p=789
D)123456789
23.以下对二维数组a的正确说明是________.
a)inta[3][];b)floata(3,4);
c)doublea[1][4]d)floata(3)(4);
24.若有说明inta[3][4];则a数组元素的非法引用是
A)a[0][2*1]B)a[1][3]
C)a[4-2][0]D)a[0][4]
25.在C语言中,引用数组元素时,其数组下标的数据类型允许是
A)整型常量B)整型表达式
C)整型常量或整型表达式
D)任何类型的表达式
26.执行下面的程序段后,变量k中的值为
intk=3,s[2];
s[0]=k;k=s[1]*10;
A)不定值B)33C)30D)10
27.定义如下变量和数组:
intk;
inta[3][3]={9,8,7,6,5,4,3,2,1};
则下面语句的输出结果是
for(k=0;k<3;k++)printf("%d",a[k][k]);
A)753B)951C)963D)741
28.设有数组定义:
chararray[]="China";则数组array所占的空间为
A)4个字节B)5个字节
C)6个字节D)7个字节
29.以下不正确的定义语句是
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′};
30.若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是
A)2B)3C)4D)无确定值
31.对以下说明语句的正确理解是
inta[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
33.假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};,则数组x在内存中所占字节数是
A)3B)6C)10D)20
33.以下能对二维数组c进行正确的初始化的语句是
A)intc[3][]={{3},{3},{4}};
B)intc[][3]={{3},{3},{4}};
C)intc[3][2]={{3},{3},{4},{5}};
D)intc[][3]={{3},{},{3}};
34下面程序输出的结果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);
}
A)159B)753C)357D)591
35.下列选项中错误的说明语句是
A)chara[]={′t′,′o′,′y′,′o′,′u′,′\0′};
B)chara[]={"toyou\0"};
C)chara[]="toyou\0";
D)chara[]=′toyou\0′;
36.已知:
intc[3][4];则对数组元素引用正确的是
A)c[1][4]B)c[1.5][0]
C)c[1+0][0]D)以上表达都错误
37.若有以下语句,则正确的描述是
chara[]="toyou";
charb[]={′t′,′o′,′y′,′o′,′u′};
A)a数组和b数组的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)a数组等价于b数组
二.填空题(每小题5分,共35分)
1、下面程序段所表示的数学函数关系是_________。
x=-1;
if(a!
=0)
if(a>0)x=1;
elsex=0;
A)x=
B)x=
C)x=
D)x=
2、下面程序的运行结果是________。
main()
{intn=9;
while(n>6)
{n--;printf("%d",n);}
}
3、以下程序运行后的输出结果是________
main()
{inta[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)
s+=a[i][3];
printf(“%d\n”,s);
}
4.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束
循环。
请填空。
intn=0,c;
c=getchar();
while(____)
{
if(_____)n++;
c=getchar();
}
5.下面程序的运行结果是_________.
#include
main()
{inta,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=7){n=n*a;s=s+n;++count;}
printf("s=%d",s);
}
6、下面程序段的运行结果是_______.
a=3;
while(a<10)
a=a+5;
printf("a=%d",a);
7.下列程序是利用数组求Fibonacci数列前20个数,每5个数据为一行输出,请填空。
Fibonacci数列如下:
f1=1(n=1)
f2=1(n=2)
fn=fn-1+fn-2(n>=3)
#include
main()
{inti;
intf[20]={1,1};
for(i=2;i<20;i++)
f[i]=________;
for(i=0;i<20;i++){
if(i%5==0)printf("\n");
printf("%d\t",f[i]);
}
}
7.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])_______
printf("%d\n",k);
}
8.下列程序的输出的结果是______________。
main()
{inti,jrow,colum,m;
staticintarray[3][3]={{100,200,300},{28,72,-30}{-850,2,6}};
m=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j]<m)
{m=array[i][j];
colum=j;
row=i;
}
printf("%d,%d,%d\n",m,row,colum);
}