[3] #include <> #include <> main() {
char a[80], b[] = “ab”, max; int i = 1, j;
printf(“Input a string\\n”); gets(a); puts(a); max = a[0];
while (a[i] != ‘\\0') {
if (a[i] > max) {
max = a[i]; j = i; } i++; }
for (i=strlen(a)+2; i>j; i--) a[i] = a[i-2]; a[i+1] = ‘a'; a[i+2] = ‘b'; puts(a); }
第八章 函数补充作
【题1】以下正确的说法是 B 。
建立函数的目的之一是 A)提高程序的执行效率 B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存
【题2】以下正确的说法是 B 。
A) 用户若需调用标准库函数,调用前必须重新定义
B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C) 系统根本不允许用户重新定义标准库函数
D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
【题3】若调用一个函数,且此函数中没有return语句,则正确的说法是 D 。 该函数 A)没有返回值 B)返回若干个系统默认值
C)能返回一个用户所希望的函数值 D)返回一个不确定的值
【题4】以下不正确的说法是 D 。
C语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以为任意类型
D)形参应与其对应的实参类型一致 【题5】以下正确的说法是 C 。
A) 定义函数时,形参的类型说明可以放在函数体内 B) return后边的值不能为表达式
C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 D) 如果形参与实参的类型不一致,以实参类型为准
【题6】以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。 sub(int k,int n) {
int a1,a2;
a2=【1】; (为:C) a1=k-【2】; (为:A)
if((k%3==0&&a2==5)||(k%3==0&&a1==5)) {
printf(“%d”,k); n++; return n; }
else return -1; } main() {
int n=0,k,m; for(k=10;k<=99;k++) {
m=sub(k,n); if(m!=-1) n=m;
}
printf(“\\nn=%d”,n); }
【1】 A)k*10 B)k_x0010_ C)k/10 D)k*10_x0010_ 【2】 A)a2*10 B)a2 C)a2/10 D)a2_x0010_
【题7】折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;返回-1。请选择填空。 binary(int a[10],int m) {
int low=0,high=9,mid; while(low<=high) {
mid=(low+high)/2;
if(ma[mid]) 【2】; (为:B) else return(mid); }
return(-1); }
【1】 A)high=mid-1 B)low=mid+1 C)high=mid+1 D)low=mid-1 【2】 A)high=mid-1 B)low=mid+1 C)high=mid+1 D)low=mid-1
【题8】以下程序的正确运行结果是 D 。 #define MAX 10 int a[MAX],i; main() {
printf(“\\n”); sub1(); sub3(a); sub2(); sub3(a); } sub2() {
int a[MAX],i,max; max=5;
for(i=0;i for(i=0;i sub3(int a[]) { int i; for(i=0;i A) 0 2 4 6 8 10 12 14 16 18 0 1 2 3 4 B) 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18 C) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 D) 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18 【题9】以下程序的功能是用递归方法计算五位学生的年龄,请填空。 递归公式如下: 10(n?1)?age(n)? ?age(n?1)?2(n?1)? #include <> age(int n) { int c; if(n==1) c=10; else c=【1】; return(c); } main() { int n=5; printf(“age:%d\\n”,【2】); } 【1】age(n-1)+2 【2】age(5) 【题10】以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较, 直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;若仍未找到,则返回值-1。请填空。 #include <> int search(int a[10],int m) { int i; for(i=0;i<=9;i++) if(【 1】) return(i); return(-1); } main() { int a[10],m,i,no; … );【2】 no=search( nOK FOUND!%d”,no+1);】) printf(“ if(【3\\ \\ else printf(“nSorry Not Found!”); } 3 【】no>=0a,m 1 【】a[i]==m 【2】 。 【题11】以下程序的运行结果是 #include <> int k=1; main() { int i=4; fun(i); n”,i,k);printf(“(1) %d,%d \\ } fun(int m) { m+=k; k+=m; { char k=‘B'; -‘A');n”,kprintf(“(2) %d \\ } \\n”,m,k);printf(“(3) %d,%d } (2)1 (3)5,6 (1)4,6 】以下程序的运行结果是12【题 。 int n=1; main() { static int x=5; int y; y=n; printf(“MAIN:x=- y=- n=-\\n”,x,y,n); func(); printf(“MAIN:x=- y=- n=-\\n”,x,y,n); func(); } func() { static int x=4; int y=10; x=x+2; n=n+10; y=y+n; printf(“FUNC:x=- y=- n=-\\n”,x,y,n); } MAIN:x=5 y=1 n=1 FANC:x=6 y=21 n=11 MAIN:x=5 y=1 n=11 FANC:x=8 y=31 n=21