main()
{ int a[10]={10,45,23,62,98,42,87,37,86,28}; int i,j,x;
for(i=0;i<10;++i) {x=a[i];
for(j=i;j<9;++j) if(a[j+1]<______) {a[i]=a[j+1];
a[j+1]=______; x=a[i]} }
for(i=0;i<10;++i) printf(“%d”,a[i]);}
7.有以下程序,其功能是将两个有序(由小到大排列)数组中的数据合并到一个数组中,要求合并后的数组依然是由小到大顺序排列,最后输出排序后数组内容。数组中以数据0表示数据的结束。请在下划线处填上正确的内容,以实现程序功能。
#include
{int a[20]={1,4,7,17,23,0};
int b[20]={2,6,9,10,15,24,45,72,81,92,0}; int i,j,k,c[20]; i=j=k=0;
while((a[i]!=0)&&(b[j]!=0)) { if(a[i]
{ c[k]=____; j++;} k++;} if(a[i]= =0)
while(b[j]!=0)
c[k++]=b[j++]; if(b[i]= =0)
while(a[j]!=0)
c[k++]=a[j++]; c[k]=0; }
8.下面程序将二维数组a的行和列互换后存放到数组b中,请完成该程序。
#include
{int a[3][3]={{1,2,3,},{4,5,6},{7,8,9}},b[3][3]; int i,j;
for(i=0;i<3;++i) for(j=0;j<3;++j) ______; }
9.以下程序的功能是求小于1000的水仙花数(所谓水仙花数是指一个三位正整数,其各位数字的立方和等于该数本身,例如:407=4*4*4+0*0*0+7*7*7,407是一个水仙花数),请完成
21 / 45
该程序。
#include
{int x,y,z,m,i,j; for(i=100;i<1000;++i) {j=i; x=j/100; j=____;
y=j/10; z=j%10;
m=x*x*x+y*y*y+z*z*z; if(____)printf(\%d\,i); } }
第八章 函数 单项选择题
1.下列有关函数的说法中错误的是。
A)C语言中的函数只具有static和extern两种类型 B)C语言中允许函数的递归调用
C)调用函数时,C语言要求实参与形参的个数,类型完全一致 D)C语言函数的缺省数据类型是空类型(void型) 2.请选出以下语句的输出结果。
printf(\%d\\n\,
strlen(\;
A)7 B)18 C)9 D)输出项不合法,无正常输出 3.设有以下程序片段,请问执行后的输出结果是
char a[ ]=\; printf(\%d\\n\,
strlen(strcat(a,\; A)11 B)5 C)6 D)12 4.设有如下的函数:
funl(float a) { int b; a=a+b;
printf(“%d”,a);}
则函数的返回类型是。
A)与参数a的类型相同 B)与变量b的类型相同 C)是void型 5.标准库函数fgets(s,n,f)的功能是。
A)从文件f中读取长度为n的字符串存入指针s所指向的内存
B)从文件f中读取长度为n-1的字符串存入指针s所指向的内存空间中C)从文件f中读取n个字符串存入指针s所指向的内存空间中 D)从文件f中读取n-1的字符存入指针s所指向的内存空间中
6.C语言中规定,各个函数之间。
A)允许直接递归调用也允许间接递归调用 B)不允许自接递归调用也不允许间接递归调用 C)允许直接递归调用,不允许间接递归调用 D)不允许直接递归调用,允许间接递归调用
22 / 45
D)是int型 7.下面函数的功能是 char *s(s,t)
char *s,*t; {char *p; p=s; while(*s!='\\0')s++;
while(*t!='\\0') *s++= *t++; *s='\\0'; return p; } A)求字符串的长度 B)比较两个字符串的大小
C)将字符串t接续到字符串s中 D)将字符串s接续到字符串t中 8.请读程序;
#include
{int c; c=a+b; return c;} main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),y--); printf(\%d\\n\,r); } 上面程序的输出结果是 A) 11 B) 10 C)21 D) 31 9.请选出以下程序的输出结果。
#include
{ int i,j,t; i=n1;j=n2; while(i { int a[10]={1,2,3,4,5,6,7,8,9,0}; int i,*p=a; fun(p,0,3);fun(p,4,9);fun(p,0,9); for(i=0;i<10;i++) printf(\%d\,*(a+i);printf(\; } A)0,9,8,7,6,5,4,3,2,1 B)4,3,2,l,0,9,8,7,6,5 C)5,6,7,8,9,0,1,2,3,4 D)0,9,8,7,6,5,1,2,3,4 10.请选出以下程序的输出结果 #include { int a[]={1,2,3,4},i; int x=0; for(i=0;i<4;i++) { x=sub(a,x);printf(\%d\,x);} printf(\; } 23 / 45 sub(s,x) int *s,x; { static int t=3;x=s[t];t--;return(x); } A)1234 B)4321 C)0000 D)4444 11.下面函数的功能是。 int funl(char*x) { char *y=x;while(*y++);return(y-x-1);} A)求字符串的长度 B)比较两个字符串的大小 C)将字符串x复制到字符串y D)将字符串x连接到字符串y后面 12.有以下程序: main() { int a,b; a=5;b=8; p(a,b); p(a+b,a); p(a/b,b);} p(int x,int y) { y=x+y; printf(\%d,%d\\n\,x,y); } 则执行上述程序后的输出是。 A)5,13 B)5,13 C)5,13 D)5,13 13,18 18,5 18,5 18,23 0,8 1,13 1,14 1,13 13.有函数如下: f (int a) { int n,d;n=0;d=2*a; while(d>=a) {d=d%3;n=n+1;} return(n);} 设a,b,c均为整型变量,下面的程序段在调用函数f时会出现死循环的是 A)b=100;c=2*(f(b)+5); B)for(b=1;b<6;++b) if(f(b)>3)c=f(b*b); C)b=1 D)b=2; do while(f(b)>3) {b=b+1;} b=f(b*b)+f(b); while(f(b)>3); 14. 下面程序正确的输出结果是 main() . { int x,y,z; x=5;y=7;z=4; p(7,x+y+z,&x); printf(\%d,%d,%d\,x,y,z);} p(int x,int y,int *z) { *z=y-x-*z; } A)7,7,4 B)5,7,-2 C)5,7,4 D)4,7,4 24 / 45 16. C语言中,形参的缺省存储类别是。 A)自动(auto) B)寄存器(register) C)外部(extern) D)静态(static) 填空题 1.设有下列程序: #include { int i; char str[10],temp[10]; gets(temp); for(i=0;i<4;i++) { gets(str);if(stcmp(temp,str)<0) strcpy(temp,str); } printf(\%s\\n\,temp);} 上述程序运行后,如果从键盘上输入(在此 则程序的输出结果为____。 2. 设有以下程序: #include { while(--argc>0) printf(\%s\,argv[argc]); printf(\; } 假定上述程序经编译和链接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL char *argv[ ]; { FILE *fP; void fc(); int i; while(--argc>0) if((fp=fopen(argv[i++],\ { printf(\; exit(1);} else { fc(fP);fclose(fp); } } void fc(ifp) FILE *ifp; { char c; while((c=getc(ifp))!='#') 25 / 45