C Primer Plus参考答案(第6章 中文版)

4.使用嵌套循环,按下面的格式打印字母:
A
BC
DEF
GHIJ
KLMNO
PQRSTU
答案 方法1.

int main()
{
	int row;
	char ch;
	for (row=0;row<6;row++)
	{
		for (ch='A'+row*(row+1)/2;ch<=('A'+row*(row+3)/2);ch++)
			printf("%c",ch);
		printf("\n");
	}
	return 0;
 }

方法2.

#include<stdio.h>
int main()
{
    int i, j;
    char ch;
    ch = 'A';
    for(i = 1; i <= 6; i++)
    {
        for(j = 1; j <= i; j++)
        {
            printf("%c", ch);
            ch++;
        }
        printf("\n");
    }
    return 0;
}

5.编写一个程序,提示用户输入大写字母。使用嵌套循环以下面金子塔型的格式打印字母;

         A
        ABA
       ABCBA
      ABCDCBA
     ABCDEDCBA

打印这样的图形,要根据用户输入的字母来决定。例如,上面的图形是在用户输入E后打印结果。

#include <stdio.h>
int main()
{
	char ch;
	int i,j,row;
	printf("请你输入一个大写字母:\n");
	scanf("%c",&ch);
	row=ch-'A';
	for (i=0;i<=row;i++)
	{
		for (j=0;j<=row-i;j++)
			printf(" ");
		for(j=0;j<=i;j++)
			printf("%c",'A'+j);
		for (j=i-1;j>=0;j--)
			printf("%c",j+'A');
			printf("\n"); 
	}
	return 0;
 }

12.考虑下面两个无限序列:

1.0+1.0/2.0+1.0/3.0+1.0/4.0+…
1.0-1.0/2.0+1.0/3.0-1.0/4.0+…

编写一个程序计算这两个无限序列的总和,直到到达某次数。查看运行100项、1000项、10000项后的总和,是否发现每个序列都收敛于某值?

#include <stdio.h>
int main()
{
	float a=1.0,begin,sum1=0.0,sum2=0.0;
	int count,i=1;
	printf("请输入计算次数:\n");
	scanf("%d",&count);
	for (begin=1.0;begin<=count;begin++)			
		sum1 +=a/begin;
	for (begin=1.0;begin<=count;i++,begin++)
		{
			if (i%2==0)
				a=-a;
			else
				a=a;
			sum2 +=a/begin;
		}
	printf("sum1=%f,sum2=%f\n",sum1,sum2);
	return 0; 
 }

14.编写一个程序,创建两个包含8个元素的double类型数组,使用循环提示用户为第一个数组输入8个值。第二个数组元素的值设置为第一个数组对应元素的累计之和。最后,使用循环显示两个数组的内容,第一个数组显示成一行,第二行显示在第一个数组的下一行,而且每一个元素都与第一个数组各元素相对应。

#include <stdio.h>
#define SIZE 8
int main()
{
	int index=0,i;
	double sum1=0.0; 
	double number[SIZE],sum[SIZE];
	printf("请输入8个数字:\n");
	for (index;index<SIZE;index++)
		scanf("%lf",&number[index]);
	for (i=0;i<SIZE;i++)
		printf("%-5.0f",number[i]); 
	printf("\n"); 				
	for (i=0;i<SIZE;i++)
	{
		sum1 +=number[i];
		sum[i]=sum1;
		printf("%-4.0f ",sum[i]);
	}
	return 0;
 } 

17.Chuckie Lucky 赢得了100万美元(税后),他把奖金存入年利率8%的账户。在每年的最后一天,chuckie取出10万美元。编写一个程序,计算多少年后Chuckie会取完账户的钱?

#include <stdio.h>
#define MONEY 100.00
#define RATE 0.08
int main()
{
	double money=MONEY;
	int year=0;
	do
	{
		year++;
		money=money*RATE+money;//一年后的钱 
		money -=10.0;
	}
	while (money>0.0); 
		printf("%d 年后能取完账户的钱.\n",year);
	return 0; 
}

18.Rabnud 博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋友数量一下的方式增长数量翻倍。一般第一周少1个朋友,剩下的朋友数量翻倍;第2周少了2个朋友,剩下的朋友数量翻倍。一般而言,第N周少N个朋友,剩下的朋友数量翻倍。编写一个程序,计算并显示Rabnud博士每周的朋友数量。该程序一直运行,直到超过邓巴数。邓巴数是粗略估算一个人在社交圈中有稳定关系的成员的最大值,该值大约是150。

#include <stdio.h>
int main()
{
	int friend_=5,week=0;
	do
	{
		week++;
		friend_ -=week;
		friend_ *=2;
	}
	while (friend_<=150);
	printf("%d 周后 Rabnud有%d个朋友,已经超过150个了.\n",week,friend_);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值