
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ランキング
-
プログラミング C言語 課題でプ...
-
10個出力で改行したいのですが...
-
LU分解法のピボット選択機能実...
-
既約分数の表示プログラム
-
すごろくに使用するサイコロ
-
C言語の&に関する質問
-
C言語の勉強しています。すみま...
-
入力したお金の金額からお札の...
-
CTRL+Dでループを抜けるには
-
C言語でマウス入力(クリックや...
-
printfの変換仕様について
-
文字と数字の判定について
-
*を使ったジグザグのラインをプ...
-
cshの文字列操作(0埋め)
-
ピラミッド表示プログラム。
-
円の面積を求めるプログラミン...
-
パスカルの三角形についてのCプ...
-
%P と %X の違い
-
C言語 文字列の比較 compare
-
defineで定数が置き換えられな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
c言語でAからZまでを表示する...
-
コマンドプロンプトがすぐ消える
-
C言語の勉強しています。すみま...
-
テキストカーソル位置の取得
-
【C言語教えてください】sin波...
-
コマンドラインに出力した文字...
-
三角形の判別
-
(C言語)めちゃくちゃな値にな...
-
cshの文字列操作(0埋め)
-
scanfに文字が入力されたときに...
-
入力したお金の金額からお札の...
-
unsigned int型について
-
8人分のテストの点数を入力し、...
-
プログラミングについて質問で...
-
LU分解法のピボット選択機能実...
-
勝率をプログラムに
-
CTRL+Dでループを抜けるには
-
C言語
おすすめ情報