z||1)D.x<=y
10.为表示关系a≥b≥c,应使用的C语言表达式是_。
A.(a>=b>=c) B.(a>=b)AND(b>=c)
C. (a>=b)&&(b>=c) D.(a>=b)&(b>=c)
11.数学式
在C程序中正确的表示形式为_______。
A.sqrt(a)/2*bB.sqrt(a)/2/bC.sqrt(a)/2bD.sqrta/(2*b)
12.putchar()函数可以向终端输出一个______。
A.整型变量表达式值B.实型变量值
C.字符串D.字符常量或字符型变量值
13.以下程序运行后的结果是。
#include
voidmain()
{inti=0;
switch(i)
{case0:
printf("%d",i);
case2:
printf("%d",i);break;
default:
printf("%d",i);break;}}
A.000 B.022 C.00 D.0
14.对下面三条语句(其中s1和s2为内嵌语句),正确的论断是______。
(1)if(a)s1;elses2;
(2)if(a==0)s2;elses1;
(3)if(a!
=0)s1;elses2;
A.三者相互等价
B.
(1)和
(2)等价,但与(3)不等价
C.三者互不等价
D.
(1)和(3)等价,但与
(2)不等价
15.假定所有变量均已正确定义,下列程序段运行后x的值是。
a=b=c=0;x=35;
if(!
a)x--;elseif(b);if(c)x=3;elsex=4;
A.34B.35C.3D.4
16.以下程序段的输出结果是。
intx=3;
do{ printf("%3d",x-=2);}
while(!
(--x));
A.1 B.30 C.1-2 D.死循环
17.若变量已正确定义,要求程序段完成求5!
的计算,不能完成此操作的程序段是。
A.for(i=1,p=1;i<=5;i++)p*=i;B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}D.i=1;p=1;do{p*=i;i++;}while(i<=5);
18.以下数组定义中不正确的是______。
A.inta[2][3];B.intb[][3]={0,1,2,3};
C.intc[100][100]={0};D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
19.以下程序段的输出结果是。
#include
voidmain()
{ inti,sum;
for(i=1;i<6;i++)sum+=sum;
printf("%d\n",sum);}
A.15 B.14 C.不确定 D.0
20.以下程序段的输出结果是。
#include
voidmain()
{ inty=10;
for(;y>0;y--)
if(y%3==0)
printf("%d",--y);}
A.741 B.852 C.963 D.875421
21.下列程序的输出为:
。
#include
voidmain()
{intj,k,l=0,m=0;
for(j=0;j<2;j++)
{for(k=0;k<3;k++)l++;l-=k;}
m=j+k;
printf("%d,%d",l,m);}
A.0,3B.0,5C.1,3D.1,5
22.以下程序运行后的输出结果是。
#include
voidmain()
{inti=0,x=0,s=0;
for(;;)
{if(i==3||i==5)continue;
if(i==6)break;
i++;s+=i;};
printf("%d\n",s);}
A.10B.13C.21D.程序进入死循环
23.有定义inta[10];则对a数组元素的正确引用是______。
A.a[10]B.a[-1]C.a(5)D.a[10-10]
24.对以下说明语句的正确理解是______。
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.因为数组长度与初值的个数不相同,所以此语句不正确
25.合法的数组说明语句是______。
A.inta[]="string";B.chara[]="string";
C.chara="string";D.chara[5]={'0','1','2','3','4','5'};
26.若有数组A和B的声明“staticcharA[]="ABCDEF",B[]={'A','B','C','D','E','F'};”,则数组A和数组B的长度分别是______。
A.7,6B.6,7C.6,6D.7,7
27.函数调用“strcat(strcpy(str1,str2),str3)”的功能是______。
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后
C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后
D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中
28.若二维数组a有m列,则在存储其中的某一元素a[i][j]之前有______个数组元素。
A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1
29.函数返回值的类型应由决定。
A.return中的表达式类型B.调用该函数的主调函数类型
C.定义函数所指定的类型D.实参类型
30.以下函数的类型是_______。
fun(floatx)
{floaty;
y=3*x-5.5;
returny;}
A.intB.不确定C.voidD.float
31.以下叙述中正确的是______。
A.函数可以有参数
也可以没有参数
B.C函数既可嵌套定义又可递归调用
C.函数须有返回值,否则不能调用
D.主函数必须书写在子函数之前
32.在下面有关函数间传递数据的四种方式中,不能把被调用函数的数据带回到主调函数中的是。
A.地址传递B.值传递C.返回值传递D.全局变量
33.以下叙述中不正确的是。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
34.函数调用语句“f((e1,e2),(e3,e4,e5));”中参数的个数是。
A.1B.2C.4D.5
35.若有声明“longfun(int*x,intn,long*s);inta[4]={1,2,3,4};longb,c;”,则以下函数调用形式中正确的是_______。
A.c=fun(a,4,b);B.c=fun(a[],4,&b);
C.c=fun(a[4],4,b);D.c=fun(a,4,&b);
36.以下是一个自定义函数的头部,其中正确的是______。
A.intfun(intx[],y)B.intfun(intx[],intx)
C.intfun(intx[],inty)D.intfun(charx[][],inty)
37.设函数中的整形变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是
A.autoB.registerC.staticD.auto或register
38.下面各语句行中,能正确进行赋字符串操作的语句是_________。
A.chars[5]={"ABCDE"};B.chars[5]={'A','B','C','D','E'};
C.char*s;s="ABCDE";D.char*s;scanf("%s",&s);
39.以下程序运行后的输出结果是。
#defineN20
voidfun(inta[],intn,intm)
{inti;
for(i=m;i>=n;i--)
a[i+1]=a[i];}
voidmain()
{inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)
printf("%d",a[i]);}
A.10234B.12344C.12334D.12234
40.intj,*p=&j;要实现j的内容加10,错误的是_________。
A.*p=*&j+10;B.j=*p+10;C.*p=*p+10;D.*p=&j+10;
41.若有说明int(*p)[3];则以下_________是正确的叙述。
A.p是一个指针数组
B.(*p)[3]与*p[3]等价
C.p是一个指针,它可以指向一个一维数组中任一元素
D.p是一个行指针,它可以指向一个包含3列int类型元素的二维数组的每一行
42.设已有定义:
char*st="howareyou";下列程序段中正确的是_________。
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
43.若有结构体类型定义“typedefstructtest{intx,y[2];}TEST;”,则以下声明中正确的是_______。
A.structTESTx;B.structx;C.testx;D.TESTx;
44.对于下列程序段:
structSD
{intx;floaty;};
structSDa[3]={{1001,3.5},{1002,4.5},{1003,4.0}},*p;
p=a;
则下面不正确的使用是__________。
A.(++p)->xB.p++C.(*p).yD.p=&a[0].x
45.值为6的表达式为__________。
structst{intn;structst*next;}
staticstructsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;
p=&a[0];
A.p++->nB.p->n++C.(*p).n++D.++p->n
46.下列语句中,将c定义为文件型指针的是______。
A.FILEc;B.FILE*c;C.filec;D.file*c;
47.有以下程序
#include
structord
{intx,y;}dt[2]={1,2,3,4};
voidmain()
{structord*p=dt;
printf("%d,",++p->x);printf("%d\n",++p->y);
}
程序运行后的输出结果是
A.1,2B.2,3C.3,4D.4,1
48.标准库函数fputs(p1,p2)的功能是______。
A.从p1指向的文件中读一个字符串存入p2指向的内存空间
B.从p2指向的文件中读一个字符串存入p1指向的内存空间
C.从p1指向的内存空间中读一个字符串存入p2指向的文件
D.从p2指向的内存空间中读一个字符串存入p1指向的文件
49.fwrite函数的一般调用形式是______。
A.fwrite(buffer,count,size,fp);B.fwrite(fp,size,count,buffer);
C.fwrite(fp,count,size,buffer);D.fwrite(buffer,size,count,fp);
50.有以下程序
#include
voidmain()
{FILE*f;
f=fopen("filea.txt","w");
fprintf(f,"abc");
fclose(f);
}
若文本文件filea.txt中原有内容为:
hello,则运行以上程序后,文件filea.txt中的内容为
A.helloabcB.abcloC.abcD.abchello
二、阅读程序题(每空2分,共20分)
1.以下程序段的输出结果是①。
#include
voidmain()
{inta=4,b=3,c=5,t=0;
if(a
if(aprintf("%d%d%d\n",a,b,c);}
2.以下程序的输出结果是①。
voidmain()
{chara[]="programming",b[]="language";
char*p1,*p2;inti;
p1=a;p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));}
3.以下程序的输出结果是:
①。
若程序中变量a的值初始化为16,则输出结果是②。
#include
voidmain()
{inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;}}
printf("m=%d\n",m);}
4.以下程序运行时输出结果是①。
#include
#include
intcount(chars[])
{inti=0;
if(s[i]=='\0')return0;
while(isalpha(s[i]))i++;//intisalpha(intch)为检查ch是否为字母的库函数
while(!
isalpha(s[i])&&s[i]!
='\0')i++;
return1+count(&s[i]);}
voidmain()
{charline[]="oneworld,onedream.";
printf("%d",count(line));}
5.运行下列程序,输入字符串"Albert"后,输出结果是①,本程序的功能是②。
#include
voidmain()
{chara[100];
intn;
gets(a);
n=0;
while(a[n]!
='\0')n++;
printf("%d\n",n);}
6.下面程序的输出结果是①。
#include
voidmain()
{intfun(inta);
inta=2,i;
for(i=0;i<3;i++)printf("%2d",fun(a));}
intfun(inta)
{intb=1;staticintc=1;
b++;c++;
return(a+b+c);}
7.以下程序运行后的输出结果是:
①。
#include
voidmain()
{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);}
8.以下程序的输出结果是①。
structks{inta;int*b;};
voidmain()
{structkss[4],*p;intn=1,j;
for(j=0;j<4;j++){
s[j].a=n;s[j].b=&(s[j].a);n+=2;}
p=&s[0];
printf("%d,%d\n",++(*p->b),*s[2].b);}
三、完善程序题(每空2分,共30分)
1.用牛顿迭代法求方程:
4x3-3x2+2x-7=0在1.5附近的根。
要求前后两次求出的根的差的绝对值小于10-5。
#include
#include
voidmain()
{floatx,x0,f,f1;x=1.5;
do{①;
f=((4*x0-3)*x0+2)*x0-7;
f1=(12*x0-6)*x0+2;
x=②;}while(③);
printf("root=%f\n",x);}
2.以下程序求一组整数的最大公约数。
试完善程序以达到要求的功能。
#include
intgcd(inta,intb)
{intr,t;;
if(b>a)
{t=a;a=b;b=t;}
while(①){a=b;b=r;}
returnb;}
voidmain()
{intx,i,a[6]={12,56,48,32,16,24};
x=a[0];
for(i=1;i<6;i++)
x=gcd(x,②);
printf("这组整数的最大公约数为:
%d",x);}
3.以下程序段的功能是将一个2×3的矩阵转置生成一个3×2的矩阵。
(即行列互换)
即13512
24634
56
voidmain()
{inta[2][3],b[3][2],i,j,k;
for(k=1,j=0;j<3;j++)
for(i=0;i<2;i++)
a[i][j]=①;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
b[j][i]=②;
for(i=0;i<3;i++)
{for(j=0;j<2;j++)printf("%3d",b[i][j]);
printf("\n");}}
4.以下程序段的功能是用折半查找法判断任意读入的整数是否在有序数组中。
#definen11
voidmain()
{intx,low,mid,high,find;
staticinta[]={2,5,11,18,24,35,42,50,58,86,92};
scanf("%d",&x);
low=0;high=n-1;find=0;
while((low<=high)&&!
find)
{mid=(low+high)/2;
if(x==a[mid])
①;
else
if(x>a[mid])
②;
else
③;}
if(find)
printf("It'ssuccessful:
a[%d]=%d\n",mid,x);
else
printf("It'sfailtofind%d",x);}
5.程序填空:
以下程序的功能是计算s=
。
#include
longfun(intn)
{inti