第三章 顺序程序设计
文章目录
例3.1 温度转换问题
c=5/9(f-32) 输入f(华氏度)输出c(摄氏度)
#include<stdio.h>
int main(){
float f,c;
scanf("%f",&f);
c=(5.0/9)*(f-32);
printf("%ff=%fc",f,c);
return 0;
}
例3.2 计算本息和
计算存款利息,有1000元,想存一年,有三种方法可选:
- 活期,年利率r1;
- 一年期定期,年利率r2;
- 存两次半年定期,年利率r3
请分别算出一年后按3种方法所得的本息和
#include<stdio.h>
int main(){
double p,r1,r2,r3; //p为存款金额 r1r2r3为三种存款利率
double p1,p2,p3;
scanf("%lf,%lf,%lf,%lf",&p,&r1,&r2,&r3);
p1=p+p*r1;
p2=p+p*r2;
p3=(p+p*r3/2)+(p+p*r3/2)*r3/2;
printf("1.%lf\n2.%f\n3.%f\n",p1,p2,p3);
return 0;
}
例3.3 大小写字母转换
给定一个大写字母,要求用小写字母输出 ‘a’=97 ‘A’=65 差值32
#include<stdio.h>
int main(){
char c1,c2;
c1=getchar();
c2=c1+32;
printf("%c->%c",c1,c2);
return 0;
}
例3.4 给出三角形的三边长,求三角形面积
任意两边之和大于第三边或任意两边之差小于第三边
海伦-秦九公式已知三角形三边a,b,c,则S面积= √[p(p - a)(p - b)(p - c)] (海伦公式)(其中p=(a+b+c)/2)
#include<stdio.h>
#include<math.h>
int istri(double a,double b,double c);
int main(){
double a,b,c,s,area;
scanf("%lf,%lf,%lf",&a,&b,&c);//输入三边
if(istri(a,b,c)==1){ //istri()函数进行三边的判断
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("面积=%lf\n",area);
}
else{
printf("三边输入错误\n");
}
return 0;
}
int istri(double a,double b,double c){
if(a+b>c&&b+c>a&&a+c>b){
return 1; //可以构成三角形
}
return 0;
}
例3.5 求方程根
求ax²+bx+c=0方程的根。a,b,c由键盘输入,设b²-4ac>0
#include<stdio.h>
#include<math.h>
int main(){
double a,b,c,dt,x1,x2;
scanf("%lf,%lf,%lf",&a,&b,&c);
dt=b*b-4*a*c;
x1=(-b+sqrt(dt))/(2*a);
x2=(-b-sqrt(dt))/(2*a);
printf("x1=%7.2lf\nx2=%7.2lf",x1,x2);
return 0;
}
例3.9 输入输出BOY三个字符
#include<stdio.h>
int main(){
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
第三章习题
1.假如我国国民生产总值的年增长率为7%,计算10年后我国国民生产总值与现在相比增长多少百分比,计算公式为p=(1+r)^n,r为年增长率,n为年数,p为与现在相比的倍数。
#include<stdio.h>
#include<math.h>
int main(){
int n=10;
double r=0.07,p;
p = pow((1 + r), n);
printf("%lf\n",p);
return 0;
}
-
存款利息计算,有1000元,想存五年,可以按以下5种方式存
(1)一次存五年
(2)先存两年,到期后本息再存3年期
(3)先存三年,到期后本息再存2年期
(4)存一年,到期后本息再存一年期,连续存五次
(5)存活期存款,活期存款每一季度结算一次
2017年的银行存款利息如下:1年定期1.5%,2年期2.1%,3年期2.1%,5年期3%,活期0.35%
如果r为年利率,n为存款年数,则计算本息和的公式如下:
1年期本息和:p=1000*(1+r)
n年期本息和:p=1000*(1+n*r);
存n次一年期的本息和:p=1000*(1+r)^n
活期存款本息和:p=1000*(1+r/4)^4*n
#include<stdio.h> #include<math.h> int main(){ double p=1000,r1=0.015,r2=0.021,r3=0.021,r5=0.03,r0=0.0035;//本金,和利率 int n=5;//年限 double p1,p2,p3,p4,p5; p1=p*(1+5*r5); //一次存五年 p2= (p*(1+2*r2))*(1+3*r3); //先存两年,到期后本息再存3年期 p3=(p*(1+3*r3))*(1+2*r2); //先存三年,到期后本息再存2年期 p4=p*pow(1+r1,n); //存一年,到期后本息再存一年期,连续存五次 p5=p*pow((1+r0/4),4*n); printf("1. 一次存五年: %lf\n", p1); printf("2. 先存两年,到期后本息再存3年期: %lf\n", p2); printf("3. 先存三年,到期后本息再存2年期: %lf\n", p3); printf("4. 存一年,到期后本息再存一年期,连续存五次: %lf\n", p4); printf("5. 活期存款,每一季度结算一次: %lf\n", p5); return 0; }
- 购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第二位按四舍五入处理。
#include<stdio.h>
#include<math.h>
int main(){
double d=300000,p=6000,r=0.01;
double fz,fm,m;
fz=log(p/(p-d*r));
fm=log(1+r);
m=fz/fm;
printf("%.1lf\n",m);
return 0;
}
6.请编程序将“China”译成密码,密码规模是:用原来的字母后面第4个字母代替原来的字母。例如,字母"A"后面第4个字母是"E",用"E"代替"A"。因此,“China"应译为"Glmre”。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’,‘h’,‘i’,‘n’,‘a’,经过运算,使c1,c2,c3,c4,c5分别变为’G’,‘I’,‘m’,‘r’,‘e’。分别用putchar函数和printf函数输出这5个字符。
#include<stdio.h>
int main(){
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4,c2+=4,c3+=4,c4+=4;c5+=4;
putchar(c1);
putchar(c2);
putchar(c3);
putchar(c4);
putchar(c5);
putchar('\n') ;
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
return 0;
}
7.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用sacnf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数。请编程序。
圆周长:c=2πr 圆面积:s=πr²
圆球表面积:S=4πr² 圆球体积:v=4/3πr^3
圆柱体积:V=πr²h
#include<stdio.h>
#include<math.h>
int main(){
double r,h;//圆半径、圆柱高
double c,s,bs,bv,zv;//圆周长、圆面积、圆球表面积、圆球体积、圆柱体积
const pai=3.1415926;
printf("请输入圆半径和圆柱高(用逗号分隔):");
scanf("%lf,%lf",&r,&h);
c=2*pai*r;
s=pai*r*r;
bs=4*pai*r*r;
bv=4.0/3*pai*pow(r,3);
zv=pai*r*r*h;
printf("圆周长:%.2lf、圆面积:%.2lf、圆球表面积:%.2lf、圆球体积:%.2lf、圆柱体积:%.2lf",c,s,bs,bv,zv);
return 0;
}
8.编程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar和printf输出这两个字符
#include<stdio.h>
int main(){
char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
putchar('\n');
printf("%c%c",c1,c2);
return 0;
}