
scanf関数を使用して、文字列を10回入力し一番大きい文字列を表示するプログラムを作ったのですが、
一番大きい「奇数」を表示するように条件を加えた場合どうすればよいのでしょうか?
偶数=割り切れる
奇数=割り切れない
ということまでは分かるのですがその先が分かりません。
一応一番大きい文字列を表示するプログラムを貼っておきます。
#include <stdio.h>
int main(void)
{
char str[1024];
char buf[10];
int i;
printf("文字列を10回入力して下さい:\n");
memset(str, 0, sizeof(str));
for (i = 0; i < 10; i++)
{
memset(buf, 0, sizeof(buf));
printf("input>\n");
scanf("%s", buf);
}
if (strcmp(buf, str) > 0)
{
strcpy(str, buf);
}
printf("output>\n%s\n" , str);
getchar();
}
No.1ベストアンサー
- 回答日時:
#include <stdio.h>
int main(void)
{
int num[10], max, maxodd, i;
puts("10個の整数を入力します");
for (i = 0; i < 10; i++) {
printf("%d個目:", i + 1);
scanf("%d", &num[i]);
}
max = maxodd = num[0];
for (i = 1; i < 10; i++) {
if (num[i] > max) {
max = num[i];
}
if (num[i] % 2 == 1 && num[i] > maxodd) {
maxodd = num[i];
}
}
printf("いちばん大きい数 :%d\n", max);
if (maxodd % 2 == 1) {
printf("いちばん大きい奇数:%d\n", maxodd);
}
else {
printf("入力した数の中に奇数がありませんでした\n");
}
return 0;
}
No.2
- 回答日時:
★『一番大きい文字列』というより『一番大きい整数値』ですよね。
・考え方(アルゴリズム)は次のように!
・まずは『scanf』で整数を受け取るようにします。→文字列ではなく。
・そしたら整数値が『偶数』、『奇数』か判定します。→割り切れない。
・『奇数』の時に最初に保存されていた『一番大きい奇数値』と比較します。→最初は『0』にしておく。
・新しく『scanf』で受け取った『奇数値』が大きければ保存し直します。
・これを 10 回繰り返せばよいのです。→これで最後に代入された『値』こそ『一番大きい奇数値』です。
サンプル:
int main( void )
{
int max = 0; ←最大値の変数(0で初期化しておくこと)
int n; ←整数値の変数
int i; ←繰り返し変数
printf( "文字列を10回入力して下さい:\n" );
for ( i = 0 ; i < 10 ; i++ ){
printf( "input>" ); ←『\n』は削除したほうが良い。なぜ?(考えてみよう)
scanf( "%d", &n ); ←ここで『整数値』を受け取る。
if ( (n % 2) != 0 ){ ←ここで2では割り切れないと判定(奇数なので)。
if ( n > max ){ ←ここで比較する。
max = n; ←ここで代入しなおす。
}
}
}
printf( "output>%d\n" , max ); ←ここで結果表示
getchar();
}
補足:
・『偶数』判定は、整数値を2で割りあまりが0。 →(n % 2) == 0
・『奇数』判定は、整数値を2で割りあまりが0以外。→(n % 2) != 0
・ほかにも『奇数』判定は『if ( n & 0x1 )』でも判定できますよ。
続けて『else』を使えば『偶数』判定も可能ですな。
・どうですか。理解できましたか。最後に『scanf』をお勉強しましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CPU温度・負荷等を調べるには
-
C言語プログラミング 漸化式に...
-
既約分数の表示プログラム
-
摂氏の値を計算するプログラム...
-
すごろくに使用するサイコロ
-
Cプログラム
-
printf()文の書式
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
プログラムでの数字につく”f”の...
-
「Aに対するBの割合」と「Aに対...
-
C++のfor文について
-
変数とパラメータとは違うもの...
-
C言語のプログラミングですが、
-
LNK2019:未解決の外部シンボル ...
-
main.c:7:43: warning: implici...
-
For文の終了値を関数にしても問...
-
2÷3などの余りについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
CTRL+Dでループを抜けるには
-
Cプログラムについて
-
コマンドラインに出力した文字...
-
WM_CLOSEで閉じれないウィンド...
-
C言語の&に関する質問
-
すごろくに使用するサイコロ
-
文字と数字の判定について
-
printf( " %2d", p * q );
-
【C言語教えてください】sin波...
-
%P と %X の違い
-
C言語の勉強しています。すみま...
-
strcmp
-
c言語でAからZまでを表示する...
-
unsigned int型について
-
(C言語)めちゃくちゃな値にな...
-
printf で二進表示を行いたい。
-
プログラミング C言語 課題でプ...
-
c言語で2000年以降カレンダーを...
おすすめ情報