-1

こんにちは、このような形を * で印刷したいと思います。この形状の高さは 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("*");  
     }

}
4

4 に答える 4

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;
}
于 2013-02-16T14:00:57.830 に答える
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、プログラムは次のように出力します。

******
 *  * 
  **  
  **  
 *  * 
******
于 2013-02-16T13:44:37.440 に答える
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");
}
于 2013-02-16T13:47:06.623 に答える
0

では間違っているif (j=i || j==(height-(i-1)))と思います。j=i

于 2013-02-16T13:37:54.000 に答える