C言語わかりません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
aary

C言語わかりません

#1

投稿記事 by aary » 7年前

C言語初心者です。
paizaというサイトの掛け算のリストの問題で何故不正解になるのかわかりません。

【問題】
ある正の整数nが入力されます。
正の整数1から9に整数nをそれぞれを掛けた数を半角スペース区切りで出力して下さい。
例えばn=2の場合
2 4 6 8 10 12 14 16 18
となります。

【入力される値】
入力は以下のフォーマットで与えられます。
入力値最終行の末尾に改行が1つ入ります。
n(正の整数)

【期待する出力】
正の整数nを1から9の数を掛けた数を半角スペース区切りで出力してください。
最後は改行し、余計な文字、空行を含んではいけません。

【条件】
すべてのテストケースで以下の条件を満たします。
1 ≦ n ≦ 100

この問題を下記のコードで提出したら不正解になりました。
どこが間違っているのでしょうか?

コード:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	// 自分の得意な言語で
	// Let's チャレンジ!!
	 int n, i;
	 do {
		 scanf("%d", &n);
	 } while (n == 0 || n>100);
	

	for (i = 1; i <= 9; i++)
		printf("%d ", i*n);
	printf("\n");

	return 0;

}

あんどーなつ
記事: 171
登録日時: 7年前
連絡を取る:

Re: C言語わかりません

#2

投稿記事 by あんどーなつ » 7年前

paizaの問題の解答例を公開することは規約で禁止されているはずです。注意してください。

パッと見た感じですけど、問題の入力が1つなのに、scanfにwhileループがかかっていますね。
printfまでたどり着かずにタイムオーバーしているものと思います。

あんどーなつ
記事: 171
登録日時: 7年前
連絡を取る:

Re: C言語わかりません

#3

投稿記事 by あんどーなつ » 7年前

間違えていました。すみません。

数字を9個出力するときに、最後の数字の後に空白が1つできています。
それを直せば通ると思います。

box
記事: 2002
登録日時: 13年前

Re: C言語わかりません

#4

投稿記事 by box » 7年前

aary さんが書きました: すべてのテストケースで以下の条件を満たします。
1 ≦ n ≦ 100
この条件があるにもかかわらず
aary さんが書きました:

コード:

	 } while (n == 0 || n>100);
としているのは、問題の趣旨に反しています。このために不正解になっているかどうかはわかりませんけど。
素直に、こんな風に書くのがよいのではないでしょうか。

コード:

#include <stdio.h>

int main(void)
{
    int n, i;

    do {
        scanf("%d", &n);
    } while (!(1 <= n && n <= 100));

    for (i = 1; i <= 9; i++) {
        printf("%d%s", n * i, i == 9 ? "\n" : " ");
    }
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

aary

Re: C言語わかりません

#5

投稿記事 by aary » 7年前

助かりました!

閉鎖

“C言語何でも質問掲示板” へ戻る