第七章
7.1 选择题
7.1.1 在一个C语言程序构成中,较完整的描述是( )
A) 由主程序与子程序构成B) 由多个主函数与多个子函数构成
C) 由主函数与子函数构成 D) 由一个主函数与多个子函数构成 7.1.2 C语言在程序开始执行时,其正确的描述是( )
A) 由编写程序语句的顺序格式执行B) 在主函数main()开始处执行 C) 在第一个子函数处执行 D) 由人随机选择执行 7.1.3 下列有关函数错误的描述是( )
A) C语言中允许函数嵌套定义B) C语言中允许函数递归调用 C) 调用函数时,实参与形参的个数、类型需完全一致 D) C语言函数的缺省数据类型是int类型
7.1.4 在C语言中,各个函数之间具有的关系是( )
A) 不允许直接递归调用,也不允许间接递归调用 B) 允许直接递归调用,不允许间接递归调用 C) 不允许直接递归调用,允许间接递归调用 D) 允许直接递归调用,也允许间接递归调用 7.1.5 在C语言中,函数的返回值的类型是由( )
A) C语言的编译程序,在程序编译时决定 B) 由调用该函数的主调函数所决定
C) 由return语句的表达式的类型所决定 D) 由定义该函数时指定的函数类型所决定
7.1.6 当调用函数时,如果实参是一个数组名,则向函数传送的是( )
A) 数组的首元素 B) 数组的首地址
C) 数组每个元素的地址 D) 数组每个元素中的值 7.1.7 对于以下程序,不正确的叙述是( )
#include
void f(int n); /*函数说明*/ void main()
{ void f(int n); /*函数说明*/ f(5); }
void f(int n)
{ printf(\ }
A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B) 要求函数f无返回值,所以可用void将其类型定义为无值型
C) 在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调
用函数f
D) 对于上面程序的说明,编译时系统会提示出错信息:提示对f函数重复说明 7.1.8 以下程序的输出结果是( )。
long fun( int n) { long s;
if(n==1 || n==2) s=2;
else s=n-fun(n-1); return s;} void main()
{ printf(\
A) 1 B) 2 C) 3 D) 4 7.1.9 有以下程序执行后输出的结果是( )。
int f1(int x,int y)
{ return x>y?x:y; } int f2(int x,int y)
{ return x>y?y:x; } main()
{int a=4,b=3,c=5,d,e,f; d=f1(a,b); d=f1(d,c); e=f2(a,b); e=f2(e,c); f=a+b+c-d-e;
printf(\}
A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4 7.1.10 设有以下函数;
f(int a) { int b=0; static int c=3; b++;c++;
return(a+b+c); }
如果在下面的程序中调用该函数,则输出结果是()。
void main() { int a=2, i;
for(i=0;i<3;i++) printf(\ }
a) b) c) d) 7 7 7 7 8 9 10 7 9 11 13 7
A)a) B)b) C)c) D)d) 7.1.11 以下程序的输出结果是( )。
int x=3; void main() { int i;
for(i=1;i incre() { static int x=1; x*=x+1; printf(\} A)3 3 B)2 2 C)2 6 D)2 5 7.1.12 以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。程序运 行后的输出结果是( )。 void reverse(int a[],int n) {int i,t; for(i=0;i {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } void main() {int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8); for(i=6;i<10;i++) s+=b[i]; printf(\} A)22 B)10 C)34 D)30 7.1.13 程序运行后的输出结果是 )。 #include { strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } void main() {char p[][10]={\ f(p,5); printf(\} A)6 B)4 C)5 D)3 7.2 填空题 7.2.1 在C语言中,除主函数外,其子函数分为、两类。 7.2.2 变量在程序使用中,其作用域可分为变量和变量。 7.2.3 以下函数用以求x的y次方,请补充填空。 double fun ( double x , int y ) { int i; double z; for ( i=1 ; i ; i + + ) z=; return z; } 7.2.4 以下程序的功能是计算s??k!,请补充填空。 k?0nlong f(int n) { int i; long s; s=; for(i=1; i<=n; i++) s=; return s; main() { long s; int k,n; scanf(\s=; for(k=0; k<=n; k++) s=s+; printf(\ } 7.3 编程题 7.3.1 编写一个函数,其功能是判断一个是否是素数,是返回为1,不是返回为0。 7.3.2 编写一个函数,其功能是计算二维数组每行之和以及每列之和。 7.3.3 7.3.4 7.3.5 编一子函数,在100~999中打印出所有的\水仙花数\。所谓\水仙花数\指一个 三位数,其各位数字立方和等于该数本身。例如:153是一\水仙花数\,因为153=13+53+33 7.3.6 从键盘上输入多个单词,输入时各单词用空格隔开,用'#'结束输入。现编写一 个子函数把每个单词的第一个字母转换为大写字母,其主函数实现单词的输入。 7.3.7 编写函数fun(char str[20], int num[10]),它的功能是:分别找出字符串中每个 数字字符(0,1,2,3,4,5,6,7,8,9)的个数,用num[0]来统计字符0的个数,用num[1]来统计字符1的个数,用num[9]来统计字符9的个数。字符串由主函数从键盘读入。 fun(char str[20], int num[10]) {int i; for (i=0;i<10;i++) num[i]=0 for (i=0;str[i]!=’\\0’;i++) num[str[i]-’0’]++; }
C语言第七章



