scanfを使用して2つの整数値(ともに正の奇数)を入力にとり、変数wと変数hに格納したあと、h行w列で「*」の並びを出力するプログラムを作成したいです。
scanfを使用して2つの整数値(ともに正の奇数)を入力にとり、変数wと変数hに格納したあと、h行w列で「*」の並びを出力するプログラムを作成したいです。 例えば、入力が「15 11」のとき写真のようになります。 条件としましては、 内部は縦方向・横方向とも1つおきに「*」を出力するようにし、どの内部の「*」も上下左右に連続しない。 入力値の少なくとも一方が、0または負の値の場合には「invalid」を、正の偶数の場合には「even」を、それぞれ出力して改行し、プログラムを終了することになります。 全く想像もつかないためよろしくお願いいたします。
C言語関連・37閲覧
ベストアンサー
#include <stdio.h> int main(void) { int height, width, ct_h, ct_w; printf("height width -> "); scanf("%d %d", &height, &width); if (height <= 0 || width <= 0) { printf("invalid\n"); return 1; } if (height % 2 == 0 || width % 2 == 0) { printf("even\n"); return 1; } printf("\n"); for(ct_h = 1; ct_h <= height; ct_h ++) { if (ct_h == 1 || ct_h == height) { for (ct_w = 1; ct_w <= width; ct_w++) { printf("*"); } printf("\n"); } else { if (ct_h % 2) { for (ct_w = 1; ct_w <= width; ct_w++) { printf("*"); } } else { for (ct_w = 1; ct_w <= width; ct_w++) { if (ct_w == 1 || ct_w == width) { printf("*"); } else { printf(" "); } } } printf("\n"); } } }
質問者からのお礼コメント
早速答えていただきありがとうございます。 とても助かりました。
お礼日時:1/20 20:25