A.1010&&a<15D.!
(a<=10)&&(a>10)
5.3逻辑表达式
1.(1993_1)当a的值为5, b的值为4时,逻辑表达式a<=6&&a+b>8的值为C
A.trueB.falseC.非0整型值D.整型值0
3.(1996_10)若x,y,z的初值均为1,则执行表达式w=++x||++y&&++z后,x,y,z的值为D
A.x=1,y=1,z=2B.x=2,y=2,z=2C.x=1,y=2,z=1D.x=2,y=1,z=1
5.(1999_5)inta=4,b=5,c=6,d=7,m=1,n=1,e;
c=(m=a>b)&&(n=c>d);
printf("\n%d\t%d",m,n);
6.顺序结构
1.(2003_10)在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是
A.软盘B.硬盘C.键盘D.显示器
3.(1996_2_13)若输入数据为:
3452456ABCD<CR>,其中为回车,则程序的输出结果为a=3,b=4,s=5,c=,d=2456
main()
{
intd;
chara,b,c,s[10];
scanf("%c%c%s%d%c",&a,&b,s,&d,&c);
printf("a=%c,b=%c,s=%s,c=%c,d=%d\n",a,b,s,c,d);
}
7.选择结构
1.(2000_5)关于if语句描述,错误的是
A.条件表达式可以是任意的表达式
B.条件表达式只能是关系表达式或逻辑表达式
C.条件表达式的括号不可以省略
D.与else配对的if语句是其之前最近的未配对的if语句
2.(1997_8)对下面三条语句(其中s1和s2为内嵌语句),正确的论断是
(1)if(a)sl;elses2
(2)if(a==0)s2;elsesl
(3)if(a!
=0)s1;elses2
A.三者相互等价B.
(1)和
(2)等价,但与(3)不等价
C.三者互不等价D.
(1)和(3)等价但与
(2)不等价
3.(2002_2_6)以下程序运行后,x,y,z的值分别为
intx=0,y=3,z=2;
if(x++&&y++)
z--;
elseif(x+1==6||y--)
z++;
4.(1997_2_7)程序输出的最后一行是
#include
main()
{
inti=-5;
while(i++)
{
switch(i+5)
{
case1:
switch(-i-3)
{
case1:
printf("%d\n",i);
case2:
printf("%d\n",i);
}
case2:
printf("%d\n",i);break;
case3:
printf("%d\n",i);
}
}
}
8.循环结构
1.(1998_7)设整型变量x的当前值为3,执行以下循环语句后,输出的结果是
do
printf(“%d\t”,x=-2);
while(!
(--x));
A.0B.1-2C.30D.死循环
2.(1999_6)循环语句:
for(x=0,y=0;y!
=150||x<4;x++)y+=50;执行了多少次?
3.(1997_2_1)有inta,b;则对于下面“for循环中的scanf语句最少可执行次。
最多可执行次。
for(a=0,b=0;b!
=30&&a<3;a++)scanf(%d,&b).
4.(1996_4)设i和s都是整型变量,执行如下语句:
for(i=0,s=0;i+s<10;i++,s++);printf(“%d,%d\n”,i,s);
输出的i和s的值分别为:
A.11,11B.5,5C.6,6D.10,10
5.(1996_2_12)以下程序的输出结果为。
main()
{
inti,j;
for(i=1;i<10;i++)
{
for(j=i+1;j<10;j++,i++)
printf("*");
printf("\n");
}
}
5.(2001_2_5)下列程序的运行结果为
voidmain(void)
{
inti=0,j=10,k=2,s=0;
for(;i<=j;)
{
i+=k++;
s=s+i;
}
printf("%d\n",s);
}
9.continue、break
2.(2003_9)以下跳转语句中,只有可以选择不唯一的跳转目的地。
A.continueB.breakC.goto标识符D.return
3.(2001_2_1)任何函数返回值都是通过函数体中的语句返回的,类型的函数没有返回值,因此它的调用形式不能作为表达式的运算分量;
5.(2001_2_9)执行以下程序时输出第二行是第三行是;
voidmain(void)
{
inta[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i>j+1)
continue;
if(ibreak;
printf("%d,",a[i][j]);
}
printf("\n");
}
}
10.数组
10.1数据数组
1.(2002_4)以下声明语句正确的是
A.intn,a[n];B.inta[];C.inta[2][3]={{1},{2},{3}};D.inta[][3]={{1},{2},{3}};
2.(2003_3)已有声明:
ints[2][3];以下选项中正确的引用了数组s中的基本元素。
A.s[1>2][!
1]B.s[2][0]C.s[1]D.s
3.(1999_4)设有说明:
inta[4][4];与数组元素a[3][3]不等价表示的是
A.(a[3]+3)B.(*(a+3)+3)C.&a[3][3]D.(*(*(a+3))+3
4.(2002_10)设有声明语句:
inta[3][3]={1,2,3,4,5,6,7,8,9};以下语句中不是a[1][2]表达形式的是
A.*(*(a+1)+2)B.*(&a[2][0]-1)C.*(a[1]+2)D.*(a+1)[2];
9.(2002_2_9)执行以下程序时输出第一行是,第二行是;
voidmain(void)
{
inta[3][3]={1,2,3,4,5,6,7,8,9},m,k,t;
for(m=0;m<3;m++)
for(k=0;k<=m;k++)
if((m+k)%2)
t=a[m][k],a[m][k]=a[k][m],a[k][m]=t;
for(m=0;m<3;m++)
{
for(k=0;k<3;k++)
printf("%d",a[m][k]);
printf("\n");
}
}
10.2字符数组
1.(1999_3)staticcharx[]="12345";
staticchary[]={'1','2','3','4','5'};关于以上两语句说法正确的是:
A.x数组和y数组的长度相同B.x数组长度大于y数组长度
C.x数组长度小于y数组长度D.x数组等价于y数组
2.(2002_1)若有声明语句chars1[10]={0},s2[10]=”books”;则能将字符串”books”赋给数组s1保存的表达式是
A.s1=”books”;B.strcpy(s2,s1);C.s1=s2;D.stract(s1,s2);
3.(1998_9)判断两个字符串s1s2是否相等,应当使用
A.if(s1==s2)B.if(s1=s2)C.if(strcmp(s1,s2))D.if(!
strcmp(s1,s2))
5.(1997_2_5)设输入的字符串为:
TheWinXPOperatingsystem
则执行程序后,输出的第一行和最后一行分别是和
#include
main()
{
chara[4][10],i,j;
for(i=0;i<4;i++)
scanf("%s",a[i]);
for(i=0;i<4;i++)
{
j=i;
printf("%s\n",a[i++]+j);
}
}
11.函数
11.1函数定义
1.(2003_1)在定义任何一个函数时,下列选项中是不可缺少的。
A.函数名前的数据类型B.函数名后的圆括号C.形参声明D.函数体中的语句
2.(1998_10)C语言中函数返回值的类型是由决定的。
A.return语句中的表达式类型B.调用该函数的主调函数类型
C.定义函数时所指定的函数类型D.传递给函数的实参类型
3.(1994_2)若对一个函数执行在先,说明在后,C语言将视其返回值为
A.非法B.无返回值C.浮点值D.整型值
4.(2002_2_4)当语句被执行时,程序的执行流程无条件地从一个函数跳转到另一个函数。
5.(2002_3)以下自定义函数的头部,正确的是
A.intfun(inta[],b)B.intfun(inta[],inta)C.intfun(int*a,intb)D.intfun(chara[][],intb)
6.(1998_1)数学式
在C程序中对应正确的表达式为。
A.sqrt(x*x+y*y)/x*yB.sqrt(x*x+y*y)/x*y
C.sqrt(x*x+y*y)/x/yD,sqrt(x*x+y*y)/(x*y))
7.(2000_6)设有以下函数定义,则返回的函数值是
int*fun(int*a)
{
int*t;
*a=99;
t=a;
returnt;
}
voidmain(void)
{
intx,*y;
y=fun(&x);
----
}
A.无确定值B.形参a的地址C.主程序中变量x的地址D.函数中变量t的地址
11.2函数参数传递
1.(1997_3)C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是。
A.地址传递B.值传递C.由实参传给形参,并由形参传回来给实参。
D.由用户指定传递方式
2.(2001_7)在以下程序的main函数中需要调用search函数的位置,填入正确的是
A.search(c[3][4],12,8)B.search(&c[0][0],12,8)C.search(&c,12,8)D.search(**c,12,8)
intsearch(intx[],intn,intk)
{
inti;
for(i=0;iif(x[i]==k)
returni;
return-1;
}
voidmain(void)
{
intk,c[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
if(!
=-1)
printf("found");
else
printf("notfound");
}
11.3数据处理函数
1.(1998_2_5)执行以下程序后,第一行输出是,第二行的输出是,最后一行的输出是。
voidf(intb,intt)
{
intm;
if(b{
m=(b+t)/2;
printf("%d\n",m);
f(b,m-1);
f(m+1,t);
}
}
main()
{
f(1,6);
}
2.(1999_2_8)执行以下程序时输出第一行是,第二行是,第三行是;
inti,j=2;
voidp(void)
{
for(i=0;i<4;i++)
{
printf("%d",++j);
if((i+1)%2==0)
printf("\n");
}
}
voidmain(void)
{
for(i=0;i<3;i++)
p();
printf("%d\n",i);
}
3.(2000_2_7)以下程序的运行结果为
int*swap(int*a,int*b)
{
int*p;
p=a;a=b