• ベストアンサー

do while 文の使い方

#include<stdio.h> main() { int i; do{ scanf("%d",&i); }while(i%6==1,2,3,4,5); } だと6の倍数打っても終わらないのですが、 include<stdio.h> main() { int i; do{ scanf("%d",&i); }while(i%6!=0); } } だと6の倍数を入力すれば終了します。 やはり、「1,2,3,4,5」という表現ではだめなのでしょうか? 

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

(i%6==1 || i%6==2 || i%6==3 || i%6==4 || i%6==5) という表現なら大丈夫です。

msnaruo
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>やはり、「1,2,3,4,5」という表現ではだめなのでしょうか? ダメです。 >}while(i%6==1,2,3,4,5); ちなみに、条件式として上記の様に書くと… i%6==1を評価、","で次の式を評価…と繰り返し、最後の式の評価が生きることになります。 ということで「5」は真(0以外は真)となります。 他の質問でもそうですが…もう少し基本をしっかり勉強された方がよいでしょう。

関連するQ&A

  • while doについて

    九九の表で、forの2重のプログラムは作成できたのですが、whileとdo~whileを使って書き直すやり方がわからないのです。 どうか教えてください。お願いします。 #include <stdio.h> main() { int i,j; for(j = 1; j <= 9; j++){ for(i = 1; i <= 9; i++) printf("%3d", j*i); printf("\n"); } }

  • while文の作成について

    キーボードに整数を打ち込み、0を打ち込むと終了し、その合計を出すプログラムを以下のように作りました。 #include<stadio.h> int main(void){ int num=0 int sum=0 printf("整数を入力"\n"); do{ scanf("%d",&num); sum +=num; }while(num); printf("合計は%dです。\n",sum); returen 0; } 次に負の値が入力されるまで整数を読み込み続け、その合計をを求めるプログラムを作りたいのですが、whileのところを }while(num>=0); としてみたのですが、うまくいきません。また分かり易くするため、入力した整数の個数も表示できるようにしたいです。どうすればよいでしょうか。詳しい方、教えてください。

  • do while文の条件

    do while文の条件にprintfを使う場合、これはありなんでしょうか? 内容:0が入力されていたら、whileのprintfを実行してからdoに戻る。0以外ならprintfを実行しないで処理を抜ける。 int i; do { printf("0以外の数字を入力してください。\n"); scanf("%d",&i); }while(i == 0 && printf("まじめに入力してください。\n"));

  • scanf関数について

    scanfで数字を入力し「CTRL+D」で入力終了となるプログラムを考えています. 調べてみると以下の様なプログラムでは入力終了となります. #include <stdio.h> int main(void) { int a[256]; int i = 0; while(1) { printf("Input%d = ", i); if ( scanf("%d", &a[i]) == EOF || i > 255) { break; } i++; } return 0; } しかし,次の様にすると「CTRL+D」では終了しません. #include <stdio.h> int main(void) { int a[256]; int i = 0; while(1) { printf("Input%d = ", i);   scanf("%d", &a[i]); <-----追加 if ( a[i] == EOF || i > 255) {   <-----変更 break; } i++; } return 0; } この場合は,環境がUNIXのため「-1」と入力すると終了します. 2種類の違いが分かりません. 教えてもらえないでしょうか?

  • C言語のwhile文はネストできますか?

    「*」を使用して、n列、m行の四角を表示させるプログラムを考えました。 --------------------------------------------------------------------------------------------- #include<stdio.h> int main(void) { int i=0,j=0,n,m; printf("n入力:"); scanf("%d",&n); printf("\nm入力:"); scanf("%d",&m); printf("\n"); while(i<m){ while(j<n){ printf("*"); j++; } printf("\n"); i++; } return 0; } --------------------------------------------------------------------------------------------- しかし、1行分しか表示されません。 n=2、m=2の場合 ----------------- n入力: m入力: ** ----------------- としか表示されません。 whileのネストが悪いのでしょうか? それとも、初歩的なミスがあるのでしょうか?

  • while文を使った問題なのですが・・

    はじめまして。 C言語初心者です。 while文のところまでやっとたどり着きましたが、次の問題がどうしても解くことができません。 ********************** 整数を入力し、入力された整数の数だけ「*」を横一列に表示し、最後に改行するプログラムを while 文を使って作りなさい。 但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。 ********************** #include<stdio.h> int main(void) { int a; scanf("%d", &a); while(a!==0){ printf("%d*\n", a); } } こんな感じでつくってみたのですが、whileの条件部分がさっぱり分かりません。 int a の数字文だけ、*で表示する、というのも方法が思いつきません。 アドバイス、お願いいたします。

  • while文でつまづいています

    C言語はじめたばかりのものです。 単細胞生物が翌日(2日目)には分裂して2細胞になるとする。1匹もしなないとすると 1万匹を超えるのは何日目になるかを算出するプログラムを作成しています。 「15日目に16384個の細胞数になります。」という結果を出したいのですが、 「1日目に1個の細胞数になります。」と表示され、1日目までしか計算されません。 まだscanfやiprintf、ifやwhileぐらいしか習っていません。 どう直したらよいでしょうか? #include<stdio.h> #include<math.h> main() { int n; /*細胞数*/ int d = 1; /*日数*/ while(n > 10000) { n = pow(2,d-1); d = d + 1; if(n > 10000) break; } printf("%d日目に%d個の細胞数になります。",d,n); }  

  • while文について、c言語です。

    ぼくはプログラム始めたばかりです。ミスを見つけられた方、ご指導お願いします。 正整数nを入力して、nの階乗をもとめるプログラムを作りたいのですが、実行結果がいつも1になります。どこがおかしいか教えてください。以下のプログラムです。 #include <stdio.h> int main(void) { int i, n, s; printf("n = ?"); scanf("%lf", &n); s = 1; i = 1; while(i <= n) { s = s * i; i = i + 1; } printf("s = %3d\n", s); return 0; }

  • scnafの戻り値を使って処理を中止したい。

    何も標準入力より入力しなかったとき、scanfの戻り値は-1なので、-1じゃないとき処理継続にしても 期待どおりの結果が得られませんでした。どうしたらよいでしょうか? #include <stdio.h> int main(void){ int i; int seisu[10]; i = 0; while (i < 10 && -1 != scanf("%d", &seisu[i])) { i++; } }

  • while文 直前に入力した数の和

    まず,整数を一つ入力する。 次に,0が入力されるまでの間,今入力した数と直前に入力した数の和を出力し続けるプログラムを書きなさい. > 4 > 5 9 > 91 96 > -8 83 > 0 という問題なのですが、何回やっても実行すると うまくいきません・・・。 プログラムを作ってみたんですが、 無限ループの状態になってしまいます・・・。 フィボナッチ数列というのを使ってみたのですが・・ #include<stdio.h> #include<conio.h> int main(void) { int i,n,fi=0.fi_1=1; printf("Data = "); scanf("%d",&n); while({ fi=fi_1+fi_2; printf("%d",fi); fi_2=fi_1; fi_1=fi; } getch(); return 0; } 初心者なので どなたか教えていただけませんか?

専門家に質問してみよう