结果为什么不是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个,而是1个
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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; }输出结果为:*** *** *** *** 。
如果以上回答对您有所帮助,望采纳~谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报