http://webkaru.net/clang/check-odd-even/
ですが!仕組みがいまいちわかりません。
えーとaがif5だったら%2に==0を代入した場合・・・
なのでelseに回される。
だと思うのですが!?以上の・・・の内容がわかればこのプログラムの意味が
分かると思うのですが、どなたか教えていただけないでしょうか?
以下プログラムです。
よろしくお願いいたします
#include <stdio.h>
int main(void)
{
int a;
printf("整数を入力してください = ");
scanf("%d",&a);
if( a % 2 == 0 ){
printf("%d は偶数です\n", a);
} else {
printf("%d は奇数です\n", a);
}
return 0
}
No.9
- 回答日時:
if( a % 2 == 0 ){
これは
int amari = a % 2;
if( amari == 0 ){
と同じになります
ある数字と2で割った時、割り切れる時(余りが0)は偶数、
割り切れない時(余りが1)は奇数になりますよね。
この算数を利用して偶数か奇数かを判定しています。
aが5の時は
int amari = 5 % 2; → 5÷2の余りがamari に代入されるのでamari は1
if( amari == 0 ){ のif分には入らず、elseの処理に入ります。
==は代入ではなく、比較です。0と同じかどうか判定しています。
No.8
- 回答日時:
間違い、修正
>Cが 4 の場合、Bがどんな数字でも a には 0~3が入ります
の下の表、間違いだらけなので、いかに修正
a=0 B=0 C=4 0÷4=0 余り 0
a=1 B=1 C=4 1÷4=0 余り 1
a=2 B=2 C=4 2÷4=0 余り 2
a=3 B=3 C=4 3÷4=0 余り 3
a=0 B=4 C=4 4÷4=1 余り 1
a=1 B=5 C=4 5÷4=1 余り 2
No.7
- 回答日時:
割り算のあまり、というよりも
割り算のあまりの特性を利用していると考えて下さい
C が 3 の場合、Bがどんな数字でも a には 0~2が入ります
a=0 B=0 C=3 0÷3=0 余り 0
a=1 B=1 C=3 1÷3=0 余り 1
a=2 B=2 C=3 2÷3=0 余り 2
a=0 B=3 C=3 3÷3=1 余り 0
a=1 B=4 C=3 4÷3=1 余り 1
a=2 B=5 C=3 5÷3=1 余り 2
: (Bを1づつ増やしていくと a 延々と 0,1,2 を吐きます)
Cが 4 の場合、Bがどんな数字でも a には 0~3が入ります
a=0 B=0 C=3 0÷4=0 余り 0
a=1 B=1 C=3 1÷4=0 余り 1
a=2 B=2 C=3 2÷4=0 余り 2
a=3 B=3 C=3 3÷4=0 余り 3
a=1 B=4 C=3 4÷4=1 余り 1
a=2 B=5 C=3 5÷4=1 余り 2
: (Bを1づつ増やしていくと a 延々と 0,1,2,3 を吐きます)
Cが 5 の場合、Bがどんな数字でも a には 0~5の値が入ります
Cが 6 の場合、Bがどんな数字でも a には 0~7の値が入ります
Cが n の場合、Bがどんな数字でも a には 0~(n-1)の値が入ります
No.6
- 回答日時:
算数・数学では、左から右に流れます。
B % C = a
5 % 2 = 1
※計算結果が、「=」の左側から右側に流れる。
プログラムの場合、右から左へ流れます。
a = B % C
1 = 5 % 2
※計算結果が、「=」の右側から左側へ流れる。
( a % 2 == 0 )について。
まず、算数・数学では、「代入」と「比較」の区別がありません。
例えば、「1 = 0」は正しくありません。これは、「比較」です。
5 % 2 = 1
の計算例でも、5を2で割った余りは1なので、「1 = 1」となり「比較」して正しいと判断します。
しかし、プログラムでは計算結果を「代入」すると言う考え方があります。
1 = 5 % 2
と説明しましたが、これは間違いで正しくは「a = 5 % 2」となります。
5を2で割った余りを「a」に入れる(代入する)です。
結果、「a = 1」となります。
このように、プログラムでは「代入」と「比較」では意味が異なる事から、
「=」は代入、「==」は比較としています。
aが5とした場合、
( 5 % 2 == 0 )
となり、
( 1 == 0 )
で、「==」は比較なので、等しくないとなります。
if( a % 2 == 0 ){
printf("%d は偶数です\n", a);
} else {
printf("%d は奇数です\n", a);
}
このプログラムでは、
( a % 2 == 0 )が等しい場合、
printf("%d は偶数です\n", a);
が実行され、
( a % 2 == 0 )が等しくない場合、
printf("%d は奇数です\n", a);
が実行されます。
つまり、ある数値を2で割った余りが0(割り切れたら)偶数。
余りが1(割り切れなかったら)奇数。
と表示しているわけです。
No.4
- 回答日時:
> ( a % 2 == 0 )
A % Bは、Aを2で割った余りを求めます。
X == Yは、XとYが等しいなら真、等しくないなら偽を求めます。
「%」と「==」は演算子(計算するときに使用する記号)といいます。演算子には演算(計算)する優先順位があります。
例えば1+2×3の場合は、2×3を先に計算しますよね。これは「+」より「×」の方が優先順位が高いからです。
↓は、C言語で使用する演算子です。
http://www.bohyoh.com/CandCPP/C/operator.html
「%」と「==」の優先順位をみて下さい。「%」が4で、「==」が8になっています。
つまり「%」の方が優先順位が高いので先に計算する必要があります。
元の( a % 2 == 0 )で考えると、a%2を先に計算する必要があります。括弧を付けてわかり易くすると
( (a % 2) == 0 )となります。
つまり
「aを2で割った余り」が0と等しければ真で、0と等しくなければ偽になるということになります。
No.3
- 回答日時:
C言語の"=="は比較演算子です。
代入文ではありません。この場合、
"a % 2"は a を 2 で割ったあまりを求めています。
よって、a を 2 で割ったあまりが 0 であるか比較し、0の場合(偶数の場合)はその if文に掛かる文が実行され、そうでなければ(奇数の場合) else文に掛かる文が実行されます。
ご回答くださいまして誠にありがとうございました。
わかりやすいご回答でした^^
現在PHPとC言語を併用しながら
プログラミングを学習中でございます
こんごともよろしくお願いいたします。
No.2
- 回答日時:
> えーとaがif5だったら%2に==0を代入した場合・・・
えーと基本中の基本を全く理解できていません。
> if( a % 2 == 0 ){
これはaを2で割った余りが0か判定しているだけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
EXCEL/VBA 変数の値をクリップ...
-
java final
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
C++における関数の引数について...
-
数値計算??
-
切り上げ
-
Variant型で宣言してるのにEmpt...
-
親ウィンドウの情報をインライ...
-
C言語 アロー演算子について質...
-
整数xxxが大き過ぎますというエ...
-
Serialize(CArchive& ar)にて
-
変数にオフセットが付いている...
-
擬似コントロール配列への代入
-
コピー代入演算子と代入演算子...
-
VB6.0での条件文にある#の意味
-
ExcelのVBAでをA列に第0〜19項...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
だれがとけるの?
-
C言語 列挙型(enum型)変数について
-
[VBS]変数を定数に変換する方法...
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
processing エラーで、 "cannot...
-
テキストボックスの値を変数に...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
i++と++i ってどう違うのですか?
-
数値計算??
-
python の 連鎖代入の文法
-
インクリメント演算子の前置(+...
-
「%」を使って、偶数か奇数かを...
-
【VBA】複合代入演算子
-
VBA 1行で複数の代入を行った...
-
datagridviewに行...
おすすめ情報
お付き合いくださいまして誠にありがとうございました。
えーと
真面目に参考書で調べましたところ!
演算子 機能 使用例
% 割り算の余り a=B%C;
とありまた。
以上の参考書の「使用例」の意味がよくわかりません! 「機能」の
”割り算の余り”ならば
「使用例」の”a=B%C;”を数字の置き換えた場合ご説明をしてくださるお
方がおられましたらご教授をお願いいたします。
基本で、躓く場となりかねません!基本がわかっていないとやっぱり行き詰
りますからね・・・ 誠にご恐縮で申し訳ございませんが新春早々からの
”暴言的なご回答”は、お控えくださいませ^^
お付き合いのほどを何トドよろしくお願い申し上げます
スーパーレスポンスのご回答誠ありがとうございました。
せっかくのご回答ですので、あわてずじっくり海馬から大脳に浸透させたいと存じます。
ご解決までしばらくお待ちくださいませ^^
PHP等、昨年は大変お世話になりました。本年も昨年同様よろしくお願いいたします。
本年後期からは、はまだわかりませんが洋上から電波を飛ばしているかもしれません(笑い)
今朝開いたら、みなさからたくさんのご回答をいただいおりました^^
ありがとうございます。
手が空き次第じっくり読んで海馬~大脳へ情報の伝達を試みます。
しばらくお待ちくださいませ^^
ありがとうございます。
==は代入ではなく、比較です。0と同じかどうか判定しています。
そうでした。!
参考書には
==は”比較演算子の種類”で”等しい”
=が”代入”でしたので あー勘違いでした。
その角度から紐解いていくと何となく見えてきそうな気がします。
しばらくお待ちくださいませ。
%意味ですが、ほかの参考書には、
%の意味でたとえば→a=b%c→bをcで割った余りをaに代入(整数型のみ有効)
if( a % 2 == 0 ){・・はもしa÷2のあまりは0と等しいのだから
偶数となり そのほかだったらelseに回され、奇数となり・・・
間違いないでしょうかね^^