C程序设计第五版(谭浩强)-第三章习题

1、假如我国国民生产总值的年增长率为7%,计算10年后我国国民总生产总值与现在相比增长多少百分比。计算公式为:p = (1 + r)∧n
r为年增长率,n为年数,p为与现在相比的倍数

方法1

#include <stdio.h>

int main(){
	
	double p; //与现在相比的倍数 
	double r = 0.07; //年增长率
	int n; //年数
	
	scanf("%d", &n);
	
	int i;
	for(i = 1;i <= n; i++){
		if(i == 1){
			p = (1 + r);
		}else{
			p = (1 + r) * p;
		}
	} 
	
	printf("%d年后,我国国民生产总值与现在相比增长%3.2lf%%",n, p);
	
	return 0;
}

方法2

#include <stdio.h>
#include <math.h> //加入c语言的数学函数库
int main(){
	
	double p; //与现在相比的倍数 
	double r = 0.07; //年增长率
	int n; //年数
	
	scanf("%d", &n); 
	
	p = pow((1 + r), n);
	
	printf("%d年后,我国国民生产总值与现在相比增长%3.2lf%%",n, p);
	
	return 0;
}

2、存款利息的计算。有1000元,想存5年,可按以下5种方式:

1)一次存5年期
2)先存2年期,到期后将本息再存3年期
3)先存3年期,到期后将本息再存2年期
4)存1年期,到期后将本息再存1年期,连续存5次
5)存活期存款。活期利息每一季度结算一次

2017年的银行存款利息如下:
1年定期存款利息为1.5%;
2年定期存款利息为2.1%;
3年定期存款利息为2.75%;
5年定期存款利息为3%;
活期存款利息为0.35(活期存款每一季度结算一次利息)
如果r为年利率,n为存款年数,则计算本息和的公式如下:
1年息本息和:P = 1000 * (1 + r);
n年期本息和:P = 1000 + (1 + n * r);
存n次1年期的本息和为:P = 1000 * (1 + r) ∧ n;
活期存款本息和:P = 1000 * (1 + r/4) ∧ 4n
说明:1000 * (1 + r / 4)是一个季度的本息和

#include <stdio.h>
#include <math.h> 

int main(){
	
	double P; //本息和 
	int n; //存款年数
	double r; //年利润
	int money; //存款金额 
	int LD;  
	
	printf("请输入存款的金额:");
	scanf("%d", &money); 
	
	printf("\n请输入您存款的选择:1活期,2死期,3退出\n");
	scanf("%d", &LD); //在这LD是作为 活期或者死期
	if(LD == 2){
		printf("请输入选择的套餐:\n1、一次存满n年;\n2、先存2年再存3年;\n3、先存3年再存2年;\n4、连续存n个m年;\n5退出;\n");
		scanf("%d", &LD); //在这LD是作为套餐选择 
	
		if(LD == 1){ //套餐1 
			printf("请输入存款的年数:\n1、1年;\n2、2年;\n3、3年;\n4、5年;\n");
			scanf("%d", &n);
			if(n == 1){  
				r = 0.015;
			} else if(n == 2){
				r = 0.021;
			}else if(n == 3){
				r = 0.0275;
			}else if(n = 5){
				r = 0.03;
			}else{
				printf("请输入正确的选择!!");
				return 0;
			}
			
			P = money * (1 + r * n);
		
		}else if(LD == 2){ //套餐2 
			r = 0.021; //存2年的利息 
			P = money * (1 + r * 2);
			r = 0.0275; //存3年的利息 
			P = P + money * (1 + r * 3);
		
		}else if(LD == 3){ //套餐3 
			r = 0.0275;//存3年的利息 
			P = money * (1 + r * 3);
			r = 0.021;//存2年的利息
			P = P + money * (1 + r * 2);
	
		}else if(LD == 4){
			printf("请输入选择的套餐:\n1、连续存m年,1年取1次;\n2、连续存m年,2年取1次;\n3、连续存m年,3年取1次;\n4、连续存m年,5年取1次;\n");
			scanf("%d", &n);
			if(n == 1){  
				r = 0.015;
			} else if(n == 2){
				r = 0.021;
			}else if(n == 3){
				r = 0.0275;
			}else if(n = 5){
				r = 0.03;
			}else{
				printf("请输入正确的选择!!");
				return 0;
			}
			P = money * pow((1 + r), n);
		}else {
			printf("请输入正确的选择!!");
			return 0;
		} 
	}else if(LD == 1){
		r = 0.0035;
		printf("请输入连续存款多少年:");
		scanf("%d", &n);
		P = money * pow((1 + r), (4 * n));
	} else{
		printf("请输入正确的选择!!");
		return 0;
	}
	
	printf("最终获得的本息和为:%lf元", P);	
	return 0;
}

3

#include <stdio.h>
#include <math.h>
int main(){
	
	double p = 6000; //每月的还款额 
	double r = 0.01; //月利率 
	double d = 300000; //贷款数目
	
	double m; //还清月数
	
	m = (log10(p) - log10(p - d * r)) / log10(1 + r);
	
	printf("还款的月数:%2.0lf", m);
	return 0;	 
}

4

1、运行后输出:c1=a,c2=b
			c1=97,c2=98
因为输出格式不一样,第一行是以字符的格式输出,第二个会以十进制的形式输出

2、运行输出后:c1=?c2=?
			c1=-59,c2=-58
因为char只占1个字节,值得范围为-128~127,上面的数字超出了char的范围,所以
char的字符储存符号就未知,所输出的数字也未知

3、运行输出后:c1=?c2=?
			c1=197,c2=198
因为c1和c2本身的数值范围很大,所以以十进制输出,完全可以正常输出,但是这个数字超出char的范围,所以得到的为未知

5、说实在的%e这个不会

心情烦躁,不想写了

猜你喜欢

转载自blog.csdn.net/weixin_41640994/article/details/103586510