d的结果是
A)4B)3
C)1D)2
18.若执行下面程序时,从键盘输入"3,4",则输出是()。
main()
{inta,b,s;
scanf("%d,%d",&a,&b);
s=a;
if(a
else
s=s*s;
printf("%d\n",s);}
A)4B)16C)18D)20
19.若函数的类型和return语句中的表达式的类型不一致,则()。
A)编译时出错
B)运行时出现不正确的结果
C)不会出错,且返回值的类型以return语句中表达式的类型为准
D)不会出错,且返回值的类型以函数类型为准
20.在C语言程序中,以下叙述正确的是()。
A)函数的定义和函数的调用均可以嵌套
B)函数的定义可以嵌套,但函数的调用不能嵌套
C)函数的定义和函数的调用均不能嵌套
D)函数的定义不能嵌套,但函数的调用可以嵌套
21.若用数组名作为函数调用的实参,则传递给形参的是()。
A)数组的首地址B)数组的第一个元素的值
C)数组中全部元素的值D)数组元素的个数
22.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()。
A)外部(extern)B)寄存器(register)C)自动(atuo)D)静态(static)
23.在下面一组运算符中,优先级最高的运算符是
A)<=B)=
C)%D)&&
24.有如下函数调用语句
func(rec1,rec2+rec3,rec4);
该函数调用语句中,含有的实参个数是
A)3 B)4 C)5 D)有语法错
25.表示关系X<=Y<=Z的c语言表达式为
A)(X<=Y)&&(Y<=Z)B)(X<=Y)AND(Y<=Z)
C)(X<=Y<=Z)D)(X<=Y)&(Y<=Z)
26.C语言中,若未说明函数的类型,则系统默认该函数的类型是()。
A)float型B)int型C)long型D)double型
27.若定义数组inta[3][4];,并以f(a)语句调用函数f,则在定义f函数时,对形参数组array错误的定义方式为()。
A)f(intarray[][6])B)f(intarray[3][])
C)f(intarray[][4])D)f(intarray[2][5])
28.下列一维数组初始化语句中,正确的是()。
A)inta[5]={0,2,0,3,5};B)inta[5]=0;
C)inta[5]={5*2};D)inta[]=(0,2,0,3,7);
29.现要定义一个二维字符型数组c[M][N]来存放字符串"China","Tianjin"和"Education",则常量M和N的合理取值应为()。
A)3和9B)2和10C)4和9D)3和10
30.若有说明charc[]={'N','a','n','K','a','i'};则对其元素的非法引用是()。
A)c[0]B)c[9-6]C)c[2*2]D)c[7]
31.在C语言中,运算对象必须是整型的运算符是
A)*B)%C)/D)!
32.设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句:
z=2*(N+Y(5+1));后,z的值为
A)出错B)42C)48D)54
33.以下结构体变量的字节数是
structstudent
{
intnum;
charname[8];
doublescore;
union
{intclass;
charposition[10];
}category;
}stu;
A)18B)30C)28D)32
34.若有代数式
,则错误的表达式是
A)a/b/c*eB)a*e/c/bC)a*e/b/cD)a*e/b*c
35.要将字符串str2连接到字符串str1后,应使用的函数是()。
A)strcpy(str1,str2);B)strcat(str2,str1);
C)strcat(str1,str2);D)strcmp(str2,str1);
36.若定义inta=8,b,*p=&b;则赋值语句p=&a执行后,结果为()。
A)p同时指向a和bB)p指向a,而不再指向b
C)p指向b,而b取a的值D)p指向a,a取b的值
37.定义以下结构体类型
structs
{
inta;
floatf;
}m[3];
语句printf("%d",sizeof(m))的输出结果为()。
A)4B)12C)18D)6
38.下面程序的输出是
main()
{
intx=32;
printf("%d\n",x=x<<1);
}
A)100B)160C)120D)64
39.不正确的转义字符是
A)“\018”B)“\’”C)“\xaa”D)“\\”
40.以下程序执行后sum的值是
voidmain()
{inti,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
A)15B)14C)不确定D)0
二、程序填空题(每空1分)
1.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。
请填空。
#include
#defineN3
structstud
{charnum[5],name[10];
ints[4];
intave;
}st[N];
writrec(structstud*s)
{intk,i;
printf("num\tname\tmark1\tmark2\tmark3\tmark4\tave\n");
for(k=0;k<3;k++,s++)
{printf("%s\t%s\t",s->num,s->name);
for(i=0;i<4;i++)
printf("%d\t",s->s[i]);
printf("%d\n",s->ave);
}
}
readrec(structstud*p)
{inti,j,sum;
for(j=0;j{gets(p->num);
gets(p->name);
for(i=0;i<4;i++)
scanf("%d",&p->s[i]);
getchar();
sum=0;
for(i=0;i<4;i++)
sum+=p->s[i];
p->ave=sum/4;
}
}
main()
{
readrec(st);
writrec(st);
}
2.求1!
+3!
+5!
+7!
+…+21!
之和
#include
voidmain()
{floats,t;
intn;
s=0;
t=1;
for(n=1;n<=21;n++)
{
t=t*n;
if(n%2!
=0)s+=t;
}
printf(“1!
+3!
+5!
+7!
+…+21!
=%e\n”,s);
}
3.用数组来处理求Fibonacci数列(即:
1,1,2,3,5,8,13……)问题,每行控制输出5个数据。
#include
voidmain()
{
inti;
intf[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-1]+f[i-2];
for(i=0;i<20;i++)
{
if(i%5==0)printf(“\n”);
printf(“%12d”,f[i]);
}
printf(“\n”);
}
4.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。
请填空。
#include
structstud
{charnum[5],name[10];
ints[4];
intave;
};
writrec(structstud*s)
{intk,i;
for(k=0;k<3;k++,s++)
{printf("num:
%sname:
%s\n",s->num,s->name);
for(i=0;i<4;i++)
printf("mark:
%5d",s->s[i]);
printf("ave:
%5d\n",s->ave);
}
}
readrec(structstud*rec)
{inti,sum;
gets(rec->num);
gets(rec->name);
for(i=0;i<4;i++)
scanf("%d",&rec->s[i]);
getchar();
sum=0;
for(i=0;i<4;i++)
sum+=rec->s[i];
rec->ave=sum/4;
}
main()
{structstudst[30];
intk;
for(k=0;k<3;k++)
readrec(&st[k]);
writrec(st);
}
5.下面程序把文件file1.dat中的内容复制到一个名为file2.dat的新文件中,请填空。
#include
FILE*fp1,*fp2;
main()
{charch;
if((fp1=fopen(“file1.dat”,”r”))==NULL)exit(0);
if((fp2=fopen(“file2.dat”,”w”))==NULL)exit(0);
while(fp1!
=EOF){ch=fgetc(fp1);fputc(ch,fp2);}
fclose(fp1);fclose(fp2);
}
三、读程序写运行结果(每小题2分,共30分)
1.下面程序运行后,输出结果是
#include
main()
{inta=4,b=7;
printf(“%d\n”,(a=a+1,b+a,b+1));
}
2.下面程序运行后,输出结果是
#include
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c));
}
3.下面程序运行后,输出结果是
#include
main()
{intk=017,g=111;
printf("%d\n",++k);
printf("%x\n",g++);
}
4.下面程序运行后,输出结果是
#include
main()
{intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf(“%f\n”,x);
}
5.下面程序运行后,输出结果是
#include
main()
{inta=9;
a+=a-=a+a;
printf(“%d\n”,a);
}
6.以下程序运行后的输出结果是
#include
voidmain()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{
n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
7.下面程序运行后,输出结果是
#include
voidmain()
{chars[]="after",c;
inti,j=0;
for(i=1;i<5;i++)
if(s[j]
{c=s[j];s[j]=s[i];s[i]=c;}
printf("%s",s);
}
8.以下程序执行后的输出结果是
#include
voidmain()
{char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
9.以下程序运行后的输出结果是
#include
#defineN20
fun(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]);
}
10.写出下列程序结果
#include
intm=1;
intfun(intm)
{intn=1;
staticinti=1;
n++;i++;
returnm+n+i;
}
voidmain()
{
inti;
for(i=1;i<3;i++)
printf("%4d",fun(m++));
printf("\n");
}
11.已知字母a的ASCII码是为十进制的97,下面程序的输出是
main()
{charc1,c2;
c1=’a’+’6’-‘2’;
c2=’a’+’6’-‘3’;
printf(“%c,%d\n”,c2,c1);
}
12.下列语句的输出结果是
chara=31;
printf(“%d,%o,%x,%u\n”,a,a,a,a);
13.下面程序运行后,输出结果是
#include
voidmain()
{intj,x=0;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
printf("%d\n",x);
}
14.下面程序运行后,输出结果是
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“\na=%d,b=%d”,a,b);
}
15.下面程序运行后,输出结果是
#include
#defineMAX(a,b,c)((a)>(b)((a)>(c)(a):
(c)):
((b)>(c)(b):
(c)))
voidmain()
{intx,y,z;
x=1,y=2,z=3;
printf("%d\n",MAX(x+y,y,y+x));
}
16.有以下程序程序的执行结果是
#include
charfun(charx,chary)
{
if(xreturny;
}
voidmain()
{
chara='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));
}
17.以下程序执行后输出结果是
#include
voidmain()
{
intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2)
{k=k+p[i];i++;}
printf("%d\n",k);
}
18.定义以下结构体数组
struct
{intnum;
charname[10];
}s[3]={1,"china",3,"USA",4,"England"};
语句printf("\n%d,%s",s[0].num,s[1].name)的输出结果为。
19.以下程序执行后输出结果是
#include
floatfun(intx,inty)
{
return(x-y);
}
main()
{inta=2,b=5,c=8;
printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c));
}
20.下面程序运行后,输出结果是
#include
main()
{intk=015,g=112;
printf("%d\t",++k);
printf("%x\n",g++);
}
21.下面程序运行后,输出结果是
#include
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;}
voidmain()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf(“%d\n”,j);
}
22.下面程序运行后,输出结果是
#include
voidmain()
{unsignedchara,b,c;
a=0x3;b=a|