do文ループでのバグ
あるサイトからお借りしたソースコードを改造したのですが、コンパイルするとdo文中のfor文が繰り返されず、do文直後の文と最後の文しか実行されないバグが起きています。
家にある本を見てもわからず、どうすればいいのでしょうか。
※試しに1つ目のfor文の}の場所を調整してみましたが、どうしてもfor文の繰り返しができませんでした。
あるサイトのURLはhttp://saeki-ce.xsrv.jp/C_src/soinsuu01.htmlです。
そのままのソースコードでは問題なく動作します。
発生している問題・エラーメッセージ
★素因数分解★ 分解する整数: 12 素因数:2 乗数:2 素因数:3 乗数:1 1:やめる 0:もう一回:0 ★素因数分解★ 分解する整数: 1:やめる 0:もう一回:
該当のソースコード
C
1/****************/ 2/* 素因数分解 */ 3/****************/ 4#include <stdio.h> 5#include <stdlib.h> 6 7int main(void) 8{ 9 char c[128]; 10 int n0,n; // 整数 11 int ns=2; // 素因数 12 int j; // 乗数 13 int retry; // 繰り返し 14 15 do{ 16 printf("\n★素因数分解★\n"); 17 printf("\n分解する整数: "); fflush(stdout); 18 gets(c); n0=atoi(c); // 整数を入力 19 20 for( n=n0,ns=2; n>=ns; ns++ ) 21 { 22 for( j=0; n%ns==0; j++ ) // 割り切れる間繰り返す 23 { 24 n/=ns; 25 } 26 27 if ( j==0 ) continue; // 1回も割り切れなかった 28 29 printf("素因数:%d 乗数:%d\n",ns,j); 30 } 31 printf("1:やめる 0:もう一回:"); scanf("%d", &retry); 32 } while(retry == 0); 33 34 return 0; 35}
試したこと
}の位置を変えた
補足情報(FW/ツールのバージョンなど)
gcc 6.3.0
回答3件
あなたの回答
tips
プレビュー