• ベストアンサー

間違いを指摘して頂けませんか?(切実)

utf7の回答

  • utf7
  • ベストアンサー率29% (11/37)
回答No.2

#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文を分けています。

関連するQ&A

  • ヒントを教えて欲しいです

    2と1が同時に表示されてしまうのです。 キーボードから2個の整数を読み込み、それらの和と差がともに偶数であれば整数の2を表示し、いずれか一方のみが偶数の場合は1を表示し、それ以外の場合は整数の0を表示するプログラムを作れ #include<stdio.h> main() { int A,B; printf("Enter an integer:"); scanf("%d",&A); printf("Enter an integer:"); scanf("%d",&B); if((A+B)%2==0,(A-B)%2==0){ /* 偶数ならば */ printf("2\n"); } if((A+B)%2==0){ /* 偶数ならば */ if((A-B)%2==0) /* 偶数ならば */ printf("1\n"); } else{ /* 奇数ならば */ printf("0\n"); } }

  • C++のプログラム

    C言語の問題を授業で出されたのですがさっぱり分かりません。教えて下さい。 1.キーボードから整数nを入力して、1+2+…+nを求めるプログラムを作れ。 2.キーボードから整数nを入力して、1*2*…*nを求めるプログラムを作れ。 3.キーボードから10個の実数を入力し、それらの平均を求めるプログラムを作   れ。 4.円錐の体積を求めるプログラムを作れ。 注:円錐体積V=π*r*r*h/3 5.キーボードから文字列を入力し、それを逆さまにするプログラムを作れ。例えば、”dog”を逆さまにすると”god”になる。 6.キーボードから一つの整数を入力し、それは奇数か偶数かを判断するプログラムを作れ。 ちなみに6番は /* iftst.c */ #include <stdio.h> void main(void) { int n; printf("n="); scanf("%d",&n); if(n%2 == 0){ printf("偶数です\n"); } else{ printf("奇数です\n"); } } で合っているのでしょうか?

  • srand(time(NULL))の使い方

    C言語の勉強中で「ランダムな整数値を作成し、その数値が偶数か奇数かを判定するプログラムをif~else 構文を使って作成」したいのですが下記のプログラムでやってみたのですがまだまだ知識不足で完成しません。知識をお借りできればと思っていますのでどなたか教えてください。 #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void) { { int = i; i = rand(); srand((unsigned)time(NULL)); printf("%d\n",rand()); } if(i % 2 == 0) { printf("偶数である:\n",i); } else { printf("奇数である:\n",i); } return 0; }

  • 間違いが理解できない!!

    下に投稿を行ったばかりですが 質問させてください。 #include<stdio.h> int main(void) { int a; a=3 if(a==a/2*2){ printf("%d is EVEN \n",a); }else{ printf("%d is ODD \n",a); }return(0);} 課題文 「上記のプログラムを改造して、 aが正の場合はPLUSを、 aが負の場合はMINUSを、 aがゼロの場合はZEROを 表示するプログラムを作成し、 実行しよう。」 とあったので、私は #include<stdio.h> int main(void){ int a; printf("変数aに数字を入力してください\n"); printf("a="); scanf("%d",&a); if(a>0){ printf("%d is plus\n",a); }else if(a==0){ printf("%d is zero\n",a); }else{ printf("%d is minus\n",a); } return(0); } と作成しました。 しかし、評価はFAIRでした。(PASS,FAIR,RETRYがあり、 FAIRは「課題を取り違えているがOK.ただし満点じゃない」です) なぜかと言うと、習っていないscanfを使ったかららしく、 課題と違うからだそうです。 習っていないものを使ってはいけないなど聞いてもいませんし、 (私はC言語の知識がある程度あったのでscanfを使いました) 納得いきません。 もし、課題文が、 「上記のプログラムの if文以下を改造して・・・」 となっていたら、私のプログラムは間違いです。 しかし、改造してとしか書いてなかったので、 間違いではないと思います。 皆さんはどうおもいますか?

  • C言語!プログラム書いたのですがエラーです!

    課題内容 キーボードから数字を入力してその値までの合計を表示する。 さらに入力した値が偶数なら0から入力した値までのすべての偶数の和を 入力した値が奇数なら1から入力した値までのすべての奇数の和を表示するプログラム。 #include<stdio.h> int main(void) { int i, n, sum; sum=0; scanf("%d",&n); printf("入力値:%d\n", n); if(n%2 = 0) { for(i=0;i<=n;i+=2) { sum=sum+i; } printf("合計値:%d\n",sum); } else { for(i=1;i<=n;i+=2) { sum=sum+i; } printf("合計値:%d\n",sum); } return(0); } これでコンパイルすると10行目に左辺値が必要とでます。 どうすればよいでしょうか? 教えてください。よろしくお願いします。

  • C言語でのプログラミングの問題が分かりません。

    C言語でのプログラミングの問題が分かりません。 課題で出た問題なのですがわからないのでおしえてください。 問題は 値を入力します(nとします) nが1でない間、以下の処理を繰り返します。  (1)nが偶数のとき、nを2で割り、その答えを新しいnとします。  (2)nが奇数のとき、nを3倍してから1を加え、その答えを新しいnとします。 というものです。 if文を使い計算はできたのですが、「繰り返し」と「新しいnとする」部分が分かりませんでした。作成したプログラムを載せるので手直しお願いいたします。 int n,x,y; printf("整数を入力"); scanf("%d",&n); while (n>1) if (n%2) printf("%d",x=n*3+1); else printf("%d",y=n/2); putchar('\n'); return(0); です。このままだと無限ループしてしまうので繰り返しの条件が悪いみたいです。 それと、答えをnに入れたいのにx、yを使ってしまっています。 回答お願いします。

  • に対応する関数ヘッダがありませんと言って動きません

    に対応する関数ヘッダがありませんと言って動きません それと使っているコンパイラは visual C++ express editionです これが問題のプログラムです まだデバッグなどは終わってないのでその関数ヘッダに関することに重点を置いた 回答を期待しております #include <stdio.h> /*数当てゲーム*/ int main(void); { do{ int no,sum; printf("任意の数字を1から31から選んでください"); printf("その数は奇数ですか?-Yes...9/No...0\n"); scanf("%d",&no); sum=0; /*ある法則にしたがっての数当て*/ if(no==9) sum=sum++; printf("その数は2,3,6,7,10,11,14,15,18,19\n22,23,26,27,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d",&no); if(no==9) sum=sum+2; printf("その数は4,5,6,7,12,13,14,15,20\n21,22,23,28,29,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d",&no); if(no==9) sum=sum+4; printf("その数は8,9,10,11,12,13,14,15,24\n25,26,27,28,29,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d,&no"); if(no==9) sum=sum+8; printf("その数は16,17,18,19,20,21,22,23\n24,25,26,27,28,29,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d,&no"); if(no==9) sum=sum+16; printf("あなたの入力した数字は%dであっていますか?\nYes...9.No...0\n,sum"); scanf("%d,&no"); if(no==9) printf("あなたは正直者です"); else printf("あなたはひねくれ者かうそつきです"); printf("もう一度?Yes...9.No...0"); scanf("%d,&no"); }while(no==9); return(0); } どうぞよろしくお願いします

  • Cプログラムの条件文  if,else if ,elseについて教えてください。

     こんにちは。課題でどうしても解らないところがあるので教えてください。  次のプログラムは一桁の数(0~9)が偶数(EVEN)か奇数(ODD)かを表示するものです。  #include <stdio.h> main() { int num; printf("please enter a number[0~9]:"); scanf("%d",&num); if (num % 2 ==0) printf("%d is an EVEN. \n", num); else printf("%d is an ODD. \n", num); } というプログラムをコンパイルして実行すると、ちゃんと実行されるのですが、10以上の数や負数を入力しても動作してしまうんです。  そこで0~9の範囲以外の数が入力されていないかを確認して、その場合を偶数、奇数の判断や表示をせず、エラーメッセージだけを表示して終了するプログラムに書き換えなくてはならないのですが、まず  (1)判断する条件式(変数numの内容が0~9の範囲にあるか)で、num >= 0 && num <= 9 をどこに入れればいいか。  (2)please enter a number[0~9]: 8 8 is an EVEN.  (←例えば8を入れると普通こうなるのですが)   please enter a number[0~9]:12   ERROR:12 is in out of range!!  (←0~9以外ののものだったら、この様にエラー表示にしたいのです。  私が考えたプログラムは  #include <stdio.h> main() { int num; printf("please enter a number[0~9]:"); scanf("%d",&num); if (num % 2 ==0) printf("%d is an EVEN. \n", num); if else printf("%d is an ODD. \n", num); else(num >= 0 && num <= 9) printf("ERROR:%d is in out of range!! \n",num); } という風に考えたのですがコンパイルできません。プログラミング初心者なので、書いている内容も解りにくいんですが、どうかよろしくお願いします。

  • C言語で困っています...

    入力した数値の列だけ○と×を縦に、段々になるように表示する (最後の行は×にならなければいけない)プログラムを作成しています。 (実行例) ○と×を表示します。何列?:10            ×           ○×          ×○×         ○×○×         ×○×○×       ○×○×○×      ×○×○×○×    ○×○×○×○× ×○×○×○×○× ○×○×○×○×○× 途中までプログラミングできたのですが、 偶数の数値を入れたときはきちんと最後の行は×になっても 奇数の数値を入力すると○が最後の行になってしまい、うまくいきません。 どこがだめなのでしょうか? どなたか教えてください。 /* 入力した数値の列だけ、○と×を縦に、   段々になるように表示する(最後の行は×になる) */ #include <stdio.h> int main(void) { int i, j, n; printf("○と×を表示します。何列?:"); scanf("%d", &n); for (i=0; i<n; i++){ for (j=0; j<n; j++){ if (j >= (n - 1) - i){ if (j % 2 == 0) printf("○"); else printf("×"); } else printf(" ");//全角スペース } printf("\n"); } return 0; }

  • 素数判定の繰返し

    繰返し素数判定を行ない、CtrlーDで終了するプログラムをつくっています。 まず繰返しなしの素数判定プログラムを作り #include<stdio.h> int main(void) { int a,i; printf("自然数を入力:"); scanf("%d",&a); if(a<=0) printf("入力エラーです。\n"); else if(a==1) printf("1は素数ではない。\n"); else{ for(i=2; i*i<=a; i++){ if(a%i==0) break; } if(i*i>a) printf("%dは素数です。\n",a); else printf("%dは素数ではない。\n",a); } return(0); } これはちゃんとできたのですがそれを繰り返すことができません。 #include<stdio.h> int main(void) { int a,i; printf("自然数を入力:"); scanf("%d",&a); while((a=getchar())!=EOF){ if(a<=0) printf("入力エラーです。\n"); else if(a==1) printf("1は素数ではない。\n"); else{ for(i=2; i*i<=a; i++){ if(a%i==0) break; } if(i*i>a) printf("%dは素数です。\n",a); else printf("%dは素数ではない。\n",a); } printf("自然数を入力:"); scanf("%d",&a); } printf("プログラムを終了します。\n"); return(0); } これは訳わからないことになっちゃいます。。。 どうしたらいいんでしょうか??