第七章 数组 下载本文

int i, k, j;

for ( k=0; s[k]!=?\\0?; k++) { j=0;

while ( s[k]>=a[j] && a[j]!=?\\0? ) j++; for ( ① ) ② ; a[j]=[k]; } puts(a);

}

① A) i=stlen(a)+k; j>=j; i-- B) i=strlen(a); i>=j; i-- C) i=j; i<=strlen(a)+k; i++ D) i=j ; i<=strlen(a); i++

② A) a[i]=a[i+1] B) a[i+1]=a[i] C) a[i]=a[i-1] D) a[i-1]=a[i]

【7.62】下面程序的功能是将已按升序排好的两个字符串a和b中的字符按升序归并到字符串c中。 #include #include main ( )

{ char a[ ]=”acegikm”; char b[ ]=”bdfhjlnpq”; char c[80],*p; int i=0, j=0, k=0;

while ( a[i]!=?\\0? && b[j]!=?\\0? ) { if ( a[i]

else { ② } k++;

} c[k]=?\\0?; if ( ③ ) p=b+j; else p=a+i; strcat( c, p);

puts( c );

}

① A) c[k]=a[i]; i++; B) c[k]=a[j]; i++;

C) c[k]=b[i]; j++; D) c[k]=b[j]; j++;

② A) c[k]=a[i]; i++; B) c[k]=a[j]; i++;

C) c[k]=a[i]; j++; D) c[k]=b[j]; j++;

③ A) a[i]= =?\\0? B) a[i]!=?\\0?

C) a[i-1]= =?\\0? D) a[i-1]!=?\\0?

【7.63】下面程序的功能是将字符串 s中所有的字符’c’ 删除。请选择填空。

#include main ( ) { char s[80]; int i, j; gets(s);

for (i=j=0; s[i]!= ?\\0?; i++ ) if ( s[i]!=?c? ) ; s[j]= ?\\0?; puts(s); }

A) s[j++]=s[i] B) s[++j]=s[i] C) s[j]=s[i];j++ D) s[j]=s[i]

【7.64】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词。假设单词之间是以空格分隔。

#include main ( )

{ char s[80],c1,c2=’’; int i=0, num=0; gets(s);

while ( s[i]!=’\\0’) { c1=s[i];

if ( i==0 ) c2=’’; else c2=s[i-1]; if ( ) num++; i++; }

printf(“There are %d words.\\n”,num); }

A) c1==’’&&c2==’’ B) c1!=’’&&c2==’’ C) c1==’’&&c2!==’’ D) c1!=’’&&c2!=’’

【7.65】*口袋中有红,黄,蓝,白,黑色彩球各一个,任意从中取出3个,问:可以有多少种不同(顺序

不限)的取法。下列的程序用来输出全部不同的取法,格式为“第1种“---”。注意:程序中的计次是从1开始,而不是从0开始的。

#include

main ( )

{ int i, j, k, m, n, a[100][3]; m=0;

for ( ① ; i<5; i++) for ( j= ② ; j<5; j++) for ( k= ③ ; k<5; k++) { a[m][0]=i; a[m][1]=j; a[m][2]=k; printf (“\\n第-种: “, ④ ); for ( n=0; n<3; n++) switch ( ⑤ )

{ case 0: printf (“RED ”); break; case 1: printf (“YELLOW”); break; case 2: printf (“BLUE ”); break; case 3: printf (“WHITE “); break; case 4: printf (“BLACK “); break; } m++; } }

① A) i=1 B) i=1; C) i=0 D) i=0; ② A) i B) i+1 C) 0 D) 1 ③ A) j B) j+1 C) 0 D) 1 ④ A) i+1 B) j+1 C) k+1 D) m+1

⑤ A) a[m][n] B) a[m][i] C) a[m][j] D) a[m][k]

【7.66】*某人有5张2分的邮票和5张3分的邮票,问使用这些邮票可以组合出多少种不同面值的邮资。(例如:1张2分邮票加1张3分邮票可以组成5分的邮资;3张2分的邮票或2张3分的邮票都可以组成同样的6分邮资。) #include int a[100]; main ( ) { int I, j, k, s, n=0; for ( I =0 ) ① ;I++)

for ( j =0 ) ② ;j++) {

S = ③ ;

for (k=0; a[k]!=0;k++) if (s==a[k])

④ ;

if ( a[k]==0 && s>0 ) { ⑤ ; n++; } }

prinft ( “\\n%d kinds:”,n): for (k=0;a[k]) printf(“-,”,a[k]); }

① A) i<=2 B) i<2 C) i<=5 D) i<5 ② A) j<=3 B) j<3 C) j<=5 D) j<5

③ A) 5*i+5*j B) 2*i+5*j C) 5*i+3*j D) 2*i+3*j ④ A) a[k]=s B) n=k C) continue D) break

⑤ A) a[k-1]=s B) a[k]=s C) a[k+1]=s D) a[k+2]=s

【7.67】下面的程序是使用冒泡法对输入的10个浮点数从小到大进行排序。排好序的10个数分两行输出。程序如下:

#include main ( ) { ① ; int i, j;

printf (“Input 10 numbers please\\n”); for ( i=0; ② ; i++) scanf (“%f”, &a[i]); printf (“\\n”); for ( i=1; ③ ; i++) for ( j=0; ④ ; j++) if ( ⑤ ) { x=a[j]; ⑥ ; a[j+1]=x; }

printf (“The sorted 10 numbers;\\n”); for ( i=0; ⑦ ; i++ ) { if ( ⑧ )