1.假如我国国民生产总值的年增长率为7%,计算10年后我国国民生产总值于现在相比增长多少百分比。计算公式为 p=(1+r)^2,
r为年增长率,n为年数,p为于现在相比比的倍数。
#include
#include //pow为调用数学函数需要加math.h头文件
int main()
{
int n;
float p, r=0.07;
for(n=1;n<=10;n++)
p=pow((r+1),n);
printf("p=%.2f",p);//%。2f保留两位小数
}
c语言程序设计答案 第五版 谭浩强
2.存款利息的计算。有1000元,想存5年,可按以下5种办法存:
(1)一次存5年期。
(2)先存2年期,到期后将本息再存3年期。
(3)先存3年期,到期后将本息再存2年期。
(4)存1年期,到期后将本息再存1年期,连续存5次。
(5)存活期存款。活期利息每一季度结算一次。
2007年12月的银行存款利息如下:
1年期定期存款利息为4.14%;
2年期定期存款利息为4.68%;
3年期定期存款利息为5.4%;
5年期定期存款利息为5.85%;
活期存款利息为0.72%(活期存款每一季度结算一次)
1年期本息和:P=1000*(1+r);
n年期本息和:P=1000*(1+n*r);
存n次1年期的本息和:P=(1+r)^n;
活期存款本息和:P=1000*(1+r/4)^4n;
注意:1000*(1+r/4)^4n是一个季度的本息和;
c语言程序设计答案 第五版 谭浩强
#include
#include
main()
{
float r5,r3,r2,r1,r0,p1,p2,p3,p4,p5,p;
p = 1000;
r0 = 0.0072;
r1 = 0.0414 ;
r2 = 0.0468;
r3 = 0.054;
r5 = 0.0585;
p1 = p*(1+5*r5);//分别计算出5种方案的本息和
p2 = p*(1 + 2 * r2)*(1 + 3 * r3);
p3 = p*(1 + 3 * r3)*(1 + 2 * r2);
p4 = p*pow(1+r1,5);
p5 = p*pow(1 + r0/4,4*5);
printf("p1=%f\n",p1);
printf("p2=%f\n",p2);
printf("p3=%f\n",p3);
printf("p4=%f\n",p4);
printf("p5=%f\n",p5);
return 0;
}
c语言程序设计答案 第五版 谭浩强
3.购房从银行贷了一笔款d, 准备每月还款额为p, 月利率为r, 计算多少月能还清。设d为300000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五入处理。
公式为:m=log(p/(p-d*r))/log(1+r);
#include
#include
int main()
{
int d = 300000, p = 6000; //定义贷款总额,每月还贷数
double r = 0.01, m, x, y; //定义利率,月份
x = p / (p - d * r);
y = 1 + r;
m = log10(x) / log10(y); //计算公式
printf("m=%.2lf\n", m);
return 0;
}
4.分析下面程序:
#include
int main()
{
char c1,c2;
c1=97;
c2=98;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
(1)运行时会输出什么信息?为什么?
输出:c1=a,c2=b
c1=97,c2=98
因为第一行printf输出格式为%c 为字符输出对应ASCII码 第二行printf输出格式为%d 为10进制整型输出
(2)如果将程序第4,5行改成 c1=197;c2=198;运行时会输出什么信息?为什么?
输出:c1=(不存在ASCII码里的符号),c2=(不存在ASCII码里的符号)
c1=197,c2=198
(3)如果将程序第3行改成 int c1,c2;运行时会输出什么信息?为什么?
c1=a,c2=b
c1=97,c2=98
因为第一行printf输出格式为%c 为字符输出对应ASCII码 第二行printf输出格式为%d 为10进制整型输出
输出内容的类型由输出格式而定c语言程序设计答案 谭浩强
5.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入?
#include
int main()
{
int a, b;
float x, y;
char c1, c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
scanf("%c%c", &c1, &c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1, c2);
return 0;
}
输入方式一及结果分析:
a=3 b=7
8.5 71.82Aa
a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a
请按任意键继续…
在输入8.5和71.82两个实数给x和y后,应紧接着输入字符A,中间不要有空格,由于字母A不是数字,系统在遇到字母A时,就确定输入给y的值已经结束,字符A就送到下一个scanf语句中的字符变量c1。
输入方式二及结果分析:
a=3 b=7
8.5 71.82 Aa
a=3,b=7,x=8.500000,y=71.820000,c1= ,c2=A
请按任意键继续…
在输入8.5和71.82两个实数后,输入的空格符就被c1读入,c2读入了字符A,故输出c1时就输出空格,输出c2的值为A。
输入方式三及结果分析:
a=3 b=7
8.5 71.82
Aa
a=3,b=7,x=8.500000,y=71.820000,c1=
,c2=A
请按任意键继续…
在输入8.5和71.82两个实数后,按回车键再输入Aa,这时“回车”被作为一个字符送到内存输入缓冲区,被c1读入,字符A被c2读取,故在输出c1时,就输出一个换行,在下一行输出逗号和c2的值A。
请编程序将”China”译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。
例如,字母”A”后面第4个字母是”E”, “E”代替”A”。因此,”China”应译为”Glmre”。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。分别用putchar和printf函数输出这5个字符。
#include
int main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1 += 4;
c2 += 4;
c3 += 4;
c4 += 4;
c5 += 4;
printf("用printf输出密码为:%c%c%c%c%c\n", c1, c2, c3, c4, c5);
printf("用putchar输出密码为:");
putchar(c1);
putchar(c2);
putchar(c3);
putchar(c4);
putchar(c5);
printf("\n");
return 0;
}
c语言程序设计答案 第五版 谭浩强
设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。要求:用scanf输入数据,取小数点后两位。
#include
#include
void main()
{
float r,h,pi=3.141592,C,S1,S2,V1,V2;
printf("请输入圆半径圆柱高\n");
scanf("%f%f",&r,&h);
C=4*pi*r;
printf("圆周长=%2.2f\n",C);
S1=pi*r*r;
printf("圆面积=%2.2f\n",S1);
S2=4*pi*r*r;
printf("圆球表面积=%2.2f\n",S2);
V1=(4/3)*pi*pow(r,3);
printf("圆球体积=%2.2f\n",V1);
V2=S1*h;
printf("圆柱体积=%2.2f\n",V2);
}
8.用getchar函数读入两个字符给c1,c2,分别用putchar和printf输出这两个字符。思考以下问题:
(1)变量c1和c2定义为字符型还是整型?或二者皆可?
(2)要求输出c1和c2的ASCII码,应如何处理?
(3)整形变量和字符变量是否在任何情况下都可以互相代替?char c1, c2;和int c1, c2;是否无条件等价?
#include
int main()
{
char c1, c2;
printf("请输入两个字符c1,c2:");//输入的两个字符之间没有空格,连续输入
c1 = getchar();
c2 = getchar();
printf("用putchar输出结果为:");
putchar(c1);
putchar(c2);
printf("\n");
printf("用printf输出结果为:");
printf("%c %c\n",c1,c2);
/*printf("%d,%d\n", c1, c2);*/
return 0;
}
(1)c1和c2可以定义为字符型或整型,二者皆可。
(2)用printf函数输出,使用%d格式符,即:
printf(“%d,%d\n”, c1, c2);
结果为:97,98
(3)字符变量占1个字节,整型变量占2或4个字节。故整型变量在可输出字符的范围内(ASCII码为0到127之间的字符)是可以与字符型数据互相转换的。如果整数在此范围外,不能代替。c语言程序设计答案 第五版 谭浩强