第二个for循环的结束条件a<5-a改为a<5-i即可。
修改如下:
#include <stdio.h>
int main(void){
int a,b,i;
for(i=0;i<=5;i++){
// 如果结束条件为a<5-a,则此循环每次都是打印固定的3个空格
// 实际需要打印的等腰三角形每行前面的空格的个数从上到下依次为:5,4,3,2,1,0
// 所以可以使用结束条件 a<5-i来实现
for(a=0;a<5-i;a++){
printf(" ");
}
for(b=0;b<2*i+1;b++){
printf("*");
}
printf("\n");
}
return 0;
}
【以下回答由 GPT 生成】
#include <stdio.h>
int main() {
int rows, i, j, space;
printf("请输入等腰三角形的行数: ");
scanf("%d", &rows);
for (i = 1; i <= rows; ++i) {
for (space = 1; space <= rows - i; ++space) {
printf(" ");
}
for (j = 1; j <= 2 * i - 1; ++j) {
printf("*");
}
printf("\n");
}
return 0;
}
你的代码基本上是正确的,只需要进行一点小的修改即可得到所需的等腰三角形。修改的部分是在第二个内部循环时,你应该打印的空格数量不是等于行数,而是等于当前行数减1。此外,在第二个内部循环结束后,你需要打印一个换行符,以绘制下一行。
以下是修改后的代码:
#include <stdio.h>
int main() {
int rows, i, j, space;
printf("请输入等腰三角形的行数: ");
scanf("%d", &rows);
for (i = 1; i <= rows; ++i) {
for (space = 1; space <= rows - i; ++space) {
printf(" ");
}
for (j = 1; j <= 2 * i - 1; ++j) {
printf("*");
}
printf("\n");
}
return 0;
}
现在,当你运行该程序并输入行数时,将会正确地绘制等腰三角形。
【相关推荐】