[解決済み] 添加物持続性・添加物根源性プログラムが番号入力後に反応しない
質問
初級C言語プログラミングの授業で宿題が出ました。
加法性とは、整数の桁数の和の性質である。桁の和を求め、その和に対して桁の和を行い、整数の1桁になるまで繰り返す。その繰り返しの回数が、その整数の加法的持続性である。例えば 次のような例です。
先頭の整数は1234
桁の和は1+2+3+4=10です。
整数は10になりました
その桁の和は 1 + 0 = 1 である。
整数が1桁になったら終了です。この最後の整数が加法性根
そのサイクル数が加法性持続性です。整数1234は加法性持続性が2(最初の和が10、次に2回目の和が1)である。最終的に到達する数字を整数の加法性根と呼ぶ。1234の加法性デジタルルートは1である。 というプログラムを書け。
正の整数を求めます。
与えられた整数が一桁の場合、加法性持続と乗法性持続を0、加法性根をそれ自身として報告します。
整数が 0 より小さい場合は、プログラムを終了する合図となります。
そうでない場合は、与えられた整数の加法的持続性と加法的根を求め、その結果をユーザに報告します。
ユーザーが終了するまで、プロンプトを表示し続けます。
これが私が考え出したコードです。
#include <stdio.h>
int main()
{
int num;
int pers = 0;
int res = 0;
int sig = 0;
int sum = 0;
int sum1 = 0;
for (sig = 0;sig >= 0;) {
printf("Please enter a positive integer to find the additive persistence, and the integer's additive digital root: ");
scanf_s("%d", &num);
if (num < 0) {
sig--;
break;
}
res = num;
sum = 0;
while((res>0)){
sum = sum + (res % 10);
res = num / 10;
if (res == 0) {
if (sum >= 10) {
res = sum;
sum = 0;
}
if (sum < 10)
pers++;
}
}
printf("\nThe additive persistence is %d and the additive root is %d\n", pers, sum);
}
return 0;
}
コンパイルして実行すると、scanf文の後、プログラムが何もしません。なぜこのようなことが起こるのでしょうか?また、この課題を成功させるためのアドバイスがあれば教えてください。 よろしくお願いします。
解決方法は?
この行を考えてみてください。
res = num / 10;
の値は?
res
ループの1回目の実行後?そして2回目の実行後は?プログラムをデバッグするためにそこにプリントすると
res
は常に同じ値を持ち、変化しない。これは無限ループで、おそらく次のようなときに未定義の動作が発生するまで続くでしょう。
sum
がオーバーフローしてしまいます。おそらく、代わりにこれが欲しかったのでしょう。
res = res / 10;
関連
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み】エラー:不明な型名'bool'
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み】警告:式の結果が未使用の場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み] テスト
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?