• 締切済み

C言語について

次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

> scanf("%d",&n); > if(n%3==0){ >   printf("割り切れる\n"); > }else if(n%3==1){ >   printf("1余る\n"); > }else{ >   printf("2余る"); > } まぁこれでもいいのですが n % 3 を複数回実行している部分が無駄のように思います 3で割り切れるかなので 2回の判定ですが 10で割り切れるとなれば9回実行しなければなりません scanf("%d",&n); // これを追加 n = n % 3; if (n == 0){   printf("割り切れる\n"); } else {   printf("%d余る\n", n); } といった具合の方が効率がいいかも … # n余るの nを全角で表示したいとなるともう少し工夫が必要ですが

  • TinyPine
  • ベストアンサー率30% (719/2386)
回答No.1

これでは、0を入れた時に割り切れる、1の時に1余る、その他の時に2余るになってしまいます。 scanf("%d",&n); n = n % 3; <- これを入れる。 if(n==0){

marukozozo
質問者

補足

これではどうでしょう。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n%3==0){ printf("割り切れる\n"); }else if(n%3==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); }

関連するQ&A