12.执行下面程序片段的结果是______。
intx=23;
do{printf("%2d",x--);}while(!
x);
A.打印出321B.打印出23C.不打印任何内容D.陷入死循环
13.有以下程序
main()
{inti,j;
for(i=1;i<=3;i++)
{for(j=i;j<=3;j++)printf("%d*%d=%d",i,j,i*j);
printf("\n");}}
程序运行后的输出结果是。
A.1*1=11*2=21*3=3B.1*1=11*2=21*3=3
2*1=22*2=42*2=42*3=6
3*1=33*3=9
C.1*1=1D.1*1=1
1*2=22*2=42*1=22*2=4
1*3=32*3=63*3=93*1=33*2=63*3=9
14.下列叙述中正确的是______。
A.每一个C程序文件中都必须要有一个main()函数
B.在C程序中main()函数的位置是固定的
C.C程序中所有函数之间都可以相互调用,与函数所在位置无关
D.在C程序的函数中不能定义另一个函数
15.以下叙述中错误的是______。
A.算法正确的程序最终一定会结束
B.算法正确的程序可以有零个输出
C.算法正确的程序可以有零个输入
D.算法正确的程序对于相同的输入一定有个相同的结果
16.与十进制数200等值的十六进制数为______。
A.A8B.A4C.C8D.C4
17.以下程序的功能是:
给r输入数据后计算半径为r的圆面积s,程序在编译时出错。
main()
/*Beginning*/
{intr;floats;scanf("%d",&r);
s=*∏*r*r;printf("s=%f\n",s);}
出错的原因是______。
A.注释语句书写位置错误
B.存放圆半径的变量r不应该定义为整型
C.输出语句中格式描述符非法
D.计算圆面积的赋值语句中使用了非法变量
18.有以下程序
main()
{unsignedinta;
intb=-1;
a=b;printf("%u",a);}
程序运行后的输出结果是______。
A.-1B.65535C.32767D.-32768
19.若以下选项中的变量已正确定义,则正确的赋值语句是______。
A.x1=26.8%3;B.1+2=x2;C.x3=0x12;D.x4=1+2=3;
20.以下程序的输出结果是______。
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11
21.有以下程序
main()
{inta=666,b=888;
printf("%d\n",a,b);}
程序运行后的输出结果是______。
A.错误信息B.666C.888D.666,888
22.以下4个选项,不能看作一条语句的是______。
A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;
10.有以下程序
main()
{chark;inti;
for(i=1;i<3;i++)
{scanf("%c",&k);
switch(k)
{case'0':
printf("another\n");
case'1':
printf("number\n");}
}}
程序运行时,从键盘输入:
01↙,程序执行后的输出结果是______。
A.anotherB.anotherC.anotherD.number
numbernumbernumbernumber
anothernumber
11.有以下计算公式
若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是______。
A.if(x>=0)y=sqrt(x);B.y=sqrt(x);
elsey=sqrt(-x);if(x<0)y=sqrt(-x);
C.if(x>=0)y=sqrt(x);D.y=sqrt(x>=0?
x:
-x);
if(x<0)y=sqrt(-x);
23.C语言中,下列叙述正确的是______。
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环,必须用break语句才能退出
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
13.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。
A.(!
E==0)B.(E>0||E<0)C.(E==0)D.(E!
=0)
44.有以下程序:
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf("%d\n",s);}
程序执行后的输出结果是______。
A.自然数1~9的累加和B.自然数1~10的累加和
C.自然数1~9中奇数之和D.自然数1~10中偶数之和
15.有以下程序
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;}
main()
{printf("%d\n",fun(7));}
执行后的输出结果是______。
A.7B.3C.2D.0
76.以下程序的输出结果是______。
main()
{intw=5;fun(w);printf("\n");}
fun(intk)
{if(k>0)fun(k-1);
printf("%d",k);}
A.54321B.012345
C.12345D.543210
17.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则______。
A.称为函数的直接递归调用B.称为函数的间接递归调用
C.称为函数的循环调用D.C语言中不允许这样的递归调用
58.有以下程序
#include
#defineN5
#defineMN+1
#definef(x)(x*M)
main()
{inti1,i2;
i1=f
(2);
i2=f(1+1);
printf("%d%d\n",i1,i2);}
程序的运行结果是______。
A.1212B.117C.1111D.127
59.有以下程序
main()
{charp[]={'a','b','c'},q[]="abc";
printf("%d%d\n",sizeof(p),sizeof(q));}
程序运行后的输出结果是______。
A.44B.33C.34D.43
60.以下能正确定义一维数组的选项是______。
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";
11.若x是int型变量,且有下面的程序片段
for(x=3;x<6;x++)printf((x%2)?
("**%d"):
("##%d\n"),x);
上面程序片段的输出结果是______。
①**3②##3③##3④**3##4
##4**4**4##5**5
**5##5
A.①B.②C.③D.④
12.要求以下程序的功能是计算:
s=1+1/2+1/3+…+1/10。
main()
{intn;floats;
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
printf("%6.4f\n",s);}
程序运行后输出结果错误,导致错误结果的程序行是
A.s=1.0;B.for(n=10;n>1;n--)
C.s=s+1/n;D.printf("%6.4f\n",s);
13.有以下程序
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;}
x++;}
printf("x=%d\n",x);}
程序执行后的输出结果是______。
A.x=4B.x=8C.x=6D.x=12
31.有以下程序
#include
voidf(charp[][10],intn)/*字符串从小到大排序*/
{chart[10];inti,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])>0)
{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}
main()
{charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));}
程序运行后的输出结果是______。
A.2B.4C.6D.3
22.有以下程序
voidswap1(intc0[],intc1[])
{intt;
t=c0[0];c0[0]=c1[0];c1[0]=t;}
voidswap2(int*c0,int*c1)
{intt;
t=*c0;*c0=*c1;*c1=t;}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a,a+1);swap2(&b[0],&b[1]);
printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}
程序运行后的输出结果是______。
A.3553B.5335C.3535D.5353
33.有以下程序
main()
{chars[]={"aeiou"},*ps;
ps=s;printf("%c\n",*ps+4);}
程序运行后输出的结果是______。
A.aB.eC.uD.元素s[4]的地址
14.下面程序的功能是输出以下形式的金字塔图案:
*
***
*****
*******
main()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)printf("");
for(j=1;j<=______;j++)printf("*");
printf("\n");}}
在下划线处应填入的是______。
A.iB.2*i-1C.2*i+1D.i+2
15.有以下程序
fun(intx,inty){return(x+y);}
main()
{inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);}
执行后的输出结果是______。
A.6B.7C.8D.9
16.有以下程序
voidf(intv,intw)
{intt;
t=v;v=w;w=t;}
main()
{intx=1,y=3,z=2;
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf("%d,%d,%d\n",x,y,z);}
执行后输出结果______。
A.1,2,3B.3,1,2C.1,3,2D.2,3,1
17.设函数fun的定义形式为
voidfun(charch,floatx){……}
则以下对函数fun的调用语句中,正确的是______。
A.fun("abc",3.0);B.t=fun('D',16.5);
C.fun('65',2.8);D.fun(32,32);
29.有以下程序
#include
main()
{FILE*fp;inti,a[6]={1,2,3,4,5,6};
fp=fopen("d3.dat","w+b");
fwrite(a,sizeof(int),6,fp);
fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/
fread(a,sizeof(int),3,fp);fclose(fp);
for(i=0;i<6;i++)printf("%d,",a[i]);}
程序运行后的输出结果是。
A.4,5,6,4,5,6,B.1,2,3,4,5,6,
C.4,5,6,1,2,3,D.6,5,4,3,2,1,
30.有如下程序
#include
main()
{FILE*fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abc");
fclose(fp1);}
若文本文件f1.txt中原有内容为:
good,则运行以上程序后文件f1.txt中的内容为______。
A.goodabcB.abcdC.abcD.abcgood
14.有以下程序
main()
{inta=1,b;
for(b=1;b<=10;b++)
{if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;}
printf("%d\n",b);}
程序运行后的输出结果是______。
A.3B.4C.5D.6
15.有以下程序
inta=4;
intf(intn)
{intt=0;staticinta=5;
if(n%2){inta=6;t+=a++;}
else{inta=7;t+=a++;}
returnt+a++;}
main()
{ints=a,i=0;
for(;i<2;i++)s+=f(i);
printf("%d\n",s);}
程序运行后的输出结果是______。
A.24B.28C.32D.36
16.有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x);}
执行程序时,给变量x输入10,程序的输出结果是______。
A.55B.54C.65D.45
17.以下叙述中错误的是______。
A.C程序必须由一个或一个以上的函数组成
B.函数调用可以作为一个独立的语句存在
C.若函数有返回值,必须通过return语句返回
D.函数形参的值也可以传回给对应的实参
18.有以下程序
#definef(x)(x*x)
main()
{inti1,i2;
i1=f(8)/f(4);i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);}
程序运行后的输出结果是______。
A.64,28B.4,4C.4,3D.64,64
19.有以下程序
main()
{inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i])
{t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序运行后的输出结果是______。
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
20.以下能正确定义一维数组的选项是______。
A.intnum[]B.#defineN100C.intnum[0..100]D.intN=100;
intnum[N]intnum[N]
21.s1和s2已正确定义并分别指向两个字符串。
若要求:
当s1所指串大于s2所指串时,执行语句S;,则以下选项中正确的是______。
A.if(s1>s2)S;B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,s1)>0)S;D.if(strcmp(s1,s2)>0)S;
22.有以下程序
voidfun(int*a,inti,intj)
{intt;
if(i{t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,i,j);}}
main()
{intx[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<4;i++)printf("%2d",x[i]);
printf("\n");}
程序运行后的输出结果是______。
A.1268B.8621C.8162D.8612
23.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是______。
A.p向高地址移了一个字节B.p向高地址移了一个存储单元
C.p向高地址移了两个字节D.p与a+1等价
24.有以下程序
floatf1(floatn){returnn*n;}
floatf2(floatn){return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;y1=p2(p1(2.0));
t=p1;p1=p2;p2=t;y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);}
程序运行后的输出结果是______。
A.8,16B.8,8C.16,16D.4,8
25.设有以下语句
typedefstructTT{charc;inta[4];}CIN;
则下面叙述中正确的是______。
A.可以用TT定义结构体变量B.TT