//例一:将华氏温度转为摄氏温度
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int f;
scanf("%d", &f);//输入华氏温度
double c;
c = (5.0 * (f - 32)) / 9;//转换公式
printf("%.1lf", c);//输出摄氏温度
return 0;
}
图3.1
//例二:计算存款利息
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
double p;//本金
double r1=0.0036, r2=0.0225, r3=0.0198;//年利率
double p1, p2, p3;//三种方式本息和
scanf("%lf", &p);
p1 = 1.0 * p * (1 + r1);
p2 = 1.0 * p * (1 + r2);
p3 = 1.0 * p * (1 + r3 / 2) * (1 + r3 / 2);
printf("%lf\n%lf\n%lf\n", p1, p2, p3);//输出三种结果
return 0;
}
图3.2
//例三:给定一个大写字母,输出小写字母的ASCII码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {//大写比小写ASCII码小,两者之间的差值都是用大数减小数
char c;
char ch;
scanf("%c", &c);
if (c >= 'A' && c <= 'Z') {//判断是否是大写字母
ch = c + ('a' - 'A');//大写小加ASCII
printf("%d", ch);
}
else {
printf("不是大写字母");
}
return 0;
}
图3.3
//给定小写转成大写
int main() {
char c;
char ch;
scanf("%c", &c);
if (c >= 'a' && c <= 'z') {//判断是否是小写字母
ch = c - ('a' - 'A');//小写大减ASCII
printf("%c", ch);
}
else {
printf("不是小写字母");
}
return 0;
}
图3.4
//习题3.1,计算年增长率p=(1+r)^n
//r为0.07,n=10
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
double x;
double n=10;
x = 1 + 0.07;
double p;
p = pow(x, n);//计算指数函数
printf("%lf", p);
return 0;
}
图3.5
//习题3.2存款利息计算
//有1000元,存5年,五种方法
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
//法一,一次存五年p=1000*(1+n*r)
double r5 = 0.03;
double p1;
p1 = 1000 * (1 + 5 * r5);
printf("法一的本息和为%.2lf\n", p1);
//法一,先存两年,再存三年
double r2 = 0.021, r3 = 0.0275;
double p2_1,p2_2;
p2_1 = 1000 * (1 + 2 * r2);
p2_2 = p2_1 * (1 + 3 * r3);
printf("法二的本息和为%.2lf\n", p2_2);
//法一,先存三年,再存两年
double p3_1, p3_2;
p3_1= 1000 * (1 + 3 * r3);
p3_2= p3_1 * (1 + 2 * r2);
printf("法三的本息和为%.2lf\n", p3_2);
//法四,连续存五次一年期
double p4;
double x;
double r1 = 0.015;
x = (1 + r1);
p4 = pow(x, 5);
p4 = p4 * 1000;
printf("法四的本息和为%.2lf\n", p4);
//法五,存活期,每季度结算一次
double p5;
double rh = 0.0035;
double y;
y = (1 + rh / 4.0);
p5 = pow(y, 4);
p5 = p5 * 1000;
printf("法五的本息和为%.2lf\n", p5);
return 0;
}
图3.6
//习题3.3,还贷款
//贷款d,每月还款p,月利率r=0.01,计算多少月m能还清?保留一位四舍五入
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
double d, p, r = 0.01,m;
scanf("%lf%lf", &d, &p);
m = (log(p / (p - d * r))) / (log(1 + r));//还款公式
printf("%.1lf", m);
return 0;
}
图3.7
//习题3.6密码本China后移四位
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {//特殊样例通不过:每一个循环都要判断是不是大写或小写的后四位,麻烦,用循环写会好一点
//没写明白,写的太复杂了
char c1 = getchar();
char c2 = getchar();
char c3 = getchar();
char c4 = getchar();
char c5 = getchar();
c1 = c1 + 4;
c2 = c2 + 4;
c3= c3+ 4;
c4 = c4 + 4;
c5 = c5 + 4;
if (c4 > 'Z' && c4 < 'a') {
c4 = c4 - ('Z' - 'A')-1;//判断第四位是不是大写
}
if (c5 > 'z') {
c5 = c5 - ('z' - 'a')-1;//判断第五位是不是小写
}
printf("%c", c1);
putchar(c2);
putchar(c3);
putchar(c4);
putchar(c5);
return 0;
}
图3.8