打印一个类似这样的图形,用C语言写程序。
*
***
*****
*******
*********
*******
*****
***
*
这是我的程序:
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
int main()
{
int line = 0;
scanf("%d", &line);
// 打印上半部分
int i = 0;
for (i = 0; i < line; i++)
{
int j = 0;
//打印空格
for (j = 0; j < line-i; j++)
{
printf(" ");
}
//打印符号*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//打印下半部分
for (i = 0; i < line - 1; i++)
{
int j = 0;
for (j = 0; j < i + 2; j++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - i) - 1; i++);
{
printf("*");
}
printf("\n");
}
return 0;
}
运行之后发现在输入一个数组之后,就不再运行后面的程序了,我刚学1个月的C语言,目前在做题,想问下这个程序哪里出问题了。
写错了一点点,下半部分打印中, for (j = 0; j < 2 * (line - i) - 1; i++);这句有三个问题:
一是for后面加分号是错的,加分号后循环体就等于没有了
二是最后i++错了,应该是j++,显然for循环是控制j的变化,i是固定的
三是j的结束条件line-i要改为line-i-1,下半部分比上半部分少一个完整*号行
#include<stdio.h>
int main()
{
int line = 0;
scanf("%d", &line);
// 打印上半部分
int i = 0;
for (i = 0; i < line; i++)
{
int j = 0;
//打印空格
for (j = 0; j < line-i; j++)
{
printf(" ");
}
//打印符号*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//打印下半部分
for (i = 0; i < line - 1; i++)
{
int j = 0;
for (j = 0; j < i + 2; j++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - i-1) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
for (j = 0; j < 2 * (line - i) - 1; i++);
这行错误有三个,
应该是j++,你写成i++
for()后面多了个 ;
line - i还要再 -1
改成
for (j = 0; j < 2 * (line - i -1) - 1; j++)
代码如下:{如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮}。
#include<stdio.h>
int main()
{
int line = 0;
scanf("%d", &line);
// 打印上半部分
int i = 0;
for (i = 0; i < line; i++)
{
int j = 0;
//打印空格
for (j = 0; j < line-i; j++)
{
printf(" ");
}
//打印符号*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//打印下半部分
for (i = 0; i < line - 1; i++)
{
int j = 0;
for (j = 0; j < i + 2; j++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - i -1) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m