}
printf("\n%d,%d",p,q);
}
A)求最大值和最小值B)求最大值的位置和最小值的位置
C)求最大值的位置和最小值D)求最大值和最小值的位置
10.若希望当字符变量a中为数字字符时,表达式的值为“真”,为非数字字符时,表达式的值为“假”。
则以下不能满足要求的表达式是(10)。
A)a>=0&&a<=9B)a>=’0’&&a<=’9’
C)a>=48+0&&a<=48+9D)a-‘0’>=0&&a-‘0’<=9
11.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(11)。
A)只能用逻辑表达式 B)只能用关系表达式
C)只能用逻辑表达式或关系表达式D)可用任意表达式
12.以下论述中正确的是(12)。
A)在同一个函数中不能定义多个同名的变量
B)结构体变量的名字可以与其所属的成员的名字相同
C)局部变量的名字不能与函数名相同
D)局部变量的名字不能与全局变量的名字相同
13.在以下各循环语句中,不能正确计算自然数1-100中所有数之和的是(13)。
A)for(s=0,i=1;i<=100;)s+=++i;
B)for(s=100,n=100;--n;)s+=n;
C)for(s=0,i=1,j=100;i<=j;i++,j--)s+=i+j;
D)for(s=0,i=0;i<=100;)s+=i++;
14.假定要使以下程序的输出结果第一行都是1,第二行都是2,第三行都是3,则正确的数据输入格式是(14)。
main()
{inti,j,a[3][3];
for(j=0;j<3;j++)
for(i=0;i<3;i++)scanf(“%d”,&a[i][j]);
for(i=0;i<3;i++)
{printf(“\n”);for(j=0;j<3;j++)printf(“%d”,a[i][j]);}
}
A)123123123B)111222333
C)1,2,3,1,2,3,1,2,3D)1,1,1,2,2,2,3,3,3
15.以下各程序段中,不能正确输入10个数到数组a中的是(15)。
A)inti,a[10];for(i=0;i<10;i++)scanf(“%d”,a[i]);
B)inti,a[10];for(i=0;i<10;i++)scanf(“%d”,a+i);
C)inta[10],*p;for(p=a;i<10;p++)scanf(“%d”,p);
D)inti,a[10],*p=a;for(i=0;i<10;i++)scanf(“%d”,p++);
二、程序阅读题
16.以下程序的运行结果是(16)。
main()
{inti,n=0;
for(i=1;i<20;i++)if(i%3==0&&i%5)n++;
printf(“\n%d”,n);
}
A)1B)5C)6D)7
17.以下程序的运行结果是(17)。
main()
{ inti,n=0;
for(i=2;i<5;i++)
{ do { if(i%3) continue;n++;}while(!
i);
n++;
}
printf("\n%d",n);
}
A)2B)3C)4D)5
18.以下程序的运行结果是(18)。
inta=2;
intf(int*a){return(*a)++;}
main()
{ ints=0;
{inta=5;s+=f(&a);}
s+=f(&a);
printf("\n%d",s);
}
A)7B)8C)9D)10
19.以下程序的运行结果是(19)。
main()f(char*c)
{char*a[]=”FORTRAN77”;{for(;*c;c++)
f(a+1);printf(“%s”,a);if(*c>=’A’&&*c<=’Z’)*c=*c+32;
}printf(“\n%d,%d”,a,b);}
A)Fortran77B)fortran77C)FORTRAN77D)fORTRAN77
20.以下程序的运行结果是(20)。
main()
{inti=6,j=0,k;
for(k=0;k<3;k++){j=j*2+i%2;i/=2;}
printf(“%\n%d,%d”,i,j);
}
A)6,3B)0,3C)0,6D)6,6
21.以下程序的运行结果是(21)。
main()f(int*x,intb)
{inta=3,b=5;{
f(&a,b);*x+=2;
printf(“\n%d,%d”,a,b);b++;
}}
A)3,5B)5,6C)3,6D)5,5
22.以下程序的运行结果是(22)。
inta=3,b=5;
f(inta){a++;b+=a;}
main()
{inta=6;f(a-1);printf("\n%d,%d",a,b);}
A)3,8B)3,11C)6,8D)6,11
23.以下程序的运行结果是(23)。
main()
{inti,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;while(b––>=0)k++;}
printf(“%d,%d”,k,b);
}
}
A)3,–1B)8,–1C)3,0D)8,–2
25.以下程序的运行结果是(25)。
voidf(char*s,char*p)main()
{for(;*s;s++);{chara[10]="fx",b[]=abCD12";
for(;*p;p++)f(a,b);
if(*p>='A'&&*p<='Z')*s++=*p;printf("\n%s",a);
*s=0;}
}
A)abCD12B)fxabCD12C)CDD)fxCD
三、程序填充题
选择适当的内容填在以下各程序的下划线处,以使程序完整。
●用折半查找法查找整数k在数列a中的位置(数列a中的数按从小到大有序),若a中有与k相同的数则返回其位置(下标),否则返回-1。
intsearch(inta[],intn,intk)
{inti=0,j=n–1,m;
while(i<=j)
{m=(i+j)/2;
if(a[m]elseif(a[m]>k)(27);
else(28);
}
return(–1);
}
}
(26)A)i=m-1B)i=m+1C)j=m-1D)j=m+1
(27)A}i=m-1B)i=m+1C)j=m-1D)j=m+1
28)A}return–1B)returnCreturniD)return
●将两个有序的数组合并到另一个数组中,要求合并后仍有序。
main()
{inti=0,m=5,a[5]={1,3,7,9,13};
intj=0,n=6,b[6]={2,4,8,16,20,24};
intk=0,c[11];
while(i+j{if(i>=m)c[k++]=(29);
elseif(j>=n)c[k++]=(30);
elseif((31))c[k++]=a[i++];
elsec[k++]=b[j++];}
for(i=0;i(29)A)a[i++]B)a[j++]C)b[i++]D)b[j++]
30)A)a[i++]B)a[j++]C)b[i++]D)b[j++]
●给定一英文句子的字符串,统计其中的单词个数的函数。
intword_num(char*a)
{intn=0,in_word=0;
for(;*a;a++)
{if(*a!
='')
{
if(!
in_word)(32);
}else(33);
}
returnn;
}
(32)A}n++;in_word=0;B)n++C)n++;in_word=1D)in_word=1
(33)A}n++B)in_word=0C)in_word=1D)continue
●从数列a中找到最小的数,并将它插入到最前面。
voidreplace(inta[],intn)
{inti,j=0,k;
for(i=0;ik=a[j];
for((34))a[i]=a[i-1];
(35);
}
(34)A)i=n-1;i>j;i--B)i=j;i>0;i--C)i=1;i(35)A)a[i]=a[j]B)a[i]=kC)a[0]=k;D)a[0]=a[j]
四、程序设计
1.输入两个正整数x和y,求它们的最小公倍数,输出运行结果。
2.输入某年某月,输出该月的天数。
答案
一.单项选择题
1.A2.D3.B4.C5.C6.B7.C8.C9.D10.A
11.D12.B13.A14.A15.A
二.程序阅读题
16.B17.C18.A19.A20.B21.D22.D23.D24.D25.D
三.程序填充题
26.B27.C28.B29.D30.A31.C32.C33.B34.B35.C
四、程序设计
1.#include“stdio.h”
main()
{inta,b,max,i;
printf(“pleaseinputaandb:
”);
scanf(“%d%d”,&a,&b);
if(a>b)
max=a;
else
max=b;
for(i=max;i<=a*b;i++)
if(i%a==0&&i%b==0)break;
printf(“%d\n”,i);
}
2.#include“stdio.h”
main()
{inty,m,days;
printf(“inputyearandmonth:
”);
scanf(“%d,%d”,&y,&m);
switch(m)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case4:
case6:
case9:
case11:
days=30;break;
case2:
if(y%4==0&&y%100!
=0||y%400==0)days=29;
elsedays=28;
}
printf(“days=%d\n”,days);
}
复习题二
一.填空题
1.若有以下定义,则执行表达式y+=y-=m*=y后y的值是______。
intm=5,y=2;
2.若有说明:
inta[3][4]={{1,2},{0},{4,6,8,10}},则a[1][2]=;
3.能表达“204.表达整型变量a能被3整除但不被5整除的表达式是______。
5.定义a为共有16个元素的一维字符数组、同时定义p为指向a数组首地址的指针变量的语句为。
6.C语言中唯一的三元运算符是。
7.设有:
inta=3,b=4,c=5,则!
(a>b)&&!
c||1的值为。
8.设i,j均为int型变量,则执行完下面的for循环后,k的值为。
for(i=1,j=10;i<=j;i++,j--)k=i+j;
9.访问结构体数组元素a[k]的成员b,写作。
10.a、b都是结构体变量,语句“a=b;”能够执行的条件是。
二.选择
1.要使以下程序的输出结果的第一行都是1,第二行都是2,第三行都是3,正确的数据输入格式可以是。
main()
{inti,j,a[3][3];
for(j=0;j<3;j++)
for(i=0;i<3;i++)
scanf(“%1d”,&a[i][j]);
for(i=0;i<3;i++)
{printf(“\n”);
for(j=0;j<3;j++)printf(“%1d”,a[i][j]);
}
}
A.111222333B.123123123C.333222111D.321321321
2.C语言程序的三种基本结构是顺序结构、选择结构和结构。
A.递归B.嵌套C.转移D.循环
3.判断char形变量ch是否是大写字母的正确表达式是。
A.‘A’<=ch<=’Z’B.(ch>=’A’)&(ch<=’Z’)
C.(ch>=’A’)&&(ch<=’Z’)D.(‘A’<=ch)AND(‘Z’>=ch)
4.已知intx=10,y=20,z=30;以下语句执行后,x、y、z的结果是。
if(x>y)
z=x;x=y;y=z;
A.x=10,y=20,z=30B.x=20,y=30,z=30
C.x=20,y=30,z=10D.x=20,y=30,z=20
5.定义函数时,缺省函数的类型声明,则函数类型取缺省类型。
A.voidB.char
C.floatD.int
6.以下程序段的运行结果是。
x=0;y=0;
while(x<15)y++,x+=++y;
printf(“%d,%d”,y,x);
A.20,7B.6,20C.20,8D.8,20
7.若用数组名作为函数调用的实参,传递给形参的是。
A.数组的首地址B.数组第一个元素的值
C.数组全部元素的值D.数组元素的个数
8.以下程序的运行结果是。
main()
{inta[5]={1,2,3,4,5},i,j,t;
for(j=1;j<=2;j++)
{t=a[4];
for(i=0;i<4;i++)a[i+1]=a[i];
a[0]=t;
}
for(i=0;i<5;i++)printf("%d",a[i]);
}
A.45123B.34512C.51111D.15555
9.若有以下的定义:
intt[3][2];能正确表示t数组元素地址的表达式是。
A.&t[3][2]B.t[3]C.t[1]D.t[2][0]
10.以下程序的运行结果是。
inta=3,b=5;
f(inta){a++;b+=a;}
main()
{inta=6;
f(a-1);
printf("\n%d,%d",a,b);
}
A.3,8B.3,11C.6,8D.6,11
11.不是无限循环的语句有
A.for(i=0;i=10;i++);B.for(i=10;i--;);
C.for(i=-10;;i++);D.for(;i=1;);
12.若inta=10;执行下列程序后,变量a的正确结果是
switch(a){case9:
a+=1;
case10:
a+=1;
case11:
a+=1;
default:
a+=1;
}
A.10B.11C.12D.13
13.以下程序的运行结果是。
main()
{chara[20]="xyz",*p=a,*p1;
for(;*p;p++);
for(p1=p-1;p1>=a;p++,p1--)*p=*p1;
*p=0;
printf("\n%s",a);
}
A.xyzB.zyxC.xyzxyzD.xyzzyx
14.以下程序的运行结果是。
voidf(char*p)
{if(*P==0)return;
if(*p!
=’d’)f(p+1);
printf(“%c”,*p);
}
main()
{charc[]=“abcdef”;
f(c);
}
A.abcdefB.fedcbaC.abcdD.dcba
15.以下程序的正确的运行结果是。
sub(intx,inty,int*z)
{*z=y-x;}
main()
{inta,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
16.以下程序中,不符合C语法规则的语句有。
main()
{int*p1,a[10];
float*p2;
A.p1=a+1;
B.p2=p1;
C.p2=(float*)p1;
D.p1=a++;
}
17.以下程序中不符合C语法规则的语句是。
main()
{
A.inta[‘a’*2],*p=a,i;
B.for(i=0;i<10;i++)scanf(“%d”,a);
C.for(i=0;i<10;i++)scanf(“%d”,p++);
D.for(i=0;i<10;i++)scanf(“%d”,a++);
}
18.设有inta[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是。
A.10,11,12
B.11,12,12
C.10,12,12
D.11,11,12
19.以下对结构体变量的操作中,不能正确执行的语句是。
struct
{intnum;
charname[10];
floatscore;
}a,b;
A.a=b;B.a.num=b.num;C.a.name=b.name;D.a.score=b.num
20.若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是。
A.EOFB.0C.非零值D.NULL
三.程序阅读题
(1)main()
{intj,F[5]={0,1};
for(j=2;j<5;j++)F[j]=F[j-1]+F[j-2];
for(j=0;j<5;j++)printf(“%5d”,F[j]);
printf(“\n”);
}
(2)main()
{inta=0,b=5,c=0,d=10;
if(a)d+=10;
elseif(!
b)
if(!
c)d=15;
elsed