第七天课程作业回顾

本文介绍了一个C语言程序,该程序能够读取用户输入的偶数,并在输入数字99或已输入6个偶数后停止。文章详细解释了如何通过循环和条件判断来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    第七天作业题中有三道题连在一起,后一题是前一题的增强版,这三道题如下:

    3. 编写读取并打印一个整数的语句。

    4. 修改练习3,使其职能读取偶数(2,、4、6等)。

    5.修改练习4,使之在用户输入数字99或输入了6个偶数后,返回用户输入的值。将这些值存储在数组中(提示:需要编写一个循环)。

    第三题和第四题较简单:

#include <stdio.h>
int main(void)
{
    int x;
    scanf("%d",&x);
    printf("%d",x);
    return 0;
}

.

#include <stdio.h>
int main(void)
{
    int x;
    scanf("%d",&x);
    while(x % 2 == 1)
    {
        scanf("%d",&x);
    }
    printf("%d",x);
    return 0;
}

.

    第五题:

#include <stdio.h>
int main(void)
{
    int x[6],i;
    for(i = 0; i < 6; i++)                     /* 2 */
    {
        scanf("%d",&x[i]);                     /* 要求用户输入 */
        while(x[i] % 2 == 1)                   /* 1 */
        {
            scanf("%d",&x[i]);                 /* 当输入是奇数时循环scanf */
        }
    }
    
    for(i=0;i<6;i++)
    {
        printf("%d",x[i]);
    }
    
    return 0;
}

以上仅仅是没有考虑“输入数字99”的代码块。第五题的难点正是:在考虑到“输入数字99”后如何改写以上这段代码。


思维过程:

考虑到用户输入的、存储在x[0]中的值,会有三种情况:偶数、非99奇数、99。当输入的是非99奇数时,循环scanf,直到输入的是偶数或者99;当输入的是偶数时,则for语句循环体结束,x值+1,进行x[1]值的输入;当输入是99时,for语句循环体结束,x值+1,不进行x[1]值的输入而在for的condition阶段跳出、执行statement后面的语句。


因此在两处需要修改:图中注释的两个地方。

在第一个修改处,试问什么时候循环,什么时候跳出 while?答案是:当输入是奇数且不为99的时候循环,当输入是偶数或者为99时跳出while。因此使 while(x % 2 == 1)变为 while( x %2 == 1 && x != 99)即可。

在第二个修改处,

考虑到 condition 前输入的 x 值无非两种,偶数和99。当在 condition 前输入值为偶数时 for(i=0;i <6;i++)可以无变化;而在 condition 前输入的值为 99 时需要跳出 for,这样一来就需要对 for(i=0;i < 6;i++)进行更改,斟酌后改为 for(i=0;i< 6 && x[ i-1 ] != 99;i++)。注意:因为到 condition 前 i 已经 +1,因此到 condition 后进行判断的值是 x[ i - 1]。

    假如跳出for了,若x[ n ]等于99,则输出x[ n ]前面的所以x值。例如x[ 4 ]等于99,则输出x[ 1 ]、x[ 2 ]、x[ 3 ]的值。

最后修改好的程序如下:

#include <stdio.h>
int main(void)
{
    int x[6], i;
    int main(void)
    {
        for(i=0;i < 6 && x[i-1] != 99;i++)
        {
            scanf("%d",&x[i]);
            while(x[i] % 2 == 1 && x[i] != 99)
            {
                scanf("%d",&x[i]);
            }
        }

        for(i = 0;i < 6 && x[i] != 99;i++)
        {
            printf("%d", x[i]);
        }

        return 0;
}



转载于:https://my.oschina.net/u/1996355/blog/300165

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值