ここから本文です

どなたかfor分とwhile分の繰り返しのプログラムの作成をお願いできないでしょうか

アバター

ID非公開さん

2010/5/1922:56:49

どなたかfor分とwhile分の繰り返しのプログラムの作成をお願いできないでしょうか

お願いします。

------------------------------

繰り返し[for分]

1から8までの階乗の表を作成すると同時に、
1! + 2! + ・・・(省略)・・・+ 7! 8!
を求めて表示するプログラムをかきなさい。

1! = 1
2! = 2
3! = 6
(中略)
7! = 5040
8!=40320

1! + 2! + ・・・+8! = 46233

------------------------------

繰り返し([while文/do-while文]

正整数sをキーボードから入力し、
1 + (1/2) + (1/3)+ ・・・(1/n)≧ s
となる最小のnを求めるプログラムを作成せよ。


------------------------------

閲覧数:
185
回答数:
4
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

nek********さん

2010/5/2000:26:13

#include<stdio.h>
/*Compiled by Visual C++ 2010 Express Edition*/
int main(){
int fact = 1;
int foo = 0;
for(int i = 1; i < 9; i++){
fact *= i;
foo += fact;
printf("%d! = %d\n", i, fact);
}
printf("1!+2!+...+8!=%d\n", foo);

int n = 0;
double s = 0;
double bar = 0;
scanf("%lf", &s);
while(bar < s){
bar += (double) 1.0 / ++n;
}
printf("%d\n", n);
return 0;
}

/*
@papiconuさん 頑張って勉強してください。
@kuri_275さん @ii3pvy63さん それだとs=1の時n=2になりません?
@jiheiさん そんなプログラムを初心者が書いたらバレますwww。
*/

アバター

質問した人からのコメント

2010/5/22 09:30:27

ありがとうございました。
大変参考になりました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

kur********さん

編集あり2010/5/1923:57:48

Cでいいですか?

int i,j,k[8],l=0;
for(i=0;i<8;i++){
k[i] = 1;
}
for(i=1;i<9;i++){
for(j=1;j<i+1;j++) {
k[i]*=j;
}
printf("%d! = %d¥n",i,k[i]);
}
for(i=0;i<8;i++){
l+=k[i];
}
printf("1! + 2! + ... + 8! = %d¥n",l);

---------------------------------------------
int n=1;
double add = 0;
while(add < s){
add += (double)1/n;
n++;
}
sにstdinから値入れてね。

こんな感じ?間違ってるかも。

ii3********さん

2010/5/1923:56:49

繰り返し[for分]
#include <stdio.h>

int fact(int n);

int main() {
int max = 8;
int i, ret, sum;

ret = 0;
sum = 0;

for (i = 1; i <= max; i++) {
ret = fact(i);
printf("%d! = %d\n", i, ret);
sum += ret;
}

for (i = 1; i <= max; i++) {
if (i < max) {
printf("%d! + ", i);
} else {
printf("%d! = ", i);
}
}
printf("%d\n", sum);

return 0;
}

int fact(int n) {
int i, ret;
ret = 1;
for (i = n; i > 0; i--) {
ret *= i;
}
return ret;
}


繰り返し[while文]
#include <stdio.h>

int main() {
int s = 0;
double n = 1;
double sum = 0.0;

scanf("%d", &s);

while (sum < s) {
sum += 1 / n;
n++;
}
printf("n = %d", (int)(n - 1));

return 0;
}


繰り返し[do-while文]
#include <stdio.h>

int main() {
int s = 0;
double n = 1;
double sum = 0.0;

scanf("%d", &s);

do {
sum += 1 / n;
n++;
} while (sum < s);
printf("n = %d", (int)(n - 1));

return 0;
}

jih********さん

編集あり2010/5/2001:22:36

繰り返し文はややこしいですね。 でも、C言語の基礎中の基礎なので今のうちに習得しておいて下さい。 で、本題ですがシンプルで行数が少ないコードを作りましたのでレポートに写すときにとても楽だと思います。 プログラムは以下を参考にして下さい。

For文の方は変数mに8以外の数字を入れれば他の数字にも対応できます。 ただし計算結果がintの範囲内に収まること。


・繰り返し[for文]
1から8までの階乗の表を作成すると同時に、
1! + 2! + ・・・(省略)・・・+ 7! 8!
を求めて表示するプログラムをかきなさい。
--------------------------------
#include<stdio.h>
void main(){
int i=1,s,j,g=0,m=8;
char *f;
for(;i<=m;printf("%d!=%d\n",i,s),g+=s,i++)for(j=s=1;j<=i;s*=j++);
printf("\n\n");
for(i=1;i<=m;f=i==1?"":" + ",printf("%s%d!",f,i),i++);
printf("=%d\n",g);}
--------------------------------


繰り返し([while文/do-while文]

正整数sをキーボードから入力し、
1 + (1/2) + (1/3)+ ・・・(1/n)≧ s
となる最小のnを求めるプログラムを作成せよ。
--------------------------------
#include<stdio.h>
void main(){
double t=0;
int i=0,b;
printf("整数値="),scanf("%d",&b);
do t+=(1.0/++i);while (t<b);
printf("n=%d\n",i);}
--------------------------------

繰り返し文はややこしいですね。 でも、C言語の基礎中の基礎なので今のうちに習得しておいて下さい。...

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる