イリヤ 2018-11-04 08:10 采纳率: 0%
浏览 2297
已采纳

编程输出对称图形,图形上半部分的行数由键盘输入

#include"stdio.h"
#include"stdlib.h"
#include "math.h"
main()
{ int n,i,j;
scanf("%d",&n);
for( i=1; _________; i++)
{ for( j=1; ____________; j++)
printf(" ");
for( j=1; ; j++)

printf("*");
printf("\n");
}
for(i=1;i<=n-1;i++)
{ for(j=1;j<=2*(n-i)-1;j++)
printf("*");
printf("\n");
}
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-04 08:46
    关注

    你的程序很奇怪,因为下面左边没有空格,为什么上面要输出空格呢。还有
    for( j=1; ; j++)
    这里如果不加上条件,输出的是死循环

    #include"stdio.h"
    #include"stdlib.h"
    #include "math.h"
    
    int main()
    { 
        int n,i,j;
        scanf("%d",&n);
        for(i=1; i < n; i++) //1
        { 
            for(j=1; j < 0; j++) //2
                printf(" ");
            for(j=1; j < i * 2; j++) //3
                printf("*");
            printf("\n");
        }
        for(i=1;i<=n-1;i++)
        { 
            for(j=1;j<=2*(n-i)-1;j++) 
                printf("*");
            printf("\n");
        }
    }
    

    所以必须改这3个地方
    结果:
    图片说明

    还有一种写法,下面的就要改,但是似乎更合理一些:

    #include"stdio.h"
    #include"stdlib.h"
    #include "math.h"
    
    int main()
    { 
        int n,i,j;
        scanf("%d",&n);
        for(i=1; i < n; i++)
        { 
            for(j=1; j < i; j++)
                printf(" ");
            for(j=1; j < i * 2; j++)
                printf("*");
            printf("\n");
        }
        for(i=1;i<=n-1;i++)
        { 
            for(j=1; j < n-i; j++)
                printf(" ");
            for(j=1;j<=2*(n-i)-1;j++) 
                printf("*");
            printf("\n");
        }
    }
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程