第七章 数组 下载本文

printf(“\\n”); printf (“%f\\t”,a[i] ); }

printf(“\\n”); }

① A) float a[10],x B) float a[9],x C) int a[10],x D) int a[9],x ② A) i>=10 B) i>=9 C) i<=10 D) i<=9 ③ A) i<=8 B) i>=9 C) i<=9 D) i>=9 ④ A) j<=9 B) j>=9 C) j<=9-i D) j>=9-I

⑤ A) a[j]>a[i] B) a[j]a[j+1] D) a[j]=9 B) i<=10 D) i>=10 ⑧ A) i%5==0 B) i%5!=0 C) i/5==0 D) i/5!=0 7.4程序填空

【7.68】程序读入20个整数,统计非负数个数,并计算非负数之和。

#include “stdio.h” main ( )

{ int i, a[20], s, count; s=count=0; for ( i=0; i<20; i++ ) scanf(“%d”, ① ) for ( i=0; i<20; i++ ) { if ( a[i]<0 ) ② ; s += a[i]; count++; }

printf (“s=%d\\t count=%d\\n”, s, count); }

【7.69】下面的程序是求出数组a的两条对角线上的元素之和。

#include “stdio.h” main ( )

{ int a[3][3]={1,3,6,7,9,11,14,15,17}, sum1=0, sum2=0, i, j; for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ )

if ( i= =j ) sum1 = sum1 + a[i] [j]; for ( i=0; i<3; i++ ) for ( ① ; ② j-- ) if ( i+j= =2 )

sum2 = sum2 + a[i][j];

printf ( “sum1=%d, sum2=%d\\n”, sum1, sum2 ); }

【7.70】下面的函数invert的功能是将一个字符串的内容颠倒过来。

Void invert ( char str [ ] ) { int i, j, ① ;

for (i=0,j=strlen(str) ② ;i

}

【7.71】以下程序是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不同字符的ASCII码之差.例如:输入的两个字符串分别为”abcdefg”和”abceef”,则第一个不同的字符为’d’和’e’,输出为-1.

#include “stdio.h” main ( )

{ char strl[100],str2[100],c; int I ,s;

printf (“Enter string 1:”); gets(str1); printf (“Enter string 2:”); gets(str2); i =0;

While ((str1[i]==str2[i] && strt1[i]!= ① )) i++; s= ② ;

printf(“%d\\n”,s); }

【7.72】*从键盘上输入若干(不超过100个)学生的成绩,计算出平均成绩,并输出低于平均分的学生的成绩,用输入负数结束输入.

#include “stdio.h” main ( )

{ float x[1000], sum=0, ave, a; int n=0, i;

printf (“Enter mark:” ); scanf (“%f”, &a); while (a>0 && n<1000 ) { sum += ① ; x[n] = ② ; n++;

scanf (“%f”, &a); } ave = ③ ; printf (“Output:\\n”); printf (“ave=%f\\n”,ave); for ( i=0; i

【7.73】*求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左向右读与从右向左读是一样的,例如:34543和1234321都是回文数

例如:满足题意要求的数有:N=11,11=121;N=111,111=12321。 #include main ( )

{ int m[16], n, i, t, count=0; long a, k;

printf (“Result is:\\n”); for ( n=10; n<200; n++ ) { k = 0; t = 1; a = n*n;

for ( i=1; a!=0; i++ ) { ① ; a / = 10; }

for ( ; i>1; i-- ) { k += m[i-1]*t; ② ; } if ( ③ )

2

2

printf( “-: d d\\n”, ++count, n, n*n); } }

【7.74】*下面的函数是在二维数组中产生如下形式得杨辉三角形。

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… …… #define N 11 yahui (int a[ ][N]) { int i, j; for(i=1; i

for ( ① ; i

【7.75】下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其它以此类推。

fun ( int x, int b[ ]) { int k=0, r; do

{ r=x% ① ; b[k++] = r; x /= ② ; } while (x); }

【7.76】*以下程序可以将从键盘上输入的十进制数(long型)以二进制,八进制或十六进制数的形式输出。

#include main ( )

{ char b[16]={?0?, ?1?, ?2?, ?3?, ?4?, ?5?, ?6?, ?7?, ?8?, ?9?, ?A?, ?B?, ?C?, ?D?, ?E?, ?F?}; int c[64], d, i=0, base; long n;

printf (“Enter a number:”); scanf (“”, &n);