嗨我想用*打印这样的形状。 这个形状的高度是6,如果输入另一个偶数整数作为高度,它将产生具有该高度的形状。
到目前为止,我正在这样做,但这失败了...... 谁会告诉我我做错了什么?谢谢!
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int height;
int i, j;
printf("Please input height with an even integer ");
scanf("%d", &height);
for (i=height/2; i>=1; i--)
{
for (j=1; j<=height; j++)
{
if (i==height/2)
printf("*");
else if (j=i || j==(height-(i-1)))
printf("*");
else
printf(" ");
}
printf("\n");
}
system("PAUSE");
return 0;
}
谢谢大家!
实际上我之前尝试了另一种方法并且结果很好。
我首先打印出顶行和底行,然后将星号和空格放到应该的位置。
这是我的解决方案。
void printStar(int x);
int main(int argc, char *argv[])
{
int height, value = 2 , value2;
printf("Please input height with an even integer ");
scanf("%d", &height);
value2 = height-1;
for (int i=1; i<=height; i++)
{
if(i==1){
printStar(height);
}else if(i == height){
printStar(height);
}else{
for(int y = 1 ; y<=height ; y++){
if(value == y || value2 == y){
printf("*");
}else{
printf(" ");
}
}
value++;
value2--;
}
printf("\n");
}
system("PAUSE");
return 0;
}
void printStar(int x){
for(int i = 0 ; i<x ;i++){
printf("*");
}
}
答案 0 :(得分:0)
我认为在if (j=i || j==(height-(i-1)))
中j=i
是错误的。
答案 1 :(得分:0)
你需要改变的事情:
for (i=height/2; i>=1; i--)
应为for (i=height; i>=1; i--)
if (i==height/2)
应为if (i==height || i==1)
else if (j=i || j==(height-(i-1)))
应为else if (j==i || j==(height-(i-1)))
完成这些更改后,对于height==6
,您的程序将输出:
******
* *
**
**
* *
******
答案 2 :(得分:0)
for (i=height; i>=1; i--)
{
for (j=1; j<=height; j++)
{
if (i==height || i==1)
printf("*");
else if (j==i || j==(height-(i-1)))
printf("*");
else
printf(" ");
}
printf("\n");
}
答案 3 :(得分:0)
该程序设计得如此,您可以从逻辑上思考问题。将问题分为不同的部分,上部和下部(分而治之的技术),然后解决问题。要求别人解决你的问题是没有建设性的。这是目前问题的解决方案,但请记住为什么你的作业首先要解决这个问题。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int height = 1;
int i, j;
while((height % 2 != 0) && height > 0){
printf("Enter Height: ");
scanf("%d",&height);
}
/*first half*/
for(i = 0; i < height; i++) putchar('*');printf("\n");
for(i = 1; i < height/2; i++){
for(j = 0; j < height; j++) {
if(j == i || j == (height-i-1))putchar('*'); else putchar(' ');
} printf("\n");
}
/*second half*/
for(i = height/2 -1; i > 0; i--){
for(j = 0; j < height; j++){
if(j == i || j == (height - i - 1))putchar('*'); else putchar(' ');
} printf("\n");
}
for(i = 0; i < height; i++) putchar('*');
return 0;
}