C言語のプログラムを修正してほしいです

このQ&Aのポイント
  • C言語のプログラムを修正してほしいです。修正後のプログラムでは、キーボードから奇数値を入力して、1からその値までの奇数の総和を計算します。
  • 上記のC言語のプログラムを修正して、実行結果が1+3+5+...+nのnを入力してください→99をキーボードから入力すると、sum=2500となるようにしたいです。
  • C言語のプログラムを修正してほしいです。プログラムの修正内容は、キーボードから奇数値nを入力して、1からnまでの奇数の総和を計算するようにすることです。
回答を見る
  • ベストアンサー

C言語のプログラムを修正してほしいのですが

#include <stdio.h> int main(void) { int i, sum; sum = 0; for (i=1; i<=100; i++){ sum = sum + i; } printf("sum=%d\n", sum); sum = 0; i= 1; while (i <= 100) { sum = sum + i; ++i; } printf("sum=%d\n", sum); sum = 0; i = 1; do { sum = sum +i; ++i; } while (i <=100); printf("sum=%d\n", sum); return 0; } 上記のプログラムに修正を加えて、実行結果が 1+3+5+…+n の nを入力してください → 99をキーボードから入力(例) sum=2500 sum=2500 となるようにしたいです。 nはキーボードから奇数を入力します。 奇数値 nをキーボードから入力して、1からnまでの奇数の総和を 計算するプログラムです。 超暇なときにでも回答お願いします。

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

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.5

#3、4です。 #4で書きましたが、質問とは合っていないようです。 質問のプログラムを実行すると、 sum=**** sum=**** sum=**** と3行表示されますが、質問の後半では、 > 1+3+5+…+n の nを入力してください → 99をキーボードから入力(例) > sum=2500 > sum=2500 の2行しか表示させないんですよね? どのループを削るか判らないので、適当に削ってください。 質問からは読み取れません。

その他の回答 (4)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.4

#3です。 もしかして、「for」「while」「do」のループを使うって言うこと? #include <stdio.h> int main(void){   int i, j, sum;   sum = 0;   printf("1+3+5+…+n の nを入力してください>");   scanf("%d", &j);   if(j%2 == 1){     for (i=1; i<=j; i+=2){       sum = sum + i;     }     printf("sum=%d\n", sum);     sum = 0;     i= 1;     while (i <= j) {       sum = sum + i;       i+=2;     }     printf("sum=%d\n", sum);     sum = 0;      i = 1;     do {       sum = sum +i;       i+=2;     } while (i <=j);     printf("sum=%d\n", sum);   }else{     printf("奇数ではありませんでした。");   }   return 0; } やっぱり「修正」じゃない…。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.3

#include <stdio.h> int main(void){   int i, j, sum;   sum = 0;   printf("1+3+5+…+n の nを入力してください>");   scanf("%d", &j);   if(j%2 == 1){     for (i=1; i<=j; i=i+2){       sum = sum + i;     }     printf("sum=%d\n", sum);   }else{     printf("奇数ではありませんでした。");   }   return 0; } こういうのを「修正」とは言わない。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

プログラムやるなら、これくらいの応用力は欲しいところなんですが.... ・このプログラムは、同じ処理をする3つの部分に分けられる、というのは理解してますか?(正確にはまったく同じではありませんが) ・その処理内容は理解してますか?変数sum,iの役割りは理解できていますか? ・上が理解できていれば、  どこまで足すかを、100ではなく変数nにする方法  1,2,3と「1から一つずつ増える値」ではなく、1,3,5と「1から二つずつ増える値」にする方法 はすぐにわかると思うのですがどうでしょうか? まずは「int i, sum;」のところを int i, sum, n; n=99 ; とでもして、変数nまでの奇数を足すプログラムに変更してみましょう。 キーボード入力は実は非常にやっかいなことです。実はCの標準には「キーボードから数値を入力する」機能はありません。 なんですが、とりあえずは、入門書や入門サイトの最初の方に載っている、scanf関数を使うものでいいでしょう。

回答No.1

で、なにがわからんのですか?

関連するQ&A

  • C言語!プログラム書いたのですがエラーです!

    課題内容 キーボードから数字を入力してその値までの合計を表示する。 さらに入力した値が偶数なら0から入力した値までのすべての偶数の和を 入力した値が奇数なら1から入力した値までのすべての奇数の和を表示するプログラム。 #include<stdio.h> int main(void) { int i, n, sum; sum=0; scanf("%d",&n); printf("入力値:%d\n", n); if(n%2 = 0) { for(i=0;i<=n;i+=2) { sum=sum+i; } printf("合計値:%d\n",sum); } else { for(i=1;i<=n;i+=2) { sum=sum+i; } printf("合計値:%d\n",sum); } return(0); } これでコンパイルすると10行目に左辺値が必要とでます。 どうすればよいでしょうか? 教えてください。よろしくお願いします。

  • C言語 繰り返しの問題

    C言語の初心者です。 キーボードから値を入力して、1から入力された値までの奇数の和を求めて出力するプログラムを作成します。以下のように組んでみましたが、全然うまくいきません。誰か教えていただけませんか? #include<stdio.h> int main(void) { int i,n,sum; sum=0; printf("入力値:",n); scanf("%d",&n); if(n<=0) { printf("\n合計値:0\n"); } else { printf("入力値:\n",n); for(i= 1; i<= n; i=i+2) { if(n%2=1) { sum=sum+i; } } } printf("\n合計値\n",sum); }

  • C言語プログラム

    したのプログラムでgetch()の代わりにscanf()を使って、入力した数が負なら終了、正なら"次の数を入力してください"と表示してループを続けるプログラムを作りたいのですが、どこを変えればよいのですか? #include<stdio.h> #include<conio.h> void main() { int i=1,sum=0; char c='m'; while(c!='e')//eでない限りwhileループを実行する { sum=sum+i; printf("\n1 kara %d madewo tasuto %d desu.\n",i,sum); i++; printf("nanikakeywo oshitekudasai.owaru tokiha 'e'\n"); c=getch(); } printf("loopwo nukemashita\n"); getch(); }

  • C言語でmからnまでの合計を求めるプログラム

    これで動かないのですが、何が違っているのか、教えていただけますか。 #include <stdio.h> int main(void) { int m, n, sum, i, w ; printf("mからnまでの合計を求めます\n\n"); printf("m >> "); scanf(" %d", &m); printf("n >> "); scanf(" %d", &n); sum=0; if(m>n){ w=m; m=n; n=w; } sum=0; i=m; while(i<=n){ sum=sum+i; i=i+1; } printf("%d から %d の合計 = %d\n",m,n,sum); return 0; }

  • C言語のプログラム添削お願いします

    #include<stdio.h> int main(void) { int a[4]; int i=0; int n; int sum=0; printf("正数を入力してください\n"); while(i<=4) {scanf("%d",&n); if(n>=0) {a[i]=n; sum=sum+a[i]; i++; } else{printf("正数を入力してください");} } printf("正数の合計値は%dです",sum); printf("正数の平均値は%lfです",(double)(sum/5)); return(0); } 上記は正数のみ配列に保存し、その合計と平均を表示するプログラムを 製作しようとして書いたものですが次のような問題点があり正常に機能しません。 (1)a[i]=n;をn=a[i];と置き換えると不正な値が表示される (2)平均値の小数点以下の値がおかしい   (例)8+8+8+9+8と入力し合計値41に対し、平均値が8.000000 解決法が分からず困っています。どなたかお力添えお願いします。

  • C言語に詳しい方、教えていただけませんか?

    n個の実数をキーボードから入力して総和を求めるプログラムを書いたのですが、結果が+NANとなってしまいます。 また、値をキーボードから入力する際、小数にするとすぐにプログラムが終了してしまいます。例えば、a[0]=1.0とすると、 a[1]=a[2]=a[3]=a[4]=合計は+NANと表示され終了してしまいます。 ちゃんと小数を入力でき、結果も正しく表示されるように間違いを指摘していただけませんか?よろしくお願いします。 (nは5としました) #include <stdio.h> #define n 5 double souwa(double a[n]); int main(void) { int i; double sum, a[n]; for(i=0; i<=n-1; i++){ printf("a[%d] = ",i); scanf("%d",&a[i]); } sum = souwa(a); printf("合計は%f\n",sum); return 0; } double souwa(double a[n]) { int i; double sum = 0.0; for(i=0; i<=n-1; i++){ sum += a[i]; } return sum; }

  • C言語のソースコードについて教えてください。

    以下のソースコードを学習用C言語開発環境で行ったのですが、 『ファイル「C:/Users/ユーザー名/AppData/Local/EasyIDEC/project/タイトル/main.c」の 「41行目」で記述エラーを発見しました。 「,」を付け忘れています。』 という、コンパイルエラーが表示されました。 何度も見直したのですが、よくわかりません。 #include <stdio.h> int main(int argc, char *argv[]) { char answer ; answer = 'n' ; while(answer =='n') { int input ; input = 0 ; int add ; add = 1 ; int sum ; sum = 0 ; printf("数値を入力して下さい。:") ; scanf("%d", &input ) ; int i ; i = 0 ; while(i < input) { sum =sum + add ; printf("\n%d",sum) ; i++ ; add++ ; } printf("\n1から%dまでの総和は、%dです。" , input , sum) ; while(1) { printf("\n終了しますか? y/n:") ; scanf(" %c , &answer) ; if( (answer != 'y') && (answer != 'n') ) { printf( "y or nを入れてください。") ; } else { break ; } } } return 0 ; }

  • C言語の、階乗を使うプログラムの問題を教えて下さい

    C言語の、このプログラムを作るのが分かる方、教えて下さい。階乗を使う問題です。 「キーボードで整数aを入力するとn!>aとなるときの最小のnを出力するプログラムを作りなさい」という問題です。 分からず苦戦しています。 nをキーボードで入力してn!を求めるには #include<stdio.h> int main(void) { int kekka,n,i; printf("n=? \n"); scanf("%d",&n); kekka=1; for(i=1;i<=n;i++) { kekka=kekka*i; } printf("%d!は%dです。\n",n,kekka); return 0; } とすればいいのは自分で作れたのですが、問題にあるn!>aのプログラムが分からず困っています。 分かる方、お願いいたします

  • C++のプログラム

    C言語の問題を授業で出されたのですがさっぱり分かりません。教えて下さい。 1.キーボードから整数nを入力して、1+2+…+nを求めるプログラムを作れ。 2.キーボードから整数nを入力して、1*2*…*nを求めるプログラムを作れ。 3.キーボードから10個の実数を入力し、それらの平均を求めるプログラムを作   れ。 4.円錐の体積を求めるプログラムを作れ。 注:円錐体積V=π*r*r*h/3 5.キーボードから文字列を入力し、それを逆さまにするプログラムを作れ。例えば、”dog”を逆さまにすると”god”になる。 6.キーボードから一つの整数を入力し、それは奇数か偶数かを判断するプログラムを作れ。 ちなみに6番は /* iftst.c */ #include <stdio.h> void main(void) { int n; printf("n="); scanf("%d",&n); if(n%2 == 0){ printf("偶数です\n"); } else{ printf("奇数です\n"); } } で合っているのでしょうか?

  • C言語について  

    次のような問題が解けません。あと少しなのでよろしくお願いします。 4回目と5回目がうまく表示されません。 キーボードから値を入力し、1から入力された値までの奇数の和を求めて出力するプログラムを作成しなさい。ただし、for文を使うこと。 また、0 や負数が入力された場合は合計値を0と表示すること。 実行例 入力値:9 合計値:25 #include<stdio.h> int main(void) { int n,ne,kisuu; printf("\n入力値:"); scanf ("%d",&ne); n=1; kisuu=0; for(n=1;n<=ne;n=n+2){ kisuu=kisuu+n; printf("\n1から %dまでの奇数の和:%d\n",ne,kisuu); } }