C Prime Plus 第6章习题

你该逆袭了

红色标注的是:错误的答案
蓝色标注的是:正确的答案
绿色标注的是:做题时有疑问的地方
橙色标注的是:答案中需要着重注意的地方

一、复习题

1、

在这里插入图片描述
我的答案:
2

2、

在这里插入图片描述
我的答案:
int 类型:36 18 9 4 2 1
double 类型:会一直执行 value /= 2命令,程序无法结束。

3、

在这里插入图片描述
我的答案:

x > 5;
(scanf("%lf", &x) == 0);
5 == x;

4、

在这里插入图片描述
我的答案:

(scanf("%d", &x) == 1);
x != 5;
x >= 20;

5、

在这里插入图片描述

我的答案:错误

#include <stdio.h>

int main()
{
   
   
	int i = 0;
	int j = 0;
	int list[10] = {
   
    0 };  //中括号

	for (i = 1; i <= 10; i++)  //分号
	{
   
   
		list[i] = 2 * i + 3;
		for (j = 1; j >= i; j++)  
		{
   
   
			printf("  %d", list[j]);
		}
		printf("\n");
	}
	return 0;
}

正确答案:

当 i 值为 1 时,嵌套循环的内层循环将会是无限循环,且该 for 循环使用 >= 在逻辑上错误。

for (j = 1; j >= i; j++)    //错误
//应该改成
for (j = 1; j <= i; j++)

6、

在这里插入图片描述
我的答案:

#include <stdio.h>

int main()
{
   
   
	int i = 0;
	int j = 0;
	char output = 0;

	for (i = 0; i < 8; i++)
	{
   
   
		j = 0;
		for (j = 0; j < 8; j++)
		{
   
   
			printf("%c  ", '$');
		}
		putchar('\n');
	}

	return 0;
}

标准答案:
行数使用外层循环控制,行内数据通过内层循环控制打印。

7、

在这里插入图片描述
我的答案:

Hi!  Hi!  Hi!  Bye!  Bye!  Bye!  Bye!  Bye!
ACGM    

8、

在这里插入图片描述

我的答案:错误

Go west,young man!
Hp xftu-zpvoh!nbo"
Go west, young man!
$o west, young man!

正确答案:

错误原因:没有仔细审题,while(ch != ‘g’)

Go west,youn!
Hp!xftu-!zpvo
Go west, young
$o west, youn

9、

在这里插入图片描述
我的答案:

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

10、

在这里插入图片描述
我的答案:
mint
10
double
ii

11、

在这里插入图片描述
我的答案:

#include <stdio.h>
#define SIZE 8

int main()
{
   
   
	int by_twos[SIZE] = {
   
    0 };
	int index = 0;

	for (index = 0; index < SIZE; index++)
	{
   
   
		by_twos[index] = 2 * index;
	}
	for (index = 0; index < SIZE; index++)
	{
   
   
		printf("%d  ", by_twos[index]);
	}
	printf("\n");

	return 0;
}

12、

在这里插入图片描述
我的答案:

long name(int x)  //返回类型一定要是 long
{
   
   
	*****;
	return long类型的值;
}

13、

在这里插入图片描述

我的答案:考虑非常不到位

long mit(int x)
{
   
   
	long y = 0;
	y = x * x;
	return y;
}

正确答案:有我想不到的注意点

函数的参数为 int 类型,为了确保返回值为 long 类型,必须使用类型转换,且数值等于该参数的平方。处理方法有很多,其中更加安全的方式如下。

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

这样能够保证在计算平方之前就已经将类型转换为 long 类型,返回值为 long 类型。

下面的代码(也就是我的答案)则不够安全,主要原因在于计算平方时使用 int 类型,对于较大的数值,会产生 int 类型的越界,截断结果。转换为 long 类型后,结果依然是截断后的错误数据。

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 int the loop
Now k is 7
k = 7

二、编程练习

1、

在这里插入图片描述

我的答案:

#include <stdio.h>
#define COUNT 26

int main()
{
   
   
	char c = 'a';
	int n = 0;
	char shuzu[26] = {
   
    0 };

	for (c = 'a', n = 0; c < 'a' + COUNT; c++, n++)
	{
   
   
		shuzu[n] = c;
	}
	for (n = 0; n < COUNT; n++)
	{
   
   
		printf("%c ", shuzu[n]);
	}
	printf("\n");

	return 0;
}

标准答案:

程序需要两个循环,第一个循环初始化并存储小写字母,第二个循环用来打印数组的元素。

#include <stdio.h>

int main()
{
   
   
	char alphabet[26] = {
   
    0 };
	int i = 0;

	char c = 'a';
	for (i = 0; i < 26; i++,c++)
	{
   
   
		alphabet[i] = c;
	}
	for (i = 0; i < 26; i++)
	{
   
   
		printf("%c ", alphabet[i]);
	}

	return 0;
}

2、

在这里插入图片描述

我的答案:

#include <stdio.h>
#define COUNT 5

int main()
{
   
   
	int n = 0;
	int m = 0;

	for (n = 0; n < COUNT; n++)
	{
   
   
		for (m = 0; m < n + 1; m++)
		{
   
   
			printf("$");
		}
		printf("\n");
	}

	return 0;
}

标准答案:

外层循环控制打印的行数,内层循环控制打印的行内内容。

#include <stdio.h>

int main()
{
   
   
	int i = 0;
	int j = 0;

	for (i = 1; i <= 5; i++)  //外层循环 控制 行数
	{
   
   
		for (j = 0; j < i; j++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值