C语言学习心得 NO.1

目录

1.四舍五入

2.scanf的使用

 3.八进制和十六进制的使用

4.温度转换


1.四舍五入

C语言学习心得 NO.1_第1张图片


要实现该功能首先得了解什么是四舍五入:

定义:在取小数近似数的时候,如果尾数的最高位数字是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;
}

2.scanf的使用

C语言学习心得 NO.1_第2张图片


 该题的难点在于如何把输入的一串数字通过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;
}

 3.八进制和十六进制的使用

C语言学习心得 NO.1_第3张图片


 在输出整形的时候我们用的是%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;
}

正确的输出格式如下:

C语言学习心得 NO.1_第4张图片


4.温度转换

C语言学习心得 NO.1_第5张图片


题目十分简单,只需接受输入的数再按对应的表达式输出即可,但这里有初学者可能掉的一个坑

这是笔者刚开始写的代码:

#include 

int main() {
    double a=0.0;
    scanf("%lf",&a);
    printf("%.3f",5/9*(a-32));
    return 0;
}

C语言学习心得 NO.1_第6张图片

公式并没有问题,但是结果却是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;
}

你可能感兴趣的:(c语言,程序人生,学习)