找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 2|回复: 0

检测点4-13

[复制链接]

462

主题

334

回帖

4056

积分

管理员

积分
4056
发表于 前天 21:22 | 显示全部楼层 |阅读模式
检测点4-13

1.表达式sum += n ++可替换为sum = sum + n ++。
(1)在表达式sum = sum + n ++里,各个子表达式的作用分别是什么?
答:左边的sum代表对象;右边的sum既代表对象,也计算出一个值;n代表对象。子表达式sum + n ++计算一个值,它的子表达式n ++既计算值,也有修改n存储值的副作用。

(2)表达式sum = sum + n ++里涉及三个运算符,它们的优先级从高到低分别是“++”“+”和“=”。在这里,运算符“=”的操作数是sum和sum + n ++;运算符“+”的操作数是sum和n ++。要完成赋值操作,必须先计算子表达式sum + n ++的值,而要完成相加操作,必须先计算子表达式sum和n ++的值。

(3)若将子表达式n ++的值计算和副作用分别记为V++和S++;将运算符“+”的值计算记为V+;将运算符“+”的左操作数的值计算记为Vsum;将运算符“=”的副作用记为S=,请写出语句
sum = sum + n ++;
的执行过程,至少列举出三种。
答:
Vsum --- V++ --- S++ --- V+ --- S=
V++ --- S++ --- Vsum --- V+ --- S=
V++ --- Vsum --- V + --- S++ --- S=
Vsum --- V++ --- S++ --- V+ --- S=
V++ --- Vsum --- V+ --- S= --- S++

2.从1加到100等同于从100反向加到1,请修改程序c0405.c以实现这个反向的累加过程。提示:n所代表的对象的初值是100而不是1;累加的最后一个数字是1,所以while语句能够持续循环的条件是n所代表的对象的值大于等于1;每一轮循环结束后,n所代表对象的存储值是递减的而不是递增的。
答案不唯一,以下是参考答案:
# include <stdio.h>


int main (void)
{
    int n = 100, sum = 0;


    while (n >= 1) sum += n --;
    printf ("1+2+3+...+100=%d\n", sum);


    return 0;
}

3.编写程序,计算5的阶乘(5!)并打印,要求使用while语句。
答案不唯一,以下是参考答案:
# include <stdio.h>


int main (void)
{
    int n = 1, res = 1;


    while (n <= 5) res *= n ++;
    printf ("5!=%d\n", res);


    return 0;
}

4.编写程序,打印等差数列1, 6, 11, 16, 21,…的前25项,要求使用while语句。
答案不唯一,以下是参考答案:
# include <stdio.h>


int main (void)
{
    int n = 1, r = 1;


    while (n <= 25)
    {
        printf ("%d ", r);
        r += 5;
        n ++;
    }


    return 0;
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-3-3 13:50 , Processed in 0.680445 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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