登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] S1E9算术运算符

[复制链接]
发表于 2021-2-7 00:43:28 | 显示全部楼层 |阅读模式
学习笔记
学习科目: S1E9算术运算符
学习安排: S1E9算术运算符习题
开始时间: 2021-02-06
结束时间: 2021-02-06
本帖最后由 电气2001于治福 于 2021-2-25 16:48 编辑

0. 如果正、负号运算符的优先级低于加、减号运算符,那么 -3 + 5 的值应该是多少?
答:-8,因为C语言规定优先级高的先进行运算,因此表达式是先计算 3 + 5 的和,再取负号。当然,这样的结果明显不符合逻辑,
所以C语言规定正、负号运算符的优先级是高于双目的算术运算符的优先级。

1. 请问下边程序会显示什么内容?
01. #include <stdio.h>
02.
03. int main()
04. {
05.        int a = 2, b = 1;
06.
07.        printf("%d\n", a / 'b');
08.
09.        return 0;
10. }

答:0,因为字符 'b' 对应的 ASCII 值为 98,a / 'b' == 2 / 98 == 0,

2. 如果不上机实验,你知道下边代码会输出什么吗?
01. #include <stdio.h>
02.
03. int main()
04. {
05.      int a;
06.      (a = 2) + 3 * 4;
07.       printf("a = %d\n", a);
08.
09.       return 0;
10. }
答:a = 2
如果不加小括号,那么变量 a 的值最终应该是 14 才对,因为赋值运算符的优先级要低于算术运算符,所以先计算,后赋值。
但这里我们使用了优先级最高的小括号将赋值运算的过程括起来,因此先将变量 a 赋值为 2,再进行计算(计算结果不再赋值给变量
a)。

3. 请写出下边表达式的值(如果结果为浮点数,请保留六位小数)
答:
A. 5 / 3 = 1 // 整型除以整型,结果为整型,直接舍弃小数
B. 1 / 0 出错 // 除数不能为 0
C. 1.2 + 3 = 4.200000 // 浮点型加整型,编译器会自动将“精度较小”的类型先转换为“精度较大”的类型,再进行运算,所以结果为浮
点型
D. 1.2 * 0 = 0.000000 // 同上
E. 6.0 / 2 = 3.000000 // 同上
F. 10 / 6.0 = 1.666667 // 结果为无限循环小数,小数点后第六位四舍五入
G. 3 / 5 = 0 // 同 A

4. 下边代码中存在两处错误,请指出:
01. #include <stdio.h>
02.
03. int main()
04. {
05.       int a = (5 + 1.2) % 2;
06.       printf("%d\n", a);
07. }
答:
1. 求余运算符两边要求均为整型,5 + 1.2 的结果为浮点型;
2. printf() 函数后边的分号写成了中文的分号(;),大部分新手经常遇到这样错把中文符号当代码的问题,请重视!

5. 下边代码是实现摄氏度转换为华氏度,公式没错,但结果却并不正确(输入 32 摄氏度,转换后正确的结果应该是 89.6 华氏
度),请修改。
答:虽然公式是正确的,但代码中忽视了 9 / 5 的结果会舍弃小数,等于 1,所以得到的答案偏差比较大。
应该这么改:
01. #include <stdio.h>
02.
03. int main()
04. {
05.        float fah, cel;
06.
07.        printf("请输入摄氏度:");
08.        scanf("%f", &cel);
09.
10.        fah = 9.0 / 5.0 * cel + 32;
11.        printf("转换为华摄度是:%.2f\n", fah);
12.
13.        return 0;
14. }

#include <stdio.h>
#include <math.h>

int main()
{
        float price,area,yir,mir; // 单价,面积,年利率,月利率
        float interest,loan; // 利息,贷款总额
        float ave_repay,down_payment; // 月均还款,首期付款
        float total_price,total_repay; // 房款总额,还款总额
        int ratio,time; //  按揭成数,按揭年数
        
        printf("请输入单价 (元/平方):");
        scanf("%f",&price);
        printf("请输入面积:");
        scanf("%f",&area);
        printf("请输入按揭成数:");
        scanf("%d",&ratio);
        printf("请输入按揭年数:");
        scanf("%d",&time);
    printf("请输入当前基准年利率:");
    scanf("%f",&yir);

    mir = yir / 100 /12;
        time = time * 12;
        total_price = price * area;
        loan  = total_price * ratio / 10;
        ave_repay = loan * mir * pow((1 + mir),time) / (pow((1 + mir),time) - 1);
    interest = ave_repay * time - loan;
    total_repay = loan + interest;
    down_payment = total_price * (1 - (float)ratio /10);

    printf("========== 报告结果 ==========\n");
    printf("房款总额: %.2f元\n", total_price);
    printf("首期付款: %.2f元\n", down_payment);
    printf("贷款总额: %.2f元\n", loan);
    printf("还款总额: %.2f元\n", total_repay);
    printf("支付利息: %.2f元\n", interest);
    printf("月均还款: %.2f元\n", ave_repay);

    return 0;
}
a.png



#include <stdio.h>
#include <math.h>  

int main()
{
        float p0 = 10000,p1,p2,p3;
        float r1 = 0.075, r2 = 0.0225,r3 = 0.0275,r5 = 0.0275;
        
        p1 = p0 * (1 + r5 *5);
        p2 = p0 * (1 + r3 * 3) * (1 + r2 * 2);
        p3 = p0 * pow((1 + r1),5);
        
        printf("第一种方案的本息和是: %.2f\n",p1);
        printf("第二种方案的本息和是: %.2f\n",p2);
        printf("第三种方案的本息和是: %.2f\n",p3);
        
        return 0;
}

b.png 3.png

点评

赞  发表于 2021-2-7 10:38
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表