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 }
2.以下程序是用来输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把两者对调,然后输出调整后的5个数。
#include
int a[5], t, i, maxi, mini; for ( i=0; i<5; i++ )
scanf ( \ mini=maxi= 【3】0; for ( i=1; i<5; i++ ) {
if( 【4】a[mini]>a[i] ) mini=i;
if ( a[i]>a[maxi] ) 【5】 maxi=i ; }
printf ( \最小数的位置是:=\\n\ printf ( \最大数的位置是:=\\n\ t=a[maxi];
【6】a[maxi]=a[mini] ; a[mini]=t;
printf ( \调整后的数为: \ for ( i=0; i<5; i++ )
printf ( \ printf (\}
3.给定一3 x 4的矩阵,求出其中的最大元素值,及其所在的行列号: main( ) {
int i,j,row=0,colum=0,max;
static int a[3][4]={{1,2,3,4},{9,8,7,6},{10,-10,-4,4}}; 【7】max=a[0][0] ; for(i=0;i<=2;i++)
for(j=0;j<=3;j++) {
【8】if (a[i][j]>max) ; 【9】{max=a[i][j]; row=i;colum=j;} ; }
printf(\}
4.下述函数用于确定给定字符串的长度,请完成程序。
strlen ( char s[ ] ) {
int i=0;
while ( 【10】s[i]!= '\\0' return ( 【11】i ); }
5.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符数组,然后输出该字符数组中的字符串,请填空。
#include
char str[81]; int i;
for ( i=0; i<80; i++ ) {
str[i]=getchar( );
if (str[i]== '\\n') break; }
str[i]= '\\0';
【12】i=0 ;
while ( str[i]!= '\\0' ) putchar( 【13】str[i++] ); }
三、阅读程序并写出运行结果 1.写出下列程序的运行结果并分析。
#include
static int a[4][5]={{1,2,3,4,0},{2,2,0,0,0},{3,4,5,0,0},{6,0,0,0,0}}; int j,k;
for (j=0;j<4;j++) {
for(k=0;k<5;k++) {
if (a[j][k]==0) break; printf(\ } }
printf(\}
2.写出下列程序的运行结果并分析。
#include
int a[6][6],i,j; for (i=1 ;i<6 ; i++) for ( j=1;j<6;j++) a[i][j]= i*j; for (i=1 ;i<6 ; i++) {
for ( j=1;j<6;j++)
printf( \ printf(\ } }
3.写出下列程序的运行结果并分析。
#include
int a[ ]={1,2,3,4},i,j,s=0; j=1;
for ( i=3;i<=0;i-- ) {
s=s+a[i]*j; j=j*10; }
printf(\}
4.写出下列程序的运行结果并分析。
#include
int a[]={0,2,5,8,12,15,23,35,60,65}; int x=15,i,n=10,m; i=n/2+1; m=n/2; while(m!=0) {
if(x