第三章 最简单的C程序设计——顺序程序设计
(1)国民生产总值变化
算法分析:该题属于数学问题,有计算公式、输入值,只需编写对应程序,对结果进行输出即可。
难点在于c语言的次幂表示(例如:pow(4,2);求得是4的平方,pow(x,y)表示x的y次方,需要调用math.h头文件)
#include <stdio.h>
#include <math.h>
int main()
{
double r,p; //定义变量
int n;
r=0.07; //变量赋值
n=10;
p=pow(1+r,n);
printf("%lf",p);
}
(2)存款利息的计算
算法分析:该问题也属于数学问题,通过提供的公式,进行编程从而求解。
#include <stdio.h>
#include <math.h>
int main()
{
int p=1000;
double a=0.015,b=0.021,c=0.0275,d=0.03,e=0.0035;//各年期的存款利息
double p1,p2,p3,p4,p5; //五种方式的本息和
p1=p*(1+5*d);
printf("一次存5年本息和为%lf\n",p1);
p2=(p*(1+2*b))*(1+3*c);
printf("先存两年,到期后本息和再存三年的本息为%lf\n",p2);
p3=(p*(1+3*c))*(1+2*b);
printf("先存三年,到期后本息和在存两年的本息为%lf\n",p3);
p4=p*pow((1+a),5);
printf("存一年期,本息连存5年本息为%lf\n",p4);
p5=p*pow((1+e/4),4*5);
printf("活期存款本息和为%lf\n",p5);
return 0;
}
(3)购房贷款(计算还清月数)
算法分析:该题属于数学问题,也是通过公式,编写程序的到所求答案。难点在于log函数的表示:(c语言中)
log10(100):,log2(8):计算,运用换底公式。基本格式不做改变,正常使用即可
#include <stdio.h>
#include <math.h>
int main()
{ double m,r=0.01;
int d=300000,p=6000;
m=log10(p/(p-d*r))/log10(1+r);
printf("%0.2lf",m); //取小数点后两位
}
#include <math.h>
int main()
{ double m,r=0.01;
int d=300000,p=6000;
m=log10(p/(p-d*r))/log10(1+r);
printf("%0.1lf",m); //取小数点后一位,直接是按第二位四舍五入处理
}
(4)分析下列程序
1)分析:在输出控制符中%c输出字符型数据,%d输出整形数据。字符在ASCII码的0-127范围内都可表示十进制整数。
# include <stdio.h>
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;
}
2)若将程序改为c1=197,c2=198(分析:因为标准字符是在0-127之间)
有符号字符型取值范围在-128——127之间,因为字符的代码不可能为负值,所以在存储字符时实际上只用到了0——127之间。在中文的操作系统下,ASCII代码为127以后的部分被作为中文字符处理,所以不会显示扩展字符。
197的二进制为11000101,在整数处理中左边第一位为符号位,该二进制是59的二进制10111011,-59的二进制位为59的二进制按位取反加1为11000101,故输出-59。
3)改为int c1,c2;
实验结果与1)相同,但执行时间相对较短为0.679s
(5)scanf如何输入问题
实验程序如下:
# include<stdio.h>
int main()
{
int a,b;
float x,y;
char c1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",&x,&y);//%e数据的指数形式
scanf("%c%c",&c1,&c2);
printf("%d %d\n",a,b);
printf("%f %e\n",x,y);
printf("%c %c\n",c1,c2);
return 0;
}
注意:指数的输入格式以及字符不能换行输入,不然会把空格赋给变量。
(6)译密码
#include<stdio.h>
int main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
putchar(c1+4);
putchar(c2+4);
putchar(c3+4);
putchar(c4+4);
putchar(c5+4);
printf("\n");
printf("%c%c%c%c%c",c1+4,c2+4,c3+4,c4+4,c5+4);
return 0;
}
结果输出为:Glmre
(7)圆
#include <stdio.h>
#define pi 3.14 //符号常量
int main()
{
double r,h;
double a,b,c,d,e;
printf("请输入圆的半径和圆柱的高\n");
scanf("%lf %lf",&r,&h);
a=2*pi*r;
printf("圆的周长为:%.2lf",a);
b=pi*r*r;
printf("圆的面积为:%.2lf",b);
c=4*pi*r*r;
printf("圆球的表面积为:%.2lf",c);
d=4/3*pi*r*r;
printf("圆球的体积为:%.2lf",d);
e=h*pi*r*r;
printf("圆柱的体积为:%.2lf",e);
return 0;
}
(8)char数据类型问题
1)
# include<stdio.h>
int main()
{
char c1,c2; //定义为字符型
c1=getchar();
c2=getchar();
putchar(c1);
putchar(' ');
putchar(c2);
putchar('\n');
printf("%c %c",c1,c2);
return 0;
}
# include<stdio.h>
int main()
{
int c1,c2; //定义为整形
c1=getchar();
c2=getchar();
putchar(c1);
putchar(' ');
putchar(c2);
putchar('\n');
printf("%c %c",c1,c2);
return 0;
}