Lansional 2023-03-24 19:59 采纳率: 88%
浏览 27
已结题

结果为什么不是4个,而是1个

结果为什么不是4个***,而是1个***
#include <stdio.h>

int i;
void Prt()
{
    for (i = 5; i < 8; i++)
    {
        printf("%c", '*');
    }
    printf("\t");
}
void main()
{
    for (i = 5; i <= 8; i++)
    {
        Prt();      /
    }
}
  • 写回答

4条回答 默认 最新

  • Leodong. 2023-03-24 20:16
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ,具体如下:

       在这个程序中,Prt 函数会打印 3 个星号 "***",并在最后添加一个制表符 \t,表示输出后跳到下一个制表符位置。而 main 函数会调用 Prt 函数 4 次,每次调用后输出一个制表符。
    
       因此,我们期望程序输出的是 4 个 *** 和 3 个制表符,但实际输出的是 1 个 *** 和 3 个制表符。这是因为在调用 Prt 函数之前,i 的值已经被初始化为 8,所以在第一次调用 Prt 函数时,循环 for (i = 5; i < 8; i++) 中的条件不成立,Prt 函数不会打印任何星号,直接输出一个制表符。
    
       要想修正这个问题,可以将 Prt 函数中的循环条件改为 for (i = 0; i < 3; i++),这样就可以输出 3 个星号了。同时,由于 Prt 函数已经输出了制表符,main 函数不需要再输出制表符了,可以将 printf("\t"); 移动到 Prt 函数外部。
    

    修正后的代码如下:

    #include <stdio.h>
    
    void Prt() {
        for (int i = 0; i < 3; i++) {
            printf("%c", '*');
        }
        printf("\t");
    }
    
    int main() {
        for (int i = 0; i < 4; i++) {
            Prt();
        }
        return 0;
    }
    

    输出结果为:*** *** *** *** 。


    如果以上回答对您有所帮助,望采纳~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 3月24日