C Primer Plus(第六版)第六章编程答案10~18

// 编写一个程序,要求用户输入一个上限整数和一个下限的整数面积算从上限
// 到下限范围内所有整数的平方和,并显示计算结果。然后程序继续提示用户
// 输入上限和下限整数,并显示结果直到用户输入的上限整数等于或小于下限
// 整数为止。程序的运行实例如下:
// Enter lower and upper integer limits:5 9
// The sums of the squares from 25 to 81 is 255
// Enter lower and upper integer limits:3 25
// The sums of the squares from 9 to 625 is 5520
// Enter lower and upper integer limits:5 5
// Done
#include"stdio.h"
int JS(int n,int p);
int main(void)
{
	int lower,upper,a,b,c;
	printf("Enter lower and upper integer limits:");
	scanf("%d %d",&lower,&upper);
	while(lower<upper)
	{	
		a=JS(lower,upper);
		b=lower*lower;
		c=upper*upper;
		printf("The sums of the squares from %d to %d is %d\n",b,c,a);
		printf("Enter lower and upper integer limits:");
		scanf("%d %d",&lower,&upper);
	}	
	printf("Done\n");
	return 0;
}
int JS(int n,int p)
{
	int sum=0;
	for( ;n<=p;n++)
	sum+=n*n;
	return sum;
}

十一

// 编写一个程序,在数组中读入8个整数,然后按倒序打印这8个整数。
#include"stdio.h"
int main(void)
{
	int a[8],b;
	printf("please enter eight numbers:");
	for(b=0;b<8;b++)
		scanf("%d",&a[b]);
	for(b=7;b>=0;b--)
		printf("%2d",a[b]);
	return 0;	
}

十二

// 考虑下面两个无限序列:
// 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+...
// 编写一个程序计算这两个无限序列的总和,直到到达某次数。提示:奇数个-1
// 相乘得-1,偶数个-1相乘得1.让用户交互的输入指定的次数,当用户输入0或
// 负值时结束输入。查看运行100项、1000项、10000项后得总和,是否发现每个序列
// 都收敛于某值?
#include"stdio.h"
int main(void)
{
	int tct;
	double nbm,sum,sun;
	int limit;
	printf("Enter the number of terms you want:");
	scanf("%d",&limit);
	for(sum=0,nbm=1,tct=1;tct<=limit;nbm++,tct++)
	{
		sum+=1.0/nbm;
		printf("sum=%f,when terms =%d\n",sum,tct); 
	}
	
	for(sun=0,nbm=1,tct=1;tct<=limit;nbm++,tct++)
	{
		if(tct%2==0)
			sun+=-1.0/nbm;
		else
			sun+=1.0/nbm;
		printf("sun=%f,when terms =%d\n",sun,tct); 
	}
	printf("The first infinite series:%f\n  The second infinite series:%f",sum,sun);
	return 0;
 } 

十三

// 编写一个程序。创建一个包含8个元素得int类型数组。分别把数组元素
// 设置为2得前8次幂。使用for循环设置数组元素的值,使用do while
// 循环显示数组元素的值
#include"stdio.h"
int main(void)
{
	int a[8],b,d=1;
	for(b=0;b<8;b++)
	{
		d*=2;
		a[b]=d;		
	}
	b=0;
	do{
		printf("%5d",a[b]);
		b++;
	}while(b<8);
	return 0;
}

十四

// 编写一个程序,创建两个包含8个元素的double类型数组,使用循环提示用户
// 为第一个数组输入8个值。第二个数组的值设置为第一个数组对应元素的累计之和
// 例如,第二个数组的第4个元素的值是第一个数组前4个元素之和,第二个数组的第5
// 个元素的值是第一个数组前5个元素之和(用嵌套循环可以完成,但是利用第二个数组
// 的第5个元素是第二个数组的第4个元素与第一个数组的第5个元素之和,只用一个循环
// 就能完成任务,不需要使用嵌套循环)。最后,使用循环显示两个数组的内容,第一个数组
// 显示成一行,第二个数组显示在第一个数组的下一行,而且每个元素都与第一个数组各元素
// 相对应
#include"stdio.h"
int main(void)
{
	int n,a;
	double ar[8],arz[8];
	printf("Please enter eight numbers.");
	for(a=0;a<8;a++)
	{
	scanf("%lf",&ar[a]);
		for(n=1;n<=a;n++)
		{
			arz[0]=ar[0];
			arz[n]=arz[n-1]+ar[n];
		}
	}
	printf("------------------------------------------------\n");
	for(n=0;n<8;n++)	
		printf("%7.3lf",ar[n]);
	printf("\n");
	for(n=0;n<8;n++)	
		printf("%7.3lf",arz[n]);
	printf("\n------------------------------------------------");
	return 0;
}

十五

// 编写一个程序,读取一行输入,然后把输入的内容倒叙打印出来。可以把输入
// 储存在char类型的数组中,假设每行字符不超过255.回忆一下,根据%c转换
// 说明,scanf()函数一次只能从输入中读取一个字符,而且在用户按下Enter
// 健时scanf()函数会生成一个换行字符(\n)。
#include"stdio.h"
int main(void)
{
	int i=0;
	char a[255];
	printf("Please enter evering you like"
	"but no more than 255\n");
	while(scanf("%c",&a[i])&& a[i]!='\n')
		i++;
	for(;i>=0;i--)
		printf("%c",a[i]);
	return 0;
}

十六

// Daphne以10%的单利息投资了100美元(也就是说,每年投资获利相当于原始
// 投资的10%)。Deirdre的以5%的复合利息投资100美元(也就是说,利息是当前
// 余额的5%,包含之前的利息)。编写一个程序,计算需要多少年Deirdre的投资
// 额才会超过Daphne,并显示那时两人的投资额。
#include"stdio.h"
int main(void)
{
	float Da=100.0,De=100.0,a;
	float b,suma=0.0,sume=0.0;
	int n;
	for(n=0;suma>=sume;n++)
	{	a=Da*0.1;
		suma=Da+a*(n+1);
		b=De+De*0.05;
		De=b;		
		sume=De;
	}
	printf("需要%d超过\n",n);
	printf("Da =%f\nDe =%f",suma,sume);
	return 0;
}

十七

// Chuckie Lucky赢得了100万美元(税后),他把奖金存入年利率8%的账户
// 在每年的最后一天,Chuckie取出10万美元。编写一个程序,计算多少年后
// Chuckie会取完账户的钱。
#include"stdio.h"
int main(void)
{
	int year=0;
	float sum=100.0;
	while(sum>=0)
	{
		sum+=sum*0.08;
		sum-=10;
		year++;
		printf("第%d年后%f\n",year,sum);
	}
	printf("%d年后",year);
	return 0;
}

十八

// Rabund博士加入了一个社交圈。起初他又5个朋友。他注意到他的朋友圈数量以下面
// 方式增长。第一周少了1个朋友,剩下的朋友数量翻倍;第二周少了2个朋友,剩下的
// 朋友数量翻倍。一般而言,第N周少了N个朋友,剩下的朋友翻倍。编写一个程序,计算
// 并显示Rabund博士每周的朋友数量。该程序一直运行,知道超过邓巴数(Dunbar`snumber)
// 邓巴数是粗略估算一个人在社交圈中有稳定关系的成员的最大值,该值大约是150.
#include<stdio.h>
#define ORIGINAL 5
#define RATE 2
#define DUNBER 150
int main(void)
{
    int weeks;
    int friends = ORIGINAL;
    weeks = 1;
 	
    do
    {
       friends -= weeks;
       friends *= 2;
       printf("week= %d   friend= %d\n", weeks, friends);
        weeks++;
    } while(friends <= DUNBER);
 
    return 0;
}

如有问题请留言,及时回答复。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X在学了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值