- ベストアンサー
間違いを指摘して頂けませんか?(切実)
私は大学で春からプログラミングの基礎を学び始めたプログラミング初心者です。 今、if関数のネストについて習っていて、if関数のネストを利用したプログラム作成の課題が出て、一応書いてはみたのですがどうしても上手くいきません。下に課題の内容と私の書いたプログラムを書いておきますので、間違っている箇所を指摘、修正して貰えませんか?宜しくお願い致します。 【課題】 次の項目に従ってプログラムを作成せよ。 (1)整数型の変数noを宣言 (2)「整数を入力してください。」と表示して改行 (3)キーボードから入力された値を変数noに代入 (4)入力された値が ・偶数で4で割り切れる数なら「整数○は偶数で4で割り切れます。」 ・偶数で4で割り切れない数なら「整数○は偶数だけど4で割り切れません。」 ・奇数で3で割り切れる数なら「整数○は奇数で3で割り切れます。」 ・奇数で3で割り切れない数なら「整数○は奇数だけど3で割り切れません。」 の○の位置にnoの値を当てはめて表示した後、改行 #include <stdio.h> main(void) { int no; printf("整数を入力してください。\n"); scanf("%d",&no); if(no/2==0,no%4==0){ printf("整数%dは偶数で4で割り切れます。\n",no); }else{ if(no/2==0,no%4!==0){ printf("整数%dは偶数だけど4で割り切れません。\n",no); }else{ if(no/2!=0,no%3==0){ printf("整数%dは奇数で3で割り切れます。\n",no); }else{ printf("整数%dは奇数だけど3で割り切れません。\n",no); } } } } ※なお、上のプログラムは全て左詰めになってしまっていますが、質問する上で表示出来なかっただけですので…実際にはちゃんと然るべき箇所にTabキーによる余白は入れてあります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No4です。 >「かつ」の演算子についてはまだ習っていないのですが、>&&を使わない場合は回答者No.3の方が書いているように >if(no%2==0){ >if(no%4==0){ >とすれば良いのでしょうか? その通りです。&& を使わないのであればNo3の方のようにしてください。 if (偶数か){ if (4で割り切れるか){ 4で割り切れる場合のケース }else{ 4で割り切れない場合のケース } }else{ if (3で割り切れるか){ 3で割り切れる場合のケース }else{ 3で割り切れない場合のケース } }
その他の回答 (5)
- khurata
- ベストアンサー率40% (54/134)
C言語の記述自体の回答はすでに出ていますので、別の誤りを指摘致します。 if は C の「文」であって、「関数」ではありません。仮に if という関数を作成したとしても、if という綴りは C において予約語ですので、関数として無効になります。 C は関数型言語と呼ばれますが、文と関数は明確に区別して学ぶ方が良いと思います。
- tatsu99
- ベストアンサー率52% (391/751)
例えば if(no/2==0,no%4==0){ ですが、no/2==0 かつ no%4==0 のつもりで使用されていると思われますが、そのようには動作しません。 if(no/2==0 && no%4==0){ としてください。 && が 「かつ」の演算子です。 他の場所も同様です。
補足
「かつ」の演算子についてはまだ習っていないのですが、&&を使わない場合は回答者No.3の方が書いているように if(no%2==0){ if(no%4==0){ とすれば良いのでしょうか?
- edomin
- ベストアンサー率32% (327/1003)
#1です。 if関数のネストが問題でしたね。 if(no%2==0){ if(no%4==0){ printf("整数%dは偶数で4で割り切れます。\n",no); }else{ printf("整数%dは偶数だけど4で割り切れません。\n",no); }else{ if(no%3==0){ printf("整数%dは奇数で3で割り切れます。\n",no); }else{ printf("整数%dは奇数だけど3で割り切れません。\n",no); } }
- utf7
- ベストアンサー率29% (11/37)
#include <stdio.h> main(void) { int no; printf("整数を入力してください。\n"); scanf("%d", &no); if((no%2 == 0) && (no%4 == 0)){ printf("整数%dは偶数で、4で割り切れます。\n", no); } else{ if((no%2 == 0) && (no%4 != 0)){ printf("整数%dは偶数だけど4で割り切れません。\n", no); } } if((no%2 == 1) && (no%3 == 0)){ printf("整数%dは奇数で、3で割り切れます。\n", no); } else{ if((no%2 == 1) && (no%3 != 0)){ printf("整数%dは奇数だけど3で割り切れません。\n", no); } } } 動作確認はしていませんが、上記が正しい記述です。 #1さんの指摘内容もそうですが、条件で「かつ」というのも"&&"になっていないところも問題です。 なお上記のプログラムは、見やすいように3と4で割るif文を分けています。
- edomin
- ベストアンサー率32% (327/1003)
割り切れるかどうかが 「no/2==0」 で比較されている所が辺です。 例えば、no=4ならno/2は2になるはずです。 余りを求めるのと商を求めるのを混同しているようです。
お礼
色々と詳しく教えて頂き有難う御座いました。 tatsu99さんの回答を参考にしながらプログラムを修正して課題を進めたいと思います。お世話になりました。