课后习题
如下:
1—假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与与现在比增长多少百分比。计算公式为 p=(1+r)^n。r为年增长率,n为念书,p为与现在相比的倍数。
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%。(活期存款每一季度结算一次利息)。
如果r为年利率,n为存款年数,则计算本息的公式为:
1年期本息和为:P=1000*(1+r);n年期的本息和为:P=1000*(1+nr);存n次一年期的本息和为:P=1000(1+r)n;存n次一年期的本息和为:P=1000*(1+r/4)(4n)。说明:1000(1+4/r)是一个季度的本息和。
3—
4—
5—
6—
key:
#include <stdio.h>
#include <math.h>
int main()
{
char c1,c2,c3,c4,c5;
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
c5=getchar();
putchar(c1+4);
putchar('\n');
putchar(c2+4);
putchar('\n');
putchar(c3+4);
putchar('\n');
putchar(c4+4);
putchar('\n');
putchar(c5+4);
putchar('\n');
return 0;
}
运行结果如下:
China
G
l
m
r
e
Press any key to continue
#include <stdio.h>
#include <math.h>
int main()
{
char c1,c2,c3,c4,c5;
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
c5=getchar();
printf("%c%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,c5+4);
return 0;
}
运行结果如下:
China
Glmre€
Press any key to continue
就挺奇怪的,会多一个字符出来,也不知道是为什么呀。
7—
key:
#include <stdio.h>
#include <math.h>
int main()
{
double r,h,pai,l,s,os,ov,cv;
scanf("%lf,%lf",&r,&h);
pai=3.14;
l=2*pai*r;
s=pai*r*r;
os=4*pai*r*r;
ov=4*pai*r*r*r/3;
cv=pai*r*r*h;
printf("圆周长为%.2lf\n圆的面积为%.2lf\n圆球的表面积为%.2lf\n圆球的体积为%.2lf\n圆柱的体积为%.2lf\n",l,s,os,ov,cv);
return 0;
}
运行结果如下:
1.5,3
圆周长为9.42
圆的面积为7.06
圆球的表面积为28.26
圆球的体积为14.13
圆柱的体积为21.20
Press any key to continue
8—
key:
(1)二者皆可。
(2)用printf输入%d的就可以了。
(3)不是。需要在char的值域内。
正文
3.1程序设计举例
例3.1
#include <stdio.h>
int main()
{
float f,c;
f=64.0;
c=(5.0/9)*(f-32);
printf("f=%f\nc=%f\n",f,c);
return 0;
}
float 单精度浮点型;
\n跳转下一行
例3.2
#include <stdio.h>
int main()
{
float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;
p1=p0*(1+r1);
p2=p0*(1+r2);
p3=p0*(1+(r3/2))*(1+(r3/2));
printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);
return 0;
}
3.2数据的表现形式机器运算
常量:
整型常量;
实型常量:十进制小数形式,指数形式;
字符常量:1-普通字符,单撇号是界限符,字符常量只能是一个字符,不包括单撇号。大小写是不同的字符常量。字符常量在计算机存储单元中是以ASCII表中对应的值进行存储的,ASCII在附录B。2-转义字符:如’\t’为跳转到下一个tab位置,一个tab位置为8列。转义字符及其作用P40
字符串常量:用双引号引起来,可包括多个字符。注意单引号只能包含一个字符,双撇号可以包含一个字符串。
符号常量
注意:区分符号常量和变量。习惯上符号常量用大写表示。
变量:
变量先定义,后使用。定义名字和类型。变量名实际上以一个名字代表的一个存储地址。实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。
常变量
常变量和符号变量的异同:
常变量 有类型,占存储单元,不变值。
符号变量 常用#define指令,是预编译指令,预编译时进行字符替换。预编译后就不存在了。符号变量的名字是不分配存储单元的。
标识符
在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。
标识符只能由字母、数字和下划线三种字符组成且第一个字符必须为字母或下划线。
大写字母和小写字母,是不同的字符。变量名用小写字母。
3.2.2数据类型
例3.3
#include <stdio.h>
int main()
{
char c1,c2;
c1='A';
c2='A'+32;
printf("%c\n%d\n",c2,c2);
return 0;
}
例3.4
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,s,area;
a=3.67;
b=5.43;
c=6.21;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\tc=%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
sqrt是求平方根,\t水平强制符,将当前位置移到下一个tab位置,一个tab是8列。
例3.5
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf,%lf,%lf",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);
if(disc>0)
{
printf("方程的根为%5.2lf和%5.2lf",p-q,p+q);
}
if(disc=0)
{
printf("方程的根为%5.2lf",p);
}
if(disc<0)
{
printf("没有实根");
}
return 0;
}
例3.6
用%f输出只能得到6位小数
#include <stdio.h>
#include <math.h>
int main()
{
double a=1.0;
printf("%f\n",a/3);
return 0;
}
例3.7
#include <stdio.h>
#include <math.h>
int main()
{
float a;
a=10000/3.0;
printf("%f\n",a);
return 0;
}
输出结果如下:
3333.333252
Press any key to continue
因为float只能保证6~7位的有效数字,所以从第7位后出现了不可信数字。
#include <stdio.h>
#include <math.h>
int main()
{
double a;
a=10000/3.0;
printf("%lf\n",a);
return 0;
}
改成double后,可以看到,数字的结果是偏向于正确的了。
3333.333333
Press any key to continue
例3.8
putchar的作用说明
#include <stdio.h>
#include <math.h>
int main()
{
char a='B',b='O',c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
字符类型也属于整数类型,将一个字符赋给字符变量和将字符的ASCII代码赋给字符变量作用是完全相同的,但应该注意整数类型数据在0~127的范围内。
#include <stdio.h>
#include <math.h>
int main()
{
int a=66,b=79,c=89;
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
putchar(c)中的C可以是字符变量、整型常量、字符变量或者是整型变量。
#include <stdio.h>
#include <math.h>
int main()
{
int a=66,b=79,c=89;
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
putchar('\101');
//putchar('\");
putchar('\105');
putchar('\n');
return 0;
}
例子3.9
getchar的使用方法
#include <stdio.h>
#include <math.h>
int main()
{
putchar(getchar());
putchar('\n');
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
putchar(getchar());
putchar(getchar());
putchar(getchar());
putchar('\n');
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
例3.10
输入一个大写字母转化为一个小写字母
#include <stdio.h>
#include <math.h>
int main()
{
char a;
printf("请输入一个大写字母\n");
a=getchar();
a=a+32;
putchar(a);
putchar('\n');
return 0;
}
例3.11
用printf替换putchar
#include <stdio.h>
#include <math.h>
int main()
{
char a,b;
printf("请输入一个大写字母\n");
a=getchar();
b=a+32;
printf("输入的大写字母是:%c\n输入的小写字母是:%c\n",a,b);
printf("\n");
return 0;
}
正文部分到此结束。