3つの整数のうち奇数のみを表示するプログラミングをどうやってかけばいいかわかりません…。
自分でも書いてみたのですが上手く実行されなくて困っています。
どなたか教えてください。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int x, i;
for (i = 1; i <= 3; i=i+1)
{
printf("整数を入力する", x);
scanf("%d", &x);
}
{
if (x % 2 != 0)
printf("奇数だけ表示する");
}
return 0;
}
No.6ベストアンサー
- 回答日時:
>さきほど教えてくださったプログラムを実行してみたのですが、3回目に入力した値しか奇数であると表示されないのですが…。
すみません。大変失礼しました。
提示文に誤りがありましたので、再提示します。修正個所は//修正 のコメントを入れています。
--------------------------------
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int x[3], i;
for (i = 0; i < 3; i=i+1)
{
printf("整数を入力する"); //修正
scanf("%d", &x[i]); //修正
}
for (i = 0; i < 3; i=i+1)
{
if (x[i] % 2 != 0)
{
printf("%dは奇数です\n",x[i]);
}
}
return 0;
}
--------------------------------------
以下、実行結果です。
整数を入力する1
整数を入力する2
整数を入力する3
1は奇数です
3は奇数です
---------------------------------
>また、i = 0; i < 3; i = i + 1ではなくi=1; i<=3; i=i+1という条件を使わなければならないのですが、さきほどのプログラムのi = 0; i < 3; i = i + 1をi=1; i<=3; i=i+1に変えるだけで良いのですか?
その場合は、iは1から3迄の値をとりますので(私の提示したものはiは0から2迄の値)
scanf(”%d",&x[i]);を
scanf(”%d",&x[i-1]);にします。
同様に
if (x[i] % 2 != 0)
{
printf("%dは奇数です\n",x[i]);
}
を
if (x[i-1] % 2 != 0)
{
printf("%dは奇数です\n",x[i-1]);
}
にします。
そうするとiが1から3に対応して
0から2の値を取得できます。
つまり
x[0]・・・i=1のとき
x[1]・・・i=2のとき
x[2]・・・i=3のとき
になるようにします。
No.5
- 回答日時:
>こんなこと聞くの今更なんですけど、i = 0; i < 3; i=i+1は3つの整数のうち奇数のみを表示するプログラムにどんな関係があるのですか?
No4のプログラムでいえば、
最初のfor文は、3つの整数を入力する為に(そしてxの配列へ格納するために)、入力を3回繰り返しています。
次のfor文は、3つの数値が奇数かどうかを判定する為に、判定を3回繰り返しています。
もちろん、for文を使用しないで3つの整数を入力することもできます。
例えば、以下のようにです。
int x,y,z;
printf("3つの整数を一度に入力する");
scanf("%d %d %d",&x,&y,&z);
printf("x=%d y=%d z=%d\n",x,y,z); //確認用
なぜ、3つの整数を入力するとき、(私が)for文を使用したのかと言えば、
最初に提示されたあなたの質問がfor文を使っていたので、その考え方を尊重したからです。
for文で入力する方法は、仕様変更にも柔軟に対応できます。
例えば、「今は3つの整数だが、これを100個の整数を入力するように変えてください」と言われたとき、
上限の3を100に変更すれば、簡単に対応できます。
No.4
- 回答日時:
x[3]の場合は、添え字は0,1,2になります。
x[0],x[1],x[2]はOKですが、
x[3]とすると範囲外の添え字なのでプログラムが暴走(異常終了)します。
回答のサンプルです。
今回、iを添え字にするので、for文で回すとき、iは0~2の値になるようにします。(x[i]の時、iは0~2になるようにするため)
--------------------------------------------
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int x[3], i;
for (i = 0; i < 3; i=i+1)
{
printf("整数を入力する", &x[i]);
scanf("%d", &x);
}
for (i = 0; i < 3; i=i+1)
{
if (x[i] % 2 != 0)
{
printf("%dは奇数です\n",x[i]);
}
}
return 0;
}
----------------------------------------------
No.3
- 回答日時:
No2です。
>取り込む取り込まないとはどういうことでしょうか?
入力された3つの値を一旦、内部の変数に格納することです。変数は3の値が格納できなければいけません。
現在は、xだけなので1つしか、格納出ませんので、次の値がxに格納されてしまいます。
int x[3];のような配列で宣言し、
x[0]
x[1]
x[2]
に3つの値を格納します。
>また、そのプログラミングで実行したらエラーが出たので、取り込む場合のプログラミングを教えてほしいです…!
どのようなエラーがでましたか?
私は、プログラムを提示するときは、こちらで必ず動作確認を行ってから、提示するようにしています。
こちらでは、エラーは発生していません。
No.2
- 回答日時:
3つの整数を一旦、全て取り込んでから、判定するなら、取り込むための配列を用意しておき、
そこに取り込むようにします。
取り込まないで、そのまま、判定するなら、以下のようにします。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int x, i;
for (i = 1; i <= 3; i=i+1)
{
printf("整数を入力する", x);
scanf("%d", &x);
if (x % 2 != 0)
{
printf("%dは奇数です\n",x);
}
}
return 0;
}
No.1
- 回答日時:
奇数と偶数をどのようにして判別しようとしていますか?
それ次第で処理方法が変わります。
・・・
まあ、自分なら「2で割った余り」で判断とせず、
数値「1」とANDをとって、「1」が返ってきたら奇数。「0」が返ってきたら偶数としますけど(`・ω・´)
・・・余談・・・
質問文に書かれたソースコードでは
…入力された値が奇数なら表示、を3回繰り返す…
だろうと思いますけど、それでいいんですか?
質問の内容となにか微妙に違う気がするんですけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
Excel プログラム
-
n88 BASICのプログラミングにつ...
-
AVRのC言語について幾つか教え...
-
65536は2の何乗なのでしょうか?
-
PICマイコンのコピー(クローン...
-
exeファイルしかないプログラム...
-
C言語で、文字をbmp形式の画像...
-
binファイルってiphone専用です...
-
正しい五十音順について
-
あるフリーゲームをプレイ中に...
-
LogonUI.exe システムエラー
-
XnViewにwebpを「いつも開く」...
-
チェス 論理クイズ
-
VisualBasic2008の非ユーザーコ...
-
main関数を先頭に置くデメリット
-
GPIB制御
-
エクセルとワードをデスクトッ...
-
ウイルスセキュリティ メッセー...
-
c言語で画像から文字を認識 キ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
Fortran90についての質問です。
-
Matlabについて質問2
-
【JAVA】数字をひし形に出力す...
-
fortran if文
-
JCLの基本について教えてください
-
Sublime Text 3でのFortranプロ...
-
ProC 固定SQLでNULLってどう表...
-
COBOLのピリオド
-
4桁の数値を逆に表示されるプ...
-
360度を超える角度
-
main関数終了時のreturnの意味は?
-
3つの整数のうち奇数のみを表示...
-
Fortran "実引数の型が仮引数の...
-
c言語のプログラミング 2つの整...
-
exitってどう使うの?
-
HeapDestroyを安全に行う方法
-
"n!"(階乗)の数字列の生成
-
PICのプログラムでsrandを使う...
-
fortranについて
おすすめ情報
取り込む取り込まないとはどういうことでしょうか?
また、そのプログラミングで実行したらエラーが出たので、取り込む場合のプログラミングを教えてほしいです…!
「数値1とANDをとって1が返ってきたら奇数、0が返ってきたら偶数」の意味が分からないです(;;)またその場合にはどのようにプログラムを書けばいいのですか?
int main(void)
{
int x[3], i;
for (i = 1; i <= 3; i = i + 1)
{
printf("整数を入力する", x[3]);
scanf("%d", &x[3]);
}
{
if (x[3] % 2 != 0)
printf("奇数だけ表示する");
}
return 0;
}
こう言うことですか?
こんなこと聞くの今更なんですけど、i = 0; i < 3; i=i+1は3つの整数のうち奇数のみを表示するプログラムにどんな関係があるのですか?
i = 0; i < 3; i=i+1の意味は分かりますがなぜこれを使うことによってこのプログラムがつくれるのかがわかりません…。
なるほどです…。
さきほど教えてくださったプログラムを実行してみたのですが、3回目に入力した値しか奇数であると表示されないのですが…。
(例)整数を入力する1
整数を入力する2
整数を入力する3
3は奇数です
→おそらく問題に合うためには、「1,3は奇数です」と表示されなければならない?
また、i = 0; i < 3; i = i + 1ではなくi=1; i<=3; i=i+1という条件を使わなければならないのですが、さきほどのプログラムのi = 0; i < 3; i = i + 1をi=1; i<=3; i=i+1に変えるだけで良いのですか?