内容发布更新时间 : 2024/11/18 22:42:06星期一 下面是文章的全部内容请认真阅读。
C.不允许直接递归调用,但允许间接递归调用 D.既允许直接递归调用,也允许间接递归调用 5.一个函数返回值的类型取决于( C )。
A.return语句中表达式的类型 B.调用函数时临时指定 C.定义函数时指定或缺省的函数类型 D.调用该函数的主调函数的类型 6.下面叙述中,错误的是( C )。
A.函数的定义不能嵌套,但函数调用可以嵌套 B.为了提高可读性,编写程序时应该适当使用注释
C.变量定义时若省去了存储类型,系统将默认其为静态型变量 D.函数中定义的局部变量的作用域在函数内部
7.在一个源程序文件中定义的全局变量的有效范围为( C )。
A.一个C程序的所有源程序文件 B.该源程序文件的全部范围 C.从定义处开始到该源程序文件结束 D.函数内全部范围
8.某函数在定义时未指明函数返回值类型,且函数中没有return语句,现若调用该函数,则正确的说法是( D )。
A.没有返回值 B.返回一个用户所希望的值 C.返回一个系统默认值 D.返回一个不确定的值
9.函数swap(int x, int y)可实现对x和y值的交换。在执行如下定义及调用语句后,a和b的值分别为( B )。
int a=10, b=20; swap (a,b );
A.10和10 B.10和20 C.20和10 D.20和20 10.下面错误的叙述是( D )。
A.在某源程序不同函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量
C.在函数内定义的变量只在本函数范围内有效
D.在函数内的复合语句中定义的变量在本函数范围内有效
二、程序填空
1.求s=1!+2!+3!+…+10!之和。 程序如下:
#include
int k=1; long int p=1; for(k=1; k<=n; k++)
【1】p=p*k; ; return p; } main( ) {
int n; float sum=0;
for(n=1;n<=10;n++)
【2】sum=sum+factorial(n); ; printf(\}
2.以下函数用以求x的y次方。
double fun (double x, int y) {
int i; double m=1;
for ( i=1; i 【3】<=y或 三、阅读程序并写出运行结果 1.下面程序运行的结果是_____2,4,,6,8________: #include int n; for(n=1; n<=MAX_COUNT; n++) fun( ); } void fun( ) { static int k; k=k+2; printf (\} 4.下面程序运行的结果是___8,17______: #include static int m=0, n=2; n+=m+1; m=n+x+y; return m; } main( ) { int j=4, m=1, k; k=fun(j, m); printf (\ k=fun(j,m); printf(\} 题解5 数 组 5.1 习题 一、选择题 1.在下列数组定义、初始化或赋值语句中,正确的是( C )。 A.int a[8]; a[8]=100; B.int x[5]={1,2,3,4,5,6}; C.int x[ ]={1,2,3,4,5,6}; D.int n=8; int score[n]; 2.若已有定义:int i, a[100]; 则下列语句中不正确的是( C )。 A.for ( i=0; i<100; i++ ) a[i]=i; B.for ( i=0; i<100; i++ ) scanf ( \C.scanf (\ D.for ( i=0; i<100; i++ ) scanf ( \3.与定义char c[ ]={\不等价的是( C )。 A.char c[ ]={ 'G', 'O', 'O', 'D', '\\0'}; B.char c[ ]=\ C.char c[4]={\ D.char c[5]={ 'G', 'O', 'O', 'D', '\\0'}; 4.若已有定义:char c[8]={\则下列语句中不正确的是( D )。 A.puts (c); B.for ( i =0; c[i]!= '\\0'; i ++ ) printf (\c[i]); C.printf (\ D.for ( i =0; c[i]!= '\\0'; i ++ ) putchar ( c ); 5.若定义a[ ][3]={0,1,2,3,4,5,6,7}; ,则a数组中行的大小是( B )。 A.2 B.3 C.4 D.无确定值 6.以下程序的运行结果是( B )。 #include int i=0; while(b[i]<=10) { b[i]+=2; i++; } } main( ) { int i, a[ ]={ 1, 5,10, 9,13, 7}; f (a+1); for(i=0; i<6; i++) printf(\} A.2 7 12 11 13 9 B.1 7 12 11 13 7 C.1 7 12 11 13 9 D.1 7 12 9 13 7 7.若执行以下程序段,其运行结果是( D )。 char c[ ]={'a', 'b', '\\0', 'c', '\\0'}; printf ( \ A.ab c B.'a''b' C.abc D.ab 8.数组名作为参数传递给函数,作为实际参数的数组名被处理为( D )。 A.该数组长度 B.该数组元素个数 C.该函数中各元素的值 D.该数组的首地址 9.执行下面的程序段后,变量k中的值为( D )。 int k=3, s[2]={1}; s[0]=k; k=s[1]*10; A.不定值 B.33 C.30 10.在定义 int a[5][4]; 之后;对a的引用正确的是( C )。 A.a[2][4] B.a[5][0] C.a[0][0] D.a[0,0] 11.当接受用户输入的含空格的字符串时,应使用函数( B )。 A.scanf( ) B.gets( ) C.getchar( ) D.getc( ) 二、程序填空 1.以下程序用来检查二维数组是否对称(即对所有i,j都有a[i][j]=a[j][i])。 #include int a[4][4]={1,2,3,4, 2,2,5,6, 3,5,3,7, 8,6,7,4}; int i, j, found=0; for ( j=0; j<4; j++ ) { for (i=0; i<4; i++ ) if ( 【1】【1】a[i][j]!=a[j][i] ) { found= 【2】1 ; break; } if (found) break; } if (found) printf (\不对称\\n\ else printf(\对称\\n\ D.0