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

第4章习题

[复制链接]

462

主题

334

回帖

4056

积分

管理员

积分
4056
发表于 前天 21:24 | 显示全部楼层 |阅读模式
第4章习题
1.请问下面的注释有问题吗?如果有问题,请指出问题所在。
/*********以下是n和sum的声明********
*******************************
int n/*提供参与累加的数字*/, sum/*存放累加结果*/;
答:问题在于多行注释没有对应的”*/“。

2.请问下面的声明有什么问题?
int _08ms, %num, x86, X86, int, tree05
答:标识符不能是%开头,所以%num非法;也不能是关键字,所以int非法。

3.编写程序从100反向加到1并打印累加结果,要求使用for语句。
答案不唯一,以下是参考答案:
# include <stdio.h>


int main (void)
{
    int sum = 0;


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


    return 0;
}

4.计算并打印10到50之间所有整数的和。
答案不唯一,以下供参考:
# include <stdio.h>


int main (void)
{
    int sum = 0;


    for (int n = 10; n <= 50; n ++) sum += n;
    printf ("%d\n", sum);


    return 0;
}

5.用三种方法打印100以内所有能被7整除的正整数,要求分别使用while、do和for语句。提示:乘性运算符的优先级高于赋值运算符。
答:此题的难点在于如何控制循环次数,因为还没有讲分支语句。答案不唯一,仅供参考。
使用while语句:
# include <stdio.h>


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


    while (r < 100)
    {
        printf ("%d\n", r);
        n ++;
        r = n * 7;
    }


    return 0;
}


使用do语句:
# include <stdio.h>


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


    do
    {
        printf ("%d\n", r);
        n ++;
        r = n * 7;
    } while (r < 100);


    return 0;
}


使用for语句:
# include <stdio.h>


int main (void)
{
    for (int n = 1, r = 7; r < 100;)
    {
        printf ("%d\n", r);
        n ++;
        r = n * 7;
    }


    return 0;
}

6.简述赋值表达式、前缀递增表达式和后缀递减表达式的值是如何计算的,它们的副作用是什么?
答:赋值表达式的值是赋值运算符的左操作数在赋值之后的存储值,其副作用是修改赋值运算符的左操作数所代表的对象;前缀递增表达式的值是前缀++运算符的操作数递增后的新值,其副作用是递增该操作数所代表的对象;后缀递减表达式的值是后缀--运算符的操作数在递减前的原值,其副作用是递减该操作数所代表的对象。

7.用三种方法打印1到100之间的所有整数的平方,要求分别使用while、do和for语句。
答:答案不唯一,仅供参考。
使用while语句:
# include <stdio.h>


int main (void)
{
    int n = 1;
    while (n <= 100)
    {
        printf ("%d\n", n * n);
        n ++;
    }


    return 0;
}


使用do语句:
# include <stdio.h>


int main (void)
{
    int n = 1;
    do
    {
        printf ("%d\n", n * n);
        n ++;
    } while (n <= 100);


    return 0;
}


使用for语句:
# include <stdio.h>


int main (void)
{
    for (int n = 1; n <= 100; n ++) printf ("%d\n", n * n);


    return 0;
}


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

本版积分规则

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

GMT+8, 2026-3-3 15:41 , Processed in 0.229322 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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