}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是【】。
A)1,2,3,4,5,6,7,8,9,10B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10D)1,2,10,9,8,7,6,5,4,3
11、以下函数的功能是计算s=1+
+
+……+
,请填空。
doublefun(intn)
{doubles=0.0,fac=1.0;inti;
for(i=1;i<=n;i++)
{fac=fac【】;
s=s+1/fac;
}
returns;
}
12.以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
#include"stdio.h"
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=【】;
}
returnm;
}
main()
{printf("m=%d\n",【】);}
13.以下程序的运行结果是【】。
#include"stdio.h"
prt(intm[5])
{
intj;
for(j=0;j<5;j++)
{
m[j]=m[j]+1;
printf("%d,",m[j]);
}
}
main()
{
inta[5]={2,3,4,5,6};
inti;
for(i=0;i<5;i++)
printf("%d,",a[i]);
printf("\n");
prt(a);
printf("\n");
for(i=0;i<5;i++)
printf("%d,",a[i]);
printf("\n");
}
14.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
#include"stdio.h"
【】(double,double);
main()
{doublex,y;
scanf("%lf%lf",&x,&y);
printf("%lf\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?
a:
b);}
15.若有以下程序
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中不正确的是【】
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无值型
16.以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
#include"string.h"
#include"stdio.h"
voidf(charp[][10],intn)
{chart[20];inti,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])<0)
{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};inti;
f(p,5);printf("%d\n",strlen(p[0]));
}程序运行后的输出结果是【】
A)6B)4C)5D)3
17下列叙述中正确的是【】
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数不可以嵌套定义
D)C语言所有函数都是外部函数
18.当调用函数时,实参是一个数组名,则向函数传送的是【】
A)数组的长度B)数组的首地址
C)数组每一个元素的地址D)数组每个元素中的值
19.以下所列的各函数首部中,正确的是【】
A)voidplay(var:
Integer,varb:
Integer)
B)voidplay(inta,b)
C)voidplay(inta,intb)
D)Subplay(aasinteger,basinteger)
20.以下程序的输出结果是【】
A)0B)29C)31D)无定值
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(5,2,a);
printf(“%d”,a);
}
21.以下函数的功能是:
求x的y次方,请填空。
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;ireturnz;}
22、以下程序运行后的输出结果是【】。
#include”stdio.h”
voidfun(intx,inty)
{x=x+y;y=x-y;x=x-y;
printf(“%d,%d,”,x,y);}
main()
{intx=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
23若已定义:
inta[10],i;,以下fun函数的功能是:
在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。
请填空。
fun(inta[])
{inti;
for(i=0;i<10;i++)【】=i;
for(i=0;i<5;i++)【】=a[i];
}
二.函数嵌套和递归
1.有以下程序
#include“stdio.h”
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf(“%d\n”,j);
}
程序运行后的输出结果是【】
A)4B)3C)2D)13.用递归法
2.以下程序运行后的输出结果是【】
#include"stdio.h"
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
三.作用域和存储类型
1.以下不正确的说法是【】。
A)在不同函数中可以使用相同名字的变量。
B)形式参数是局部变量。
C)在函数内定义的变量只在本函数范围内有效。
D)在函数内的复合语句中定义的变量在本函数范围内有效。
2.有以下程序
#include"stdio.h"
inta=3;
main()
{ints=0;
{inta=5;s+=a++;}
s+=a++;printf("%d\n",s);
}
程序运行后的输出结果是【】。
A)8B)10C)7D)11
3.以下程序的输出结果是【】。
#include
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;
}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);
}
A)20B)24C)25D)15
4.在C语言中,形参的缺省存储类是【】。
A)autoB)registerC)staticD)extern
5.下面程序的执行结果是【】
#include
increment()
{intx=0;
x+=1;
printf("%d",x);}
main()
{increment();
increment();
increment();}
6.下面程序的执行结果是【】
#include
increment()
{staticintx=0;
x+=1;
printf("%d",x);}
main()
{increment();
increment();
increment();}
7.下面程序的执行结果是【】
#include
shift(inta)
{
a*=2;
return(a);
}
main()
{
staticinty[2]={15,25};
intz=20;
z=shift(y[0]);
printf("%d,%d\n",y[0],z);
}
8.下面程序的执行结果是【】
#include"stdio.h"
intn=1;
func()
{staticintx=4;inty=10;
x=x+2;
n=n+10;
y=y+n;
printf("Func:
x=%2dy=%2dn=%2d\n",x,y,n);}
main()
{staticintx=5;inty;
y=n;
printf("Main:
x=%2dy=%2dn=%2d\n",x,y,n);
func();
printf("Main:
x=%2dy=%2dn=%2d\n",x,y,n);
func();}
9.以下程序的输出结果是【】
#include"stdio.h"
inta,b;
voidfun()
{a=100;b=200;}
main()
{inta=5,b=7;
fun();
printf("%d%d\n",a,b);
}
A)100200B)57C)200100D)75
10以下程序输出的最后一个值是【】。
#include"stdio.h"
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
11以下程序运行后的输出结果是【】
#include"stdio.h"
inta=5;
fun(intb)
{staticinta=10;
a+=b++;
printf("%d",a);
}
main()
{intc=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
12.设有以下函数:
f(inta)
{intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是【】
main()
{inta=2,i;
for(i=0;i<3;i++)printf(“%d\n”,f(a));
}
A)7B)7C)7D)7
89107
911137
13.以下程序的输出的结果是【】
intx=3;
main()
{inti;
for(i=1;i}
ncre()
{staicintx=1;
x*=x+1;
printf("%d",x);
}
A)33B)22C)26D)25
四.编译预处理
1.在宏定义:
#definePI3.141592中,用宏名PI代替一个【】
A)常量B)单精度数C)双精度数D)字符串
2.以下任何情况下计算平方数时都不会引起二义性的宏定义是【】。
A)#definePOWER(x)x*xB)#definePOWER(x)(x)*(x)
C)#definePOWER(x)(x*x)D)#definePOWER(x)((x)*(x))
3.以下正确的叙述是【】。
A)C语言的预处理功能是指完成宏替换和包含文件的调用。
B)C语言的预处理指令只能位于C源程序文件的首部。
C)凡是C源程序中行首以“#”标识的控制行都是预处理指令。
D)C语言的编译预处理就是对源程序进行初步的语法检查。
4.C语言提供的预处理功能包括条件编译,其基本形式是:
#XXX标识符
程序段1
#else
程序段2
#endif
这里XXX可以是【】。
A)define或includeB)ifdef或include
C)ifdef或ifndef或defineD)ifdef或ifndef或if
5.以下程序的输出结果是【】
#include"stdio.h"
#defineM(x,y,z)x*y+z
main()
{inta=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
A)19B)17C)15D)12
6.、下面程序的运行结果是【】。
#defineN10
#defines(x)x*x
#definef(x)(x*x)
#include"stdio.h"
main()
{inti1,i2;
i1=1000/s(N);i2=1000/f(N);
printf(“%d%d\n”,i1,i2);
}
7.设有如下宏定义
#defineMYSWAP(z,x,y){z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(【】,a,b);
8.程序中头文件typel.h的内容是:
#defineN5
#defineM1N*3
程序如下:
#define“type1.h”
#defineM2N*2
main()
{inti;
i=M1+M2;printf(“%d\n”,i);
}
程序编译后运行的输出结果是:
【】
A)10B)20C)25D)30
9.以下叙述正确的是【】
A)可以把define和if定义为用户标识符
B)可以把define定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把define定义为用户标识符
D)define和if都不能定义为用户标识符
10.有以下程序
#include
#defineF(X,Y)(X)*(Y)
main()
{inta=3,b=4;
printf("%d\n",F(a++,b++));
}
程序运行后的输出结果是【】
A)12B)15C)16D)20
11以下各选项企图说明一种新的类型名,其中正确的是【】
A)typedefv1int;B)typedefv2=int;
C)typedefv1intv3;D)typedefv4:
int;
12设有以下说明语句
typedefstruct
{intn;
charch[8];
}PER;
则下面叙述中正确的是【】
A)PER是结构体变量名B)PER是结构体类型名
C)typedefstruct是结构体类型D)struct是结构体类型名
#include"stdio.h"
#definePF(y)((y)*(y))
main()
{
inti=1;
while(i<=5)
printf("%d\t",PF(i++));
}
#include"stdio.h"
PF(intx)
{returnx*x;}
main()
{
inti=1;
while(i<=5)
printf("%d\t",PF(i++));
}
二.填空题
1.下面程序的运行结果是()。
#defineMAX(a,b)(a>b?
a:
b)+1
main(){
intj=6,k=8,f;
printf("%d\n",MAX(j,k)):
}
2.下面程序的运行结果是()。
#defineA4
#defineB(x)A*x/2
main(){
floatc,a=4.5;
c=B(a);
printf("%5.1f\n",c);}
3.设有以下程序,为使之正确运行,请在【】中填入应包含的命令行。
#include“stdio.h”
【】
main(){
intx=2,y=3;
printf("%d\n",pow(x,y));}
4.下面程序的运行结果是()。
main(){
inta=10,b=20,c;
c=a/b;
#ifdefDEBUG
printf("a=%d,b=%d",a,b);
#endif
printf("c=%d\n",c);}
5.下面程序的运行结果是()。
#defineDEBUG
main(){
inta=14,b=15,c;
c=a/b;
#ifdefDEBUG
printf("a=%d,b=%d,",a,b);
#endif
printf("c=%d\n",c);}
一、函数定义及调用
1.A2.C3.A4.D5.B6.C7.D
8.B9.B10.C11.*i12.①-f12②fun(10)
13.2,3,4,5,6,
3,4,5,6,7,
3,4,5,6,7,
14doublemax15.C16.C17.C18.B19.C20.C
20.C21.x22.3,2,2,323
(1)a[i]
(2)a[9-i]
二、函数嵌套和递归
三、作用域和存储类型
1.D2.A3.D4.A5.1116.1237.15,30
8.
Main:
x=5y=1n=1
Fanc:
x=6y=21n=11
Main:
x=5y=1n=11
Fanc:
x=8y=31n=21
9.B10.1262412011.302512.A13.C
四编译预处理
1.D2.D3.C4.D5.D6.1000107.c
8.C9.D10.A11.C12.B
二.填空题
1.92.9.03.#include4.c=05.a=14,b=15,c=0