第七章数组习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
12.#include
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 ; }