k||1)
6.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是(C)。
A.num%2==1B.!
(num%2==0)C.!
(num%2)D.num%2
7.有以下程序
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf(“%d\n”,x);
}
程序运行后的输出结果是(D)。
A.3B.5C.-1D.-2
8.若有变量说明:
inta=0,b=0,c=0;,以下符合C语言语法的赋值表达式是(C)。
A.a=9+b+c=a+9B.a=9+b;c=a+9;
C.a=(9+b,b++)D.a=9+b++=a+7
9.若有以下定义,若intm=7,n=12,则能得到值为3的表达式是(D)。
A.n%=(m%=5)B.n%=(m-m%5)
C.n%=m-m%5D.(n%=m)-(m%=5)
10.以下能正确定义整型变量x、y和z并为其赋初值5的语句是(C)。
A.intx=y=z=5;B.intx,y,z=5;
C.intx=5,y=5,z=5;D.x=5,y=5,z=5;
11.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)。
A.abs(x-y)<10B.x-y>-10&&x-y<10
C.(x-y)<-10||!
(y-x)>10D.(x-y)*(x-y)<100
12.设inta=12,则执行完语句a+=a-=a*a后,a的值是(D)。
A552B264C144D-264
13以下叙述不正确的是(D)
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
14下关于运算符优先顺序的描述中正确的是(C)。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
15下列程序的输出结果是(C)
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
A5B1C0D不确定值
16printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式(B)
A)从左起输出该字串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
17.以下叙述正确的是(C)
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
18.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)
A.7B.8C.6D.2
19.下面不正确的字符串常量是(A)
A.'abc'B."1212"C."0"D.""
20.已知各变量的类型说明如下:
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则以下符合C语言语法的表达式是(A)
A.a+=a-=(b=4)*(a=3)B.a=a*3=2
C.x%(-3)D.y=f1oat(i)
21.若有说明语句:
charc='\72'则变量c描述正确的是(A)
A.包含1个字符B.包含2个字符
C.包含3个字符D.说明不合法,c的值不确定
22.已有定义intx;f1oaty;且执行scanf("%3d%f",&x,&y);语句,若输入1234578(回车),则x的值为(B)
A.12345B.123C.45D.345
23.能正确表示"当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是(C)
A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B.(x>=1)||(x<=10)||(x>=200)||(x<=210)
c.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)
24.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是(A)
A.0B.1C.2D.3
25.在if(x)语句中的x与下面条件表达式等价的是:
(A)
A)x!
=0B)x==1C)x!
=1D)x==0
26、已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为(A)
A、DB、EC、一个不确定的值D、C
27.已知x=3、y=2,则表达式x*=y+8的值为(C)
A)3B)2C)30D)10
28.设x为int型变量,则执行以下语句后,x的值为(B)。
x=10;x+=x-=x-x;
A)10B)20C)40D)30
29若有以下类型说明语句:
chara;intb;
floatc;doubled;则表达式a*b+d-c的结果类型为(D)
A.floatB.charC.intD.double
30若二维数组a有m列,则在a[i][j]前的元素个数为(B)
A)j*m+iB)i*m+j
C)i*m+j-1D)i*m+j+1
31对for(表达式1;;表达式3)可理解为(B)
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
32以下描述不正确的是(C)。
A.使用while和do-while循环时,循环变量初始化的操作应在循环体语句之前完成
B.while循环是先判断表达式,后执行循环语句
C.do-while和for循环均是先执行循环语句,后判断表达式
D.for、while和do-while循环中的循环体均可以由空语句构成
33.下列程序段的运行结果是(C)。
intn=0;while(n++<=3);printf(“%d”,n);
A3B4C5D有语法错误
34.设inta=3,b=4,c=5;,下列表达式的值不为1的是(A)。
A)a+b>c&&b==cB)a||b+c&&b-c
C)!
(a>b)&&!
c||1D)!
(a+b)+c-1&&b+c/2
35.有以下程序:
#include
voidmain()
{
inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是(C)。
A)0,0B)0,1C)1,0D)1,1
36、以下能正确进行字符串赋值操作的是(D)
A、chars[5]={"ABCDE"};
B、chars[5]={'A','B','C','D','E'};
C、char*s;*s="ABCDE";
D、char*s="ABCDE";
37下面程序的运行结果是(B)
#include
#include
main()
{
char*s1="AbDeG";
char*s2="AbdEg";
s1+=2;s2+=2;
printf("%d",strcmp(s1,s2));
}
A)正数B)负数C)零D)不确定的值
38若有定义:
inta[2][3],则对a数组的第i行j列元素地址的正确引用为(A)
A)*(a[i]+j)B)(a+i)C)*(a+j)D)a[i]+j
39以下能对二维数组y进行初始化的语句是(B)
A、staticinty[2][]={{1,0,1},{5,2,3}};
B、staticinty[][3]={{1,2,3},{4,5,6}};
C、staticinty[2][4]={{1,2,3},{4,5},{6}};
D、staticinty[][3]={{1,0,1,0},{},{1,1}};
40以下printf语句的输出结果是(B)
printf("%d\n",strlen("school");
A、7B、6C、存在语法错误D、不定值
41不能把字符串:
Hello!
赋给数组b的语句是(B)。
A.charb[10]={'H','e','l','l','o','!
'};
B.charb[10];b="Hello!
";
C.charb[10];strcpy(b,"Hello!
");
D.charb[10]="Hello!
";
42.设有定义:
inta[10],*p=a+6,*q=a;,则下列运算哪种是错误的(C)
Ap-qBp+3Cp+qDp>q
43.下列描述中不正确的是(C)
A)字符型数组中可以存放字符串
B)可以对字符型数组进行整体输入、输出
C)可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
44以下对指针变量的操作中,不正确的是(D)
A、inta,*p,*q;p=q=&a;
B、inta=6,*p,*q=&a;p=q;
C、inta=b=6,*p;p=&a;b=*p;
D、inta,*p,*q;q=&a;p=*q;
45.给出以下定义
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为(C)。
A)数组x和数组y等价
B)数组x和数组y的长度相同
C)数组x的长度大于数组y的长度
D)数组x的长度小于数组y的长度
46、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(B)
A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0
C、y=y*100+0.5/100.0D、y=(y/100+0.5)*100.0
47判断char型变量c1是否为大写字母的正确表达式是(C)
A、'A'<=c1<='Z'B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)
48若a为已知整型变量,则对指针变量p的正确说明和初始化为(B)。
A.int*p=a;B.int*p=&a;C.int*p=*a;D.int&p=&a;
49下列条件语句中,功能与其它语句不同的是(D)。
A.if(a)printf(“%d\n”,x);elseprintf(“%d\n”,y);
B.if(a==0)printf(“%d\n”,y);elseprintf(“%d\n”,x);
C.if(a!
=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);
D.if(a=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);
50.若有语句:
char*line[5];,以下叙述中正确的是(A)。
A)定义line是一个指针数组,每个数组元素是一个基类型为char的指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
第二部分:
中等难度题目(24个题目,从中选择8个,每题1.5分共12分)
1设有声明语句:
inta=1,b=0;则执行以下语句后输出:
(B)
switch(a)
{
case1:
switch(b)
{
case0:
printf("**0**");break;
case1:
printf("**1**");break;
}
case2:
printf("**2**");break;
}
A)**0**B)**0****2**
C)**0****1****2**D)有语法错误
2若有如下程序段,其中s,a,b,c均已定义为整型变量,且a、c均已赋值
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是(B)。
A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;
3.若有程序段:
for(m=1;m<=100;m++)
{
scanf("%d",&y);
if(y<0)continue;
printf("%3d",m);
}
正确的描述是(D)。
A当y<0时整个循环结束By>=0时什么也不输出
Cprintf函数永远也不执行D最多允许输出100个非负整数
4.若有程序段如下:
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);if(c)x=3;
elsex=4;
执行后,变量x的值是(B)
A.34B.4C.35D.3
5.有以下程序:
#include
voidmain()
{
inti=0,s=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i;
};
printf("%d\n",s);
}
程序运行后的输出结果是(D)。
A)10B)13C)21D)程序进入死循环
6下面程序段是输出两个字符串中对应位置相等的字符,横线处应该是(A)
charx[]=”programming”;
chary[]=”Fortran”;
inti=0;
while(x[i]!
=’\0’&&y[i]!
=’\0’)
if(x[i]==y[i])printf(“%c”,);
elsei++;
A)x[i++]B)y[++i]
C)x[i]D)y[i]
7.阅读以下程序:
#include
voidmain()
{
intx;
scanf("%d",&x);
if(x--<5)printf("%d",x);
elseprintf("%d",x++);
}
程序执行后,如果从键盘上输入5,则输出结果是(B)
A)3B)4C)5D)6
8intfun(char*a,char*b)
{
while((*a!
='\0')&&(*b!
='\0')&&(*a==*b))
{
a++;b++;
}
return(*a-*b);
}
该函数的功能是___D___。
A)计算a和b所指字符串的长度之差
B)将b所指字符串连接到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
9.有如下程序段:
charstr[14]={"Iam"};
strcat(str,"sad!
");
scanf("%s",str);
printf("%s",str);
当输入为happy!
时,输出的结果是(B)。
(A)Iamsad!
(B)happy!
(C)Iamhappy!
(D)happy!
ad!
10.以下程序的输出结果是(C)。
#include
#include
voidmain()
{
charb[30];
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",b);
}
A)CHDEFB)DEFABCC)CDABCD)CHABC
11.下面程序的输出结果为(A)。
#include
voidmain()
{
inta[3],i,j,k=2;
for(i=0;i<3;i++)
a[i]=0;
for(i=0;ifor(j=0;ja[j]=i*j;
printf("%d\n",a[2]);
}
A)0B)1C)2D)3
12.以下程序:
#include
voidmain()
{
intaa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];
for(i=0;i<2;i++)
{
if(i==0)aa[i][i+1]=*p+1;
else++p;
printf("%d",*p);
}
printf("\n");
}
其输出结果是(A)
A)23B)26C)33D)36
13.下面程序的输出结果是(B)。
#include
voidmain()
{
inti,j,k;
charstr[5];
for(i=0;i<5;i++)str[i]='A';
k=4;
for(i=0;ifor(j=0;jstr[j]=str[i]+32;
printf("%c\n",str[k]);
}
A)aB)AC)BD)不确定的值
14.下列程序的输出结果为(B)。
#include
voidmain()
{
intk=0,i,s[]={1,-9,7,2,-10,3};
for(i=0;i<6;i++)
if(s[i]>s[k])
k=i;
printf("\n%d\n",k);
}
(A)4(B)2(C)3(D)1
15.以下程序的输出结果是(C)。
#include
voidmain()
{
chara[10]={'1','2','3','4','5','6','7','8','9',0},*p;
inti;
i=8;
p=a+i;
printf("%s\n",p-3);
}
A)6B)'6'C)6789D)789
16.有以下程序
#include
voidmain()
{
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;
printf("%d\n",*p+*q);
}
程序运行后的输出结果是(B)。
A)16B)10C)8D)6
17.有以下程序
#include
voidmain()
{
inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",a[1][i]);
}
程序运行后的输出结果是(D)
A)012B)123C)234D)345
18.有以下程序
#include
voidmain()
{
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\n",j);
}
程序运行后的输出结果是(C)。
A)42B)45C)56D)60
19.有以下程序
voidsum(int*a)
{a[0]=a[1];}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--)sum(&aa[i]);
printf("%d\n",aa[0]);
}执行后的输出结果是(A)
A.4B.3C.2D.1
20.以下程序运行后,输出结果是(A)。
#include
intd=1;
voidfun(intp)
{
intd=5;
d+=p++;
printf("%d",d);
}
voidmain()
{
inta=3;
fun(a);