孙燕姿的雨天 2020-10-20 20:17 采纳率: 0%
浏览 38

为什么第一行会缩进七格?

输出一个菱形的星号
#include
#include
int main() {
int a, i, b;
for (i = 0; i <= 7; i++)

{
    for (b = 0; b < (abs(i-4)); b++)
    {
        printf(" ");
    }
    for (a = 0; a < (7 - 2 * abs(i - 4)); a++)
    {
        if (a != (6 - 2 * abs(i - 4))) {
            printf("*");
        }
        else {
            printf("*\n");
        }

    }
}
return 0;

    ![图片说明](https://img-ask.csdn.net/upload/202010/20/1603196209_736251.png)







    但如果我在第一句for后面输出一个换行格式就对了,但不是理想效果
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 02:03
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在C语言中,#include <stdio.h> 这一行被解释为 #include "stdio.h"。这里的“stdio.h”是一个预处理器宏定义,它包含标准输入输出库中的头文件。

    printf() 函数是 C 标准库的一部分,用于控制程序的输出流,并且在函数调用时自动进行格式化输出。printf(" "); 表示打印一个空格字符到屏幕上。

    在你的例子中,printf(" "); 在循环的第一行被执行,因为此时还没有执行任何其他语句。这导致了在第一行上有一个额外的空格。

    如果你想在第一行不打印任何东西(即仅输出一个星号),你应该使用 printf("*"); 替换 printf(" ");

    另外,如果你想要在一个单独的行上打印一个星号,你可以直接使用 * 符号,而不需要使用 printf 函数。例如:

    for (i = 0; i <= 7; i++) {
        for (b = 0; b < (abs(i-4)); b++) {
            printf("*");
        }
        printf("\n");
    }
    

    这段代码将在每行结束处添加一个换行符,从而在每一行开始和结尾都显示一个星号。

    评论

报告相同问题?

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价