C.a>10&&a<15D.!
(a<=10)&&!
(a>=15)
3.当调用函数时,实参是一个数组名,则向函数传送的是()。
A.数组的长度B.数组的首地址
C.数组每一个元素的地址D.数组每个元素中的值
4.执行下面的程序段后,k的值是()
intk=1,n=325;
do{k*=n%10;n/=10;}while(n);
A.3B.30C.523D.325
5.若有以下数组说明,则i=6;a[a[i]]元素数值是( )。
inta[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A.3B.8C.6D.5
6.若变量已正确定义,要求程序段完成求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);
7.若有:
inta[][3]={{1,2,3},{4,5},{6,7},{8}};则数组a的第一维的大小为:
()
A.12B.3C.4D.无确定值
8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是()。
chars[20]=“Bejing”,*p;
p=s;
A.可以用*p表示s[0]
B.s数组中元素的个数和p所指字符串长度相等
C.s和p都是指针变量
D.数组s中的容和指针变量p中的容相等
9.以下正确的函数定义是()。
A.doublesum(intx,inty)B.doublesum(intx,y)
{z=x+y;returnz;}{intz;returnz;}
C.sum(x,y)D.doublesum(intx,inty)
{intx,y;doublez;{doublez;
z=x+y;returnz;}z=x+y;returnz;}
10.已知学生信息描述为
structstudent
{
intno;
charname[20];
charsex;
struct{intyear;intmonth;intday;}birth;
};
structstudents;
设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是()。
A.year=1984;month=11;day=11;
B.birth.year=1984;birth.month=11;birth.day=11;
C.s.year=1984;s.month=11;s.day=11;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=11;
11.下列数据中,为字符串常量的是()。
A.′A′B.Howdoyoudo.C."A"D.$abc
12.以下运算符中,优先级最高的运算符是()。
A.||B.%C.!
D.==
13.执行以下程序段后,输出结果和a的值是()。
inta=10;
printf("%d",++a);
A.10和10B.10和11C.11和10D.11和11
14.有定义语句:
intx,y;若要通过scanf("%d%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是()。
A.1112<回车>B.11,<空格>12<回车>
C.11,12<回车>D.11,<回车>12<回车>
15.下列定义数组的语句中,正确的是( )。
A.intx[0..10];B.intx[];
C.#defineN10D.intN=10;
intx[N];intx[N];
16.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()。
A.intp=&x;B.int*p=x;C.*p=*x;D.int*p=&x;
17.以下不是无限循环的语句为()。
A.for(y=0,x=1;x>++y;x=i++)i=x;
B.for(;;x++=i);
C.while
(1){x++;}
D.for(i=10;;i--)sum+=i;
18.有以下函数,函数的功能是( )。
intfun(char*x,char*y)
{ intn=0;
while((*x==*y)&&*x!
='\0'){x++;y++;n++;}
returnn;
}
A.将y所指字符串赋给x所指存储空间
B.查找x和y所指字符串中是否有'\0'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
19.语言中,定义结构体的保留字是()。
A.unionB.structC.enumD.typedef
20.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A.openB.fopenC.closeD.fclose
21.在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式()。
A.只能用逻辑表达式B.只能用关系表达式
C.只能用逻辑表达式或关系表达式D.可用任意表达式
22.假设所有变量均为整型,表达式:
a=2,b=5,a>b?
a++:
b++,a+b的值是()。
A.7B.8C.9D.2
23.若有如下代码,则a的值为()。
inta=1,b=2,c=3;
if(a>b)a=b;
if(a>c)a=c;
A.1B.2C.3D.不一定
24.假定所有变量均已正确定义,下列程序段运行后x的值是()。
k1=1;k2=2;k3=3;x=15;
if(!
k1)x--;
elseif(k2)x=4;
elsex=3;
A.14B.4C.15D.3
25.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);()。
A.是无限循环B.循环次数不定C.4次D.3次
26.以下运算符中,优先级最高的运算符是()。
A.||B.%C.!
D.==
27.有定义语句:
intx,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是()。
A.1112<回车>B.11,<空格>12<回车>
C.11,12<回车>D.11,<回车>12<回车>
28.chara[10];不能将字符串"abc"存储在数组中的是()。
A.strcpy(a,"abc");B.a[0]=0;strcat(a,"abc");
C.a="abc";D.inti;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;
29.以下程序段char*alp[]={"ABC","DEF","GHI"};intj;puts(alp[1]);的输出结果是()。
A.AB.BC.DD.DEF
30.若执行fopen函数时发生错误,则函数的返回值是()。
A.地址值B.0C.1D.EOF
二、读程序,写出程序的运行结果
1.以下程序的输出结果是()。
#include
voidmain()
{intx=0,y=1,a=0,b=0;
switch(x)
{
case0:
switch(y)
{
case0:
a++;
case1:
b++;
}
case1:
switch(y)
{
case0:
a=a+5;
case1:
b=b+5;
}
}
printf(“a=%d,b=%d\n”,a,b);
}
2.以下程序的输出结果是()
#include
voidmain()
{intx=-5,y=2,z=1;
if(xif(y<0)z=0;
elsez=z+1;
printf(“%d\n”,z);
}
3.以下程序的输出结果是:
()
#include"stdio.h"
voidmain()
{
intj,k,x[4][4],y[4][4];
for(j=0;j<4;j++)
for(k=0;k<4;k++)
x[j][k]=j+k;
for(j=0;j<4;j++)
for(k=0;k<4;k++)
y[k][j]=x[j][k];
for(j=0;j<4;j++)
{for(k=0;k<4;k++)
printf("%d",y[j][k]);
printf("\n");
}
}
4.以下程序的输出结果是:
()
#include
voidmain()
{inti,j;
for(i=j=1;j<10;j++,i++)
{
if(j==5)
break;
if(i%2)
continue;
printf("i=%d,j=%d\n",i,j);
}
}
5.若有以下程序段,则输出结果是( )。
#include
voidmain()
{
chars2[]="\"c:
\\abc.dat\"";
printf(“%s\n”,s2);
}
6.以下程序的输出结果是:
()
#include
intfun(intn)
{ints;
if(n==1||n==0)s=5;
elses=n+fun(n-1);
returns;
}
voidmain()
{
printf("%ld\n",fun(3));
}
7.以下程序的输出结果是:
()
voidmain()
{inta[]={2,4,6,8,10};
inty=120,x,*p;
p=&a[1];
for(x=0;x<3;x++)y+=*(p+x);
printf("y=%d\n",y);
}
8.以下程序的输出结果是:
()
#include
voidsub(ints[],inty)
{
staticintt=3;
y=s[t];
t--;
}
voidmain()
{
inta[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++)
{
sub(a,x);
printf(“%d”,x);
}
printf(“\n”);
}
9.以下程序段运行后x的值是:
()
k1=1;k2=0;k3=3;x=15;
if(!
k1)x--;
elseif(k2)x=4;
elsex=3;
10.以下程序的输出结果是:
()
#include
main()
{ints=0,n;
for(n=0;n<4;n++)
{switch(n)
{default:
s+=5;
case1:
s+=1;
case2:
s+=2;
case3:
s+=3;
}
}
printf("%d\n",s);
}
11.以下程序段运行后sum的值是:
()
inta[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++)sum+=a[i][2-i];
12.以下程序的输出结果是:
()
#include
intmain()
{
inti=10,n=0,m=0;
do
{
if(i%2!
=0)
n=n+i;
else
m=m+i;
i--;
}while(i>=0);
printf("n=%d,m=%d\n",n,m);
return0;
}
13.以下程序的输出结果是:
()
#include
voidmain()
{
inta,b;
for(a=1,b=1;a<=100;a++)
{
if(b>20)break;
if(b%4==1)
{
b=b+4;
continue;
}
b=b-5;
}
printf("b=%d\n",b);
}
14.以下程序的输出结果是:
()
#include
funa(inta)
{intb=0;
staticintc=4;
a=c++,b++;
return(a);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=funa(a++);
printf("%d\n",k);
}
15.以下程序的输出结果是:
()
#include
voidmain(void)
{
chara[]="ABCDEFGH",b[]="abcDefGh";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k));
printf("\n");
}
16.以下程序的输出结果是:
()
#include
#include
intmain()
{
inti;
charstr1[30]="abc",str2[3][5]={"defg","hij\0","klm"};
for(i=1;i<3;i++)
strcat(str1,str2[i]);
puts(str1);
return0;
}
17.以下程序的输出结果是:
()
voidmain()
{
intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%.4f\n",x);
}
18.以下程序段的输出结果是:
()
inta=3,b=2,c=1;
if(a>b>c)a=b;
elsea=c;
printf("%d\n",a);
19.以下程序的输出结果是:
()
intfunc(intx,inty)
{return(x+y);}
voidmain()
{
inta=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
20.下列程序执行后的输出结果是()。
voidmain()
{
inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
21.以下程序的输出结果是:
()
#include
voidfun(inta[]);
voidmain()
{inti,a[5]={1,2,3};
fun(a);
for(i=0;i<5;i++)
printf("%5d",a[i]);
printf("\n");
}
voidfun(inta[])
{inti;
for(i=0;i<5;i++)
a[i]+=5;
}
22.以下程序的输出结果是:
()
#include
voidmain()
{inti,f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<5;i++)
printf("%d",f[i]);
}
23.以下程序的输出结果是:
()
#include
voidmain()
{intm=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
}
24.以下程序的输出结果是:
()
#include
#include
intmain()
{
inti;
charstr[20]="abcdef";
strcpy(str,"opqrst");
str[5]='\0';
for(i=0;iputchar(str[i]);
printf("\n");
return0;
}
三、程序填空
1.任意输入一个非负的整数x,求该数的逆序数y,并判断x、y能否被17整除。
#include
intmain()
{intx,a,y,t;
printf("请输入一个非负的整数\n");scanf("%d",&x);
t=x;
【1】
do
{a=x%10;//取得个位数字
【2】;//获得逆序数
x=x/10;//去掉个位数字
}while(【3】);
if(【4】)printf("x能被17整除\n");
elseprintf("x不能被17整除\n");
if(y%17==0)printf("y能被17整除\n");
elseprintf("y不能被17整除\n");
return0;
}
2.有一行文字,要求删去某一个字符。
此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入a表示要删去所有的a字符)。
#include
voidmain()
{/*str1表示原来的一行文字,str2表示删除指定字符后的文字*/
charstr1[100],str2[100];
charch;
inti=0,k=0;
printf(“pleaseinputansentence:
\n”);
gets(【5】);
scanf("%c",&ch);
for(i=0;【6】;i++)
if(str1[i]!
=ch)
{str2[【7】]=str1[i];k++;}
str2[【8】]='\0';
printf("\n%s\n",str2);
}
3.下面给定程序中函数fun的功能是:
求k!
,所求阶乘的值作为函数值返回。
例如:
若k=10,则应输出:
3628800。
请按要求把程序补充完整,使它能得出正确的结果。
#include
longfun(intk)
{if(k>0)
return(【9】);
elseif(【10】)
return1L;
}
main()
{intk=10;
printf("%d!
=%ld\n",k,fun(k));
}
4.函数fun的功能是:
逆置数组元素中的值。
形参n给出数组中的数据的个数。
例如:
若a所指数组中的数据依次为:
1、2、3、4、5、6、7、8、9,则逆置后依次为:
9、8、7、6、5、4、3、2、1。
请按要求把空白部分补充完整。
voidfun(inta[],intn)
{ inti,t;
for(i=0;i<【11】;i++)
{t=a[i];
a[i]=a[n-1-【12】];
【13】=t; } }
5.下面的程序是输出1~100之间的全部素数,其中函数prime的功能是判断一个数n是否是素数。
当n是素数时,函数prime的返回值为1;当n不是素数时,函数prime的返回值为0。
请按要求把程序补充完整。
#include
#include
intprime(intn)
{inti;
for(i=2;i<=sqrt(n);i++)
if(【14】)return0;
return1;
}
intmain()
{inti;
for(i=2;【15】;i++)
if(【16】)printf("%5d",i);
printf("\n");
return0;
}
6.下面程序的功能是:
由键盘输入10个整数,计算这10个整数中的奇数和与偶数和。
请按要求把程序补充完整。
#include
voidmain()
{inta,b,c,i;
a=c=0;
for(i=1;i<=10;i++)
{scanf("%d",&b);
if(【17】)a=a+b;
else【18】;
}
printf("偶数的和=%d\n",a);
printf("奇数的和=%d\n",c);
}
7.下面给定程序的功能是:
从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
请按要求把程序补充完整。
#include
voidmain()
{intn=0,c;
c=getchar();
while(【19】)
{if(【20】)
n++;
c=getchar();
}
printf("【21】个数字\n",n);
}
8.程序的功能是:
求矩阵的转置。
请按要求把空白部分补充完整。
#inclu