13、若有inta[3]={120,212,320};则a+2是的地址。
15、在一个函数中有定义intx=233,*p=&x;执行*p=*p+15;后,x的值为。
16、执行语句“for(s=0,j=5;j<=25;j=j+5)s=s+j;”后,变量s的值为。
17、函数形式参数的作用域是。
18、设有以下宏定义,则执行赋值语句a=PP*20;(a为int型变量)后,a的值是。
#definePR80
#definePPPR+403
19、设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为。
20、C语言中调用函数打开文件,调用函数关闭文件,调用函数可实现文件的随机读写。
21、用条件运算符写出求三个数x,y,z最大者的表达式max=。
22、写一个带参数的宏定义,宏名是S,参数是a,b,宏体是a*b,格式:
。
23、设整型变量X=10,Y=30,Z=800,执行Z/=Y+X后,Z=。
二、选择题
1C语言中最简单的数据类型包括(B)
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
2C语言中,运算对象必须是整型数的运算符是(A)
A)%B)\C)%和\D)*
3为表示关系x≥y≥z,应使用C语言表达式
A)(x>=y)&&(y>=z)B(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
4下述对C语言字符数组的描述中错误的是
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
41、C语言规定数组名做实参时,它和对应形参之间的数据传递方式是:
()
A单向值传递B无传递C地址传递D用户指定传递方式
42、在C程序中可以作为变量名的合法标识符是()
A100Ba+bCwhileDscore
45、循环语句for(a=0,b=69;b>=66;a++,b--)x=a+b;的循环次数是()
A4次B3次C8次D1次也不执行
46、若有说明:
inti,j=7,*p=&j;,则与i=j;等价的语句是()
Ai=*P;B*P=j;Ci=&j;Di=**p;
47、设有宏定义#dedinepi3.14和#dedineS(r)pi*r*r
若在函数中有语句floatb=3.6,area;area=S(b);则area的值是()
A3.6B3.14C11.304D40.6944
5设有如下定义:
intx=10,y=3,z;
则语句
printf(“%d\n”,z=(x%y,x/y));
的输出结果是
A)1B)0
C)4D)3
6以下程序的输出结果是
main()
{intx=10,y=10;
printf(“%d%d、n”,x--,--y);
}
A)1010B)99
C)910D)109
7以下说法中正确的是
A)C语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
9以下程序段的输出结果是
intx=3;
do
{printf(“%3d”,x-=2);}x=x-2
while(!
(--x));
A)1B)30 C)1--2D)死循环
10定义如下变量:
intn=10;
则下列循环的输出结果是
while(n>7)
{n--;
printf(“%d\n”,n);
}
A)10B)9C)10D)9
9898
8787
76
11两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main()
{intx;
scanf(“%d”,&x);
if(x>5)printf(“%d”,++x);
elseprintf(“%d”,x--);
}
A)7和5B)6和3C)7和4D)6和4
12执行以下程序后,y的值是
main()
{inta[]={2,4,6,8,10};
inty=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”,y);
}
A)17B)18C)19D)20
13下列程序执行后输出的结果是:
intd=1;
fun(intq)
{intd=5;
d=q;
printf(“%d”,d);
}
main()
{inta=3;
fun(a);
d=a;
printf(“%d\n”,d);
}
A)84B)33C)94D)85
14C语言提供的不合法的数据类型关键字是
A)DoubleB)shortC)integerD)Char
15、C语言中函数的返回值的类型是由()决定的
A调用该函数的主调函数类型;Breturn语句中的表达式类型;
C调用函数时指定;D定义函数时所指定的返回值类型。
16、若有以下定义和语句:
inta,b,c;scanf(“a=%db=%dc=%d”,&a,&b,&c);为了使1,3,2分别赋给a,b,c,从键盘上输入数据的正确形式是()
A132B1,3,2Ca=1b=3c=2Da=1,b=3,c=2
15在C语言中,合法的长整型常数是
A)0LB)4962710C)0.054838743D)2.1869e10
16表达式:
10!
=9的值是
A)trueB)非零值C)0D)1
17若有说明和语句:
inta=5;
a++;
此处表达式a的值是
A)7B)6C)5D)4
18在下列选项中,不正确的赋值语句是
A)t;B)n1=(n2=(n3=0));
C)k=i==j;D)a=b=c=1;
19若有说明:
inti,j=7,*p=&i;,则与i=j;等价的语句是
A)i=*P;B)*P=j;C)i=&j;D)i=**p;
20不能把字符串:
Hello!
赋给数组b的语句是
A)charb[10]={'H','e','l','l','o','!
'};
B)charb[10];b=“Hello!
”;
C)charb[10];strcpy(b,“Hello!
”);
D)charb[10]=“Hello!
”
21以下程序的输出结果是
main()
{chara[10]=”6789”,*p;
p=a;
printf(“%s\n”,p);
A)6B)6789C)'6'D)789
22 以下程序的输出结果是
main()
{intn=4;
while(n>0){n--;printf(“%d”,n);}
}
A)20B)31C)3210D)210
24在下列选项中,没有构成死循环的程序段是
A)inti=100;
whine
(1)
{i=i%3;
if(i>100)break;
}
B)for(;;);
C)intk=1000;
do{k++;}while(k<1000);
D)ints=36;
while(s)--s;
25阅读以下程序:
main()
{intx;
scanf("%d",&x);
if(x--<5)printf("%d"'x);
elseprintf("%d"'x++);
}
程序运行后,如果从键盘上输人5,则输出结果是
A)3B)4C)5D)6
26以下程序的输出结果是
main()
{intnum=0;
while(num<=2)
{num++;printf("%d\n",num);
}
A}1B}1C}1D}l
222
33
4
26、C语言规定数组名做实参时,它和对应形参之间的数据传递方式是:
()
A单向值传递B无传递C地址传递D用户指定传递方式
27、在C程序中可以作为变量名的合法标识符是()
A100Ba+bCwhileDscore
28、循环语句for(a=0,b=69;b>=66;a++,b--)x=a+b;的循环次数是()
A4次B3次C8次D1次也不执行
27以下程序的输出结果是
main()
{charc='z';
printf("%c",c-25);
}
A)aB)ZC)z-25D)y
28以下选项中,非法的字符常量是
A)'\t'B)'\17'C)"n"D)'\xaa'
30以下定义语句中,错误的是
A)inta[]={1,2};B)char*a[3];
C)chars[10]="test";D)intn=5,a[n];
31以下程序的输出结果是
main()
{inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A)258B)741C)852D)369
32以下数组定义中不正确的是
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}};
33以下程序的输出结果是
main()
{inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];
)
A}0650B}1470C}5430D}输出值不定
34以下选项中,不能正确赋值的是
A)chars1[10];s1="Ctest";
B)chars2[]={'C','t','e','s','t'};
C)chars3[20]="Ctest";
D)char*s4="Ctest\n"
36、若有说明:
inti,j=7,*p=&j;,则与i=j;等价的语句是()
Ai=*P;B*P=j;Ci=&j;Di=**p;
37、设有宏定义#dedinepi3.14和#dedineS(r)pi*r*r
若在函数中有语句floatb=3.6,area;area=S(b);则area的值是()
A3.6B3.14C11.304D40.6944
38 以下程序的输出结果是
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf("%d\n",a);
}
A)101B)6C)5D)4
39 有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
40以下程序执行后sum的值是
min()
{inti,sum=0;
for(i=1;i<4;i++)sum+=i;
printf("%d\n",sum);
}
A)10B)6C)不确定D)0
41 以下程序的输出结果是
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf("%d,",x[i][2-i]);
}
A)1,5,9B)1,4,7C)3,5,7D)3,6,9
42以下程序的输出结果是
main()
{inta[3][2]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)s+=a[i][j];
printf("%d\n",s);
}
A)18B)19C)20D)21
43以下程序的输出结果是:
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
A)1,2B)3,1C)3,2D)2,1
44、有int*P;刚下面语句正确的是:
()
Ap=(int*)malloc(sizeof(int));Bp=malloc(int);
Cp=int*malloc(sizeof(int));Dp=malloc(sizeof(int))
45、在定义inta[5][4];对数组元素的正确引用是()
Aa[5][1]Ba[2][4]Ca[4][3]Da[1,1]
46、在说明语句中有:
float(*fp)();则fp代表的是:
()
A一个用于指向一维数组的行指针;B一个返回值为实型的函数名;
C一个用于指向函数的指针变量;D一个指向实型数据的指针;
三、阅读程序题
(1)阅读下列程序:
#include
main()
{
inti,j,row,column,m;
staticintarray[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;i++)
if(array[i][j]{
m=array[i][j];row=i;column=j;
}
printf("%d,%d,%d\n",m,row,column);
}
上述程序的输出结果是__-850,2,0_______。
(2)下面程序的输出结果是_______。
#include
main()
{
inta=3,b=2,c=1;
c-=++b;
b*=a+c;
{intb=5,c=12;
c/=b*2;
a-=c;
printf('%d,%d,%d,",a,b,c);2,5,1
a+=--c;
}
printf('%d,%d,%d,",a,b,c);2,2,-2
}
(3)请读程序。
#definePR(ar)printf("%d",ar)
main()
{intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
{
switch(j)
{case1:
case2:
PR(*p++);break;911
case3:
PR(*(--p));9
}
}
}上面程序的输出结果是__9911________.
(4)下面程序的输出是__4+3+2________。
longfun5(intn)
{longs;
if((n==1)||(n==2))
s=2;
elses=n+fun5(n-1);
return(s);
}
main()
{longx;
x=fun5(4);
printf("%ld\n",x);
}
(5)下面程序的输出是_024*******______。
#defineMAX5
inta[MAX],k;
main()
{fun1();fun3();02468
fun2();fun3();02468
printf("\n");
}
fun1()
{
for(k=0;ka[k]=k+k;0,2,4,6,8
}
fun2()
{
inta[MAX],k;
for(k=0;k<5;k++)
a[k]=k;0,1,2,3,4
}
fun3()
{
intk;
for(k=0;kprintf("%d",*(a+k)):
}
(6)以下程序运行后,输出结果是________
main()
{
inty=18,i=0,j,a[8];
do
{
a[i]=y%2;i++;
y=y/2;
}while(y>=1);
for(j=i-1;j>0;j--)
printf(%d",a[j]);
printf("\n");
}
(7)以下程序的输出结果是__x=_8_____
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);
}
(8)以下程序的输出结果是_4211______
main()
{
char*s="12134211";
intv[4]={0,0,0,0},k,i;
for(k=0;s[k]!
=’\0’;k++)
{
switch(s[k])
{
case'1':
i=0;break;
case'2':
i=1;break;
case'3':
i=2;break;
case'4':
i=3;
}
v[i]++;
}
for(k=0;k<4;k++)
printf("%d",v[k]);
}
(9)下列程序的输出结果是CDABC。
#include"stdio.h"
#include"string.h"
main()
{
charb[30];
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",b);
}
(10)下列程序的输出结果是__5_6________。
intt(intx,inty,intc,intd)
{
c=x*x+y*y;
d=x*x-y*y;
}
main()
{
inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
(11)下列程序中字符串中各单词之间有一个空格,则程序的输出结果是___Howdoesshe。
#include"string.h"
#include"stdio.h"
main()
{
charstrl[]="Howdoyoudo",*p1=strl;
strcpy(strl+strlen(strl)/2,"esshe");Howdoesshe
printf("%s\n",pl);
}
(12)以下程序的运行结果是__________
#include
main()
{
intk=4,m=1,p;
p=func(k,m);printf("%d,",p);8
p=func(k,m);printf("%d\n",p);17
}
func(inta,intb)
{
staticintm=0,i=2;
i+=m+1;33+8+112
m=i+a+b;812+4+1
returnm;
}
(13)
f1(inta)
{intb=0;staticintc=3;
b+=1;c++;
return(a+b+c);
}
main()
{inta=1,i;
chars1[10]=“java”,s2[10]=“basic”,s[10];
for(i=0;i<3;i++)printf("%d",f1(a));678
printf(“\n”);
if(strcmp(s1,s2)){strcpy(s,s1);puts(s);}java
printf(“%d,%s\n”,strlen(s2),strcat(s2,s1));5,basicjava
}
(14)#d