ID非公開

2021/4/20 15:27

44回答

現在プログラミング勉強中の初学者ですが、以下の問題で0より小さい数までしか出せず困っています。

プログラミング | C言語関連33閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

ちなみに、キチンと (1)長さ5のint型の配列を作成する。 (2)(1)の各要素に、-10から10までの乱数を代入する。 (3)配列の内容をすべて表示する。 (4)0よりも大きい数が何個あるか表示する。 (5)0よりも小さい数が何個あるか表示する。 (6)0が何個あるか表示する。 の順番に記述していくなら #include <stdio.h> #include <time.h> #include <stdlib.h> int main() { int data[5]; int i; int sum = 0; // 乱数生成 srand((unsigned)time(NULL)); for (i = 0; i < 5; i++) data[i] = rand() % 21 - 10; (続く)

ThanksImg質問者からのお礼コメント

ありがとうございます!

お礼日時:4/21 16:48

その他の回答(3件)

0

現象は正確に書きましょう。 0の個数: までしか表示されない、ということですか? それとも、0より小さい数: * * * までしか表示されない、ということですか? あと、環境も明示しましょう。 Windows?バージョンは?Visual Studioですか?それとも別のなにか?C言語ですか?

0

あたしが昼寝してるうちにカテマスが書いてくれてるけど。 そもそも課題には「(3)配列の内容を全て表示」とあるので、プラスやマイナスは個数だけ表示でいい。乱数生成直後に数えたほうが楽。平均とってないのでavgもwordもいりません。他のコードからコピペしたのを残したのかしら? #include <stdio.h> #include <time.h> #include <stdlib.h> int main() { int data[5]; int i=0; int cntPlus=0; // 0より大カウンタ int cntMinus=0; // 0より小カウンタ int cntZero=0; // 0カウンタ srand((unsigned)time(NULL)); //乱数を生成しそれぞれ出力、ついでにカウント(カウント結果は未表示) for (i = 0; i < 5; i++) { data[i] = rand() % 21 - 10; printf("%d ", data[i]); if(data[i]==0) cntZero++; if(data[i]<0) cntMinus++; if(data[i]>0) cntPlus++; } // 最後にカウント結果を出力 printf("\n0より大きい数:%d個", cntPlus); printf("\n0より小さい数:%d個", cntMinus); printf("\n0の個数:%d個", cntZero); }

1

0の個数をカウントすればいいんじゃないですか?? int num0=0;(0の個数をカウントするnum0) for(配列i番目:5番目まで行う){ if(deta[i]==0){ ##配列i番目が0ならカウントする num0=num0+1; } } printf("%d",num0); C言語久しぶりなんで間違っているところがあるかもしれません。

1人がナイス!しています