能帮我看看错在哪儿了吗

img

红的笔记是我想要达到的效果,123是0的数量。我代码没看出错在哪,但是第三行就开始报错是为什么。有没有人可以帮我看一下

去除第17行24行,然后在第16行多打印一个换行应该就可以了。

修改如下:


#include <stdio.h>

int main(void){
    
    int n;
    scanf("%d",&n);
    int i,j;
    int m;
    int middle;
    middle = (n+1)/2;
    
    for(i=1;i<=middle;i++){
        m=i-1;
        while(m>0){
            printf("0");
            m--;
        }
        printf("*\n");
        
//        for(j=1;j<=n;j++){
//            if(i+j==2*middle){
//                printf("*\n");
//            }else{
//                printf("0");
//            }
//        }
    }
    
    return 0;
    
} 

img

【以下回答由 GPT 生成】

代码中的错误是在第15行和第18行。在这两行中,将输入的整数n与字符型变量进行输出,需要使用格式化转换符%d来输出整数。修改代码如下:

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int i, j;
    int m;
    int middle = (n+1) / 2;

    for(i = 1; i <= middle; i++) {
        m = i - 1;
        while(m > 0) {
            printf("0");
            m--;
        }
        printf("*");

        for(j = 1; j <= n; j++) {
            if(i + j == 2 * middle) {
                printf("%d", n);
            }
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

这样修改后,代码就能正常运行并输出期望的结果了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^