当前位置:嗨网首页>书籍在线阅读

07-第6章复习题答案

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

A.6 第6章复习题答案

1. 27706482

2.该循环的输出是:

    36 18 9 4 2 1

如果 valuedouble 类型,即使 value 小于1,循环的测试条件仍然为真。循环将一直执行,直到浮点数下溢生成 0 为止。另外, valuedouble 类型时, %3d 转换说明也不正确。

3.a. x > 5

b. scanf("%lf",&x) != 1

c. x == 5

4.a. scanf("%d", &x) == 1

b. x != 5

c. x >= 20

5.第 4 行:应该是 list[10]

6 行:逗号改为分号。 i 的范围应该是 09 ,不是 110

9 行:逗号改为分号。 >= 改成 <= ,否则,当 i 等于 1 时,该循环将成为无限循环。

10 行:在第 10 行和第 11 行之间少了一个右花括号。该右花括号与第 7 行的左花括号配对,形成一个 for 循环块。然后在这个右花括号与最后一个右花括号之间,少了一行 return 0;

下面是一个正确的版本:

#include <stdio.h>
int main(void)
{                              /* 第3行 */
   int i, j, list(10);            /* 第4行 */
   for (i = 1, i <= 10, i++)       /* 第6行 */
   {                          /* 第7行 */
     list[i] = 2*i + 3;         /* 第8行 */
     for (j = 1, j > = i, j++)    /* 第9行 */
        printf(" %d", list[j]);  /* 第10行 */
     printf("\n");             /* 第11行 */
   }
   return 0;
}

6.下面是一种方法:

#include <stdio.h>
int main(void)
{
   int col, row;
   for (row = 1; row <= 4; row++)
   {
     for (col = 1; col <= 8; col++)
        printf("$");
     printf("\n");
   }
   return 0;
}

7.a. Hi! Hi! Hi! Bye! Bye! Bye! Bye! Bye!

b. ACGM (因为代码中把 int 类型值与 char 类型值相加,编译器可能警告会损失有效数字)

8.a. Go west, youn

b. Hp!xftu-!zpvo

c. Go west, young

d. $o west, youn

9.其输入如下:

31|32|33|30|31|32|33|
***
1
5
9
13
***
2 6
4 8
8 10
***
======
=====
====
===
==

10.a. mint

b. 10 个元素

c. double 类型的值

d.第 ii 行正确, mint[2]double 类型的值, &mingt[2] 是它在内存中的位置。

11.因为第 1 个元素的索引是 0 ,所以循环的范围应该是 0SIZE - 1 ,而不是 1SIZE 。但是,如果只是这样更改会导致赋给第 1 个元素的值是 0 ,不是 2 。所以,应重写这个循环:

for (index = 0; index < SIZE; index++)
   by_twos[index] = 2 * (index + 1);

与此类似,第 2 个循环的范围也要更改。另外,应该在数组名后面使用数组索引:

for( index = 0; index < SIZE; index++)
   printf("%d ", by_twos[index]);

错误的循环条件会成为程序的定时炸弹。程序可能开始运行良好,但是由于数据被放在错误的位置,可能在某一时刻导致程序不能正常工作。

12.该函数应声明为返回类型为 long ,并包含一个返回 long 类型值的 return 语句。

13.把 num 的类型强制转换成 long 类型,确保计算使用 long 类型而不是 int 类型。在 int16 位的系统中,两个 int 类型值的乘积在返回之前会被截断为一个 int 类型的值,这可能会丢失数据。

long square(int num)
{
   return ((long) num) * num;
}

14.输出如下:

1: Hi!
k = 1
k is 1 in the loop
Now k is 3
k = 3
k is 3 in the loop
Now k is 5
k = 5
k is 5 in the loop
Now k is 7
k = 7