第七章数组习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章习题答案

一.单项选择题

1.B

2.D

3.A

4.B

5.A

6.B

7.D

8.C

9.C

10.B

11.C

12.C

13.A

14.D

15.C

16.C

二.填充题

1.类型0 越界整型表达式

2.连续数组名地址

3.0 6

4. 2 0 0

5....d‟ 0

6.[3][10] a[1]

7.windows 95

8.windows 95

9. 5

10.7

11.#include #include

12.#include for(i=0;i<20;i++) scanf(“%f”,&a[i]);pjz/=20;

printf(“%f,%f”,pjz,t);

13.&a[i] i%10==0 a[i-1]

14.k=p

15.&x a[i] i- - i!=0

16.k i

17.9-i i 9 0 i (i!=j) && (j!=(9-i)) printf( “\n “) 18.0 1 scanf( “%c”, &ca) 65

19.n%base b[d]

三.程序分析题

1.该程序从键盘输入一行字符放在字符数组中,然后输出。

2.该程序从输入的10个字符串中找出最长的那个串,并显示最长的那个串及其长度。3.该程序的功能是从键盘输入10个字符串,从小到大排序并输出。

4.运行结果,输出3x3矩阵的主对角线和辅对角线的元素之和。18 10

5.4 25 27 16

6.输出结果: gabcdef

fgabcde

efgabcd

7.输出结果:*******

*****

***

*

8. 1 0 2 2 5 7 13 20

9. 12 6,1,8,7,4,5,0,3,2 。

10.把矩阵a转置放到矩阵b

11.

运行结果输出:*****

*****

*****

*****

*****

12.运行结果把3x3矩阵a和b对应元素相加到矩阵c,输出矩阵c。

13.程序边定义边赋值的方式定义了一个字符数组str。它包括22个字符(注意′\1′和′\11′分别代表一个特定字符)及末尾由系统自动加入的串结束标志′\0′,。程序利用for循环逐个读出str数组中的字符赋给字符变量c,再由内嵌的switch语句根据c的值来控制具体输出的字符。直到读到字符串结束标志′\0′为止。

(1)循环是从k=2开始,首先读取的是str中的第三个字符S。循环体内除switch语句外,还有一条语句:putchar(‟ *‟);

( 2 )continue语句要跳过循环体内尚未执行的语句,结束本次循环;break语句则仅仅跳出switch语句,仍要执行循环体中的语句。

(3)当从str中读取的字符与case中所有常量表达式的值都不相等时,执行default后的语句,原样输出字符,并跳过putchar(‟ *‟)结束本次for循环,(如第三个S,第一个W,I,T,C,H,第三个W,M和P均属此)。

(4)当读到字符L时,与case中的‘L’相等,执行continue,结束本次for循环。没有输出。

(5)当读到字符1时,与case中的‘1’相等,执行break语句,跳出switch,输出一个字符*。

(6)当读到字符‟\1‟(第一次出现的)时,代表一个8进制的1,与case中的1相等,执行while循环。在while循环中,首先执行c=str[++k],取下一个字符‟\11‟,它既不等于‟\1‟又不等于‟\0‟,while循环继续执行,取出‟W‟。同理,再次执行while循环,取出字符‟\1‟,从而结束while循环,滑向下一个case,输出字符‟#‟,顺序执行到continue,结束

本次for循环。

(7)当读到大写字母A时,与case中的‟A‟相等,输出一个小写字母a,并结束本次for 循环。

经以上分析可知,程序输出结果为:SWITCH*#WaMP*

(四)、程序设计题

1.解:

#include

void main( )

{ float a[10], x ;

int i;

for(i=0; i<10; i++)

scanf( “%f”, &a[i]); // 输入单精度型一维数组a[10] for(i=0, x=0 ;i<10; i++) x=x+a[i];

x=x/10.0; // 计算所有元素的平均值

printf( “平均值=%f\n”, x); // 输出平均值

return ;

}

2.解:

#include

void main( )

{ int a[10],x,i;

for(i=0; i<10; i++) scanf( “%d”,&a[i]); // 输入

for(i=0; i<5; i++)

{ x=a[i]; a[i]=a[9-i]; a[9-i]=x;} // 逆序

for(i=0; i<10; i++) printf( “%d “, a[i]); // 输出

printf( “\n “);

return ;

}

3.解:

#include

void main( )

{

float a[3][3], sum1=0, sum2=0;

int i, j ;

for(i=0; i<3; i++)

for(j=0; j<3; j++)

scanf(“%f“, &a[i][j]);

for(i=0; i<3; i++) sum1=sum1+a[i][i];

for(i=0; i<3; i++) sum2=sum2+a[i][3-i-1];

printf(“主对角线的和是sum1=%f\n“, sum1);

printf(“辅对角线的和是sum2=%f\n“, sum2);

return ;

}

相关文档
最新文档