ページ 11

C言語わかりません

Posted: 2016年11月24日(木) 02:22
by aary
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;

}

Re: C言語わかりません

Posted: 2016年11月24日(木) 05:49
by あんどーなつ
paizaの問題の解答例を公開することは規約で禁止されているはずです。注意してください。

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

Re: C言語わかりません

Posted: 2016年11月24日(木) 06:00
by あんどーなつ
間違えていました。すみません。

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

Re: C言語わかりません

Posted: 2016年11月24日(木) 06:47
by box
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;
}

Re: C言語わかりません

Posted: 2016年11月25日(金) 04:20
by aary
助かりました!