目录
1.四舍五入
2.scanf的使用
3.八进制和十六进制的使用
4.温度转换
要实现该功能首先得了解什么是四舍五入:
定义:在取小数近似数的时候,如果尾数的最高位数字是4或者比4小,就把尾数去掉 。如果尾数的最高位数是5或者比5大,就把尾数舍去并且在它的前一位进"1",这种取近似数的方法叫作四舍五入法。
了解定义之后我们再来举几个实际的例子:
要求:1.499 进行四舍五入
1.499 是否大于4或小于等于4。显然我们要观察的数是 1.499 这个数小于等于4,那么上一位数是 1.499 就不用进“1”,所以四舍五入后后 1.499 就应该是1。
编程逻辑:
既然只要大于等于5就能进“1”,我们只需对这个数加0.5即可让个位进“1”,而小于等于4的自然不会进“1”了。在对其强制转换成int类型即可去掉小数部分。
#include
int main() {
double a=0.0;
scanf("%lf",&a);
if(a>0)
printf("%d",int(a+0.5));
else
printf("%d",int(a-0.5));
return 0;
}
该题的难点在于如何把输入的一串数字通过scanf赋值给对应的变量中。
输入:17140216;80.845,90.55,100.00
仔细观察不难发现,前面是一个整型后面三个都是浮点型数字 ,对于中间的;和,应该也要写入
于是scanf就有:
scanf("%d;%f,%f,%f",&num,&mark1,&mark2,&mark3);
之后按题目要求输出即可:
#include
int main() {
int num=0;
float mark1=0.0;
float mark2=0.0;
float mark3=0.0;
scanf("%d;%f,%f,%f",&num,&mark1,&mark2,&mark3);
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",num,mark1,mark2,mark3);
return 0;
}
在输出整形的时候我们用的是%d输出的是十进制,那么8进制,16进制呢?
8进制使用的是%o
16进制使用的是%X(X需要大写,否则输出的16进制数中的字母将会是小写)
#的应用
当我们将十进制的15以8进制和16进制的形式输出时
得到的结果分别是 17 F
但是这并不是8进制和16进制的格式
因此我们需要加上# 8进制:%#o 16进制:%#X (修饰符“#”控制前导显示)
#include
int main() {
int a=15;
printf("%#o %#X",a,a);
return 0;
}
正确的输出格式如下:
题目十分简单,只需接受输入的数再按对应的表达式输出即可,但这里有初学者可能掉的一个坑
这是笔者刚开始写的代码:
#include
int main() {
double a=0.0;
scanf("%lf",&a);
printf("%.3f",5/9*(a-32));
return 0;
}
公式并没有问题,但是结果却是0.000,无论输入是多少都是0.000。
这是因为,对于5/9*(a-32),5/9被视作两个整形相除,5/9应为0.555无限循环小数,两个整形相除结果也是整形,就会删去小数部分,结果当然是0了,0*任何数都是0,自然无论输入是什么结果都是0了。
所以我们应将算式进行一定的修改:
5.0/9*(a-32)
这样其中一个数是浮点数就不会出现相除为0.xxx而省去小数的情况出现了 。
#include
int main() {
double a=0.0;
scanf("%lf",&a);
printf("%.3f",5.0/9*(a-32));
return 0;
}