
C言語の問題です
1!からn!までの合計値を求めるnの範囲は(1以上10以下)
5を入力した場合153
このような問題で階乗を求めるプログラムはできたのですが総和を求めることができないので修正方法を教えてほしいです。
#include
int main
{
int n,sum=1,i;
printf("1以上10以下の整数を入力してください\n")
scanf("%d,&n);
if(n<1II n>10)
{
return 1;
}
i=1;
while(i<=n)
{
sum *= i;
i++;
}
printf("%d\n",sum)
return 0;
}
実行結果は5を入力したら120になってしまいます
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No.1
- 回答日時:
この問題で求めるのは、1!からn!までの合計値です。
つまり、1! + 2! + 3! + ... + n!を求める必要があります。修正するためには、以下のように変更することができます。
#include <stdio.h>
int main()
{
int n, sum = 0, i, fact = 1;
printf("1以上10以下の整数を入力してください\n");
scanf("%d", &n);
if(n < 1 || n > 10)
{
return 1;
}
for(i = 1; i <= n; i++)
{
fact *= i;
sum += fact;
}
printf("%d\n", sum);
return 0;
}
この修正したプログラムでは、forループを使って1からnまでの各数の階乗を求め、それらを合計しています。初期値としてsumを0に設定しています。また、各数の階乗は変数factに保存しています。最初にfactを1に設定し、ループ内でiを掛け合わせることで、各数の階乗を計算しています。
また、if文の条件式で、論理和(||)を使うべきところで、論理積(&&)を使ってしまっていました。修正したプログラムでは、条件式を正しく修正しています。
この修正後のプログラムを実行すると、5を入力した場合に153が出力されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列を使って魔方陣
-
#if 1 #elseの意味について
-
構文エラー";"が型の前にあり...
-
C言語 数字以外を入力させない...
-
計算結果がlong型以上になる場...
-
scanf関数を用いての加減乗除%...
-
c言語 プログラム
-
for文の中にswitch文はいれられ...
-
配列を関数に渡す方法
-
階乗のプログラム!!
-
C言語です
-
scanfが実行されません
-
C言語 マスターマインドゲーム...
-
2÷3などの余りについて
-
Enterキーを押されたら次の処理...
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
「指定されたキャストは有効で...
-
visualstudio C# テキストボッ...
-
マイナスからプラスへ転じた時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
配列を関数に渡す方法
-
プログラム
-
C言語の二分法のプログラムにつ...
-
C言語階乗の総和を求める
-
C言語です
-
初心者です。for文、if文を使っ...
-
C言語 数字以外を入力させない...
-
配列を使って魔方陣
-
C言語で電卓を作成する。
-
C言語初心者です。次の問題で質...
-
scanfが実行されません
-
getcの改行判定
-
直角三角形を表示するプログラム
-
C言語 マスターマインドゲーム...
-
while文について、c言語...
-
C言語のwhile文を使った素数判...
-
行列をべき乗させるプログラム
おすすめ情報