• ベストアンサー

do を用いたプログラム

プログラミング初心者なのですが 2つの整数を入力してその2つの間の数を全て足すプログラムを do を用いて作りたいのですがどうしてもできません。 #include <stdio.h> intmain(void) { int no = 1 int sum = 0; do{ sum = sum + no; no = no + 1; } while (no <= 5); printf("1から5までを足した数は%d\n", sum) return(0); } これで1から5までを足すプログラムにはできるのですがどこを 変えればできるでしょうか?

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

  • ベストアンサー
  • 1108435
  • ベストアンサー率43% (94/217)
回答No.3

#2です、ごめん逆書いた。 ついでだから普通こう書くよというソースも添付しますね。 void main(void) { int no, sum; no = 1; sum = 0; do { sum += no; no++; /* デバッグ用にここにsumとnoを表示させておく、提出時に消すこと */ printf ("Now sum = %d, no = %d\n", sum, no); }while(no <= 5); printf("1から5までの合計1%d\n", sum); } // void main(void)と宣言したのでreturnはない、intで宣言した場合にはreturn 0を明記すること // 質問のソースで#1も書いていたけど intmain(void)と表現していないよね。 // 最後のprintf文の最後のセミコロン(;)が抜けてる

その他の回答 (4)

  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.5

http://okwave.jp/qa4995653.html の質問に「doを使って」と言う条件を追加したい場合は「条件を加えた新たな質問」を再投稿したりせず、元の質問に寄せられた回答に「補足を追記する」と言う形で「条件の追加」をして下さい。 多少の条件が書き加えられたとしても質問が分散すると回答も分散しますし。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

1と5の部分を入力値を入れた変数で置き換えればいいですよ 入力の部分は前の質問で"BLK314"さんが書かれていたプログラムを参考にされるといいです

  • 1108435
  • ベストアンサー率43% (94/217)
回答No.2

while(条件式)の関係をもう一度考え直してみてください。条件式は偽の間繰り返し、真になったら脱出する、でしょ。このヒントで十分だと思うけど・・・。

  • ssk38
  • ベストアンサー率44% (22/49)
回答No.1

intmain ↓ int main int no = 1 ↓ int no = 1; なにができなかったか。コンパイルエラーならエラー出力を記述したほうが回答がきますよ。

関連するQ&A

  • c++

    プログラミング初心者なのですが 2つの整数を入力してその2つの間の数を全て足すプログラムを 作りたいのですがどうしてもできません。 #include <stdio.h> intmain(void) { int no = 1 int sum = 0; do{ sum = sum + no; no = no + 1; } while (no <= 5); printf("1から5までを足した数は%d\n", sum) return(0); } これで1から5までを足すプログラムにはできるのですがどこを 変えればできるでしょうか?

  • 非負整数nを読み込んで、1+2+・・・+m>nとなる最小の整数mを表示

    非負整数nを読み込んで、1+2+・・・+m>nとなる最小の整数mを表示するというプログラミングなのですが・・・ #include <stdio.h> int main(void) { int n,m=■ , sum=0; do { printf("非負整数: "); scanf("%d", &n); } while (n■0); while (sum■n) { ■ ; sum +=■; } printf("1+2+・・・+m> %dとなる最小の整数mは%dである。\n", n, m); return (0); } ■のところがわかる方どうにかお願いします!!

  • c言語のプログラムで

    c言語で 2つの整数を読み込んで小さいほうの数以上で大きいほうの数以下の整数をすべて加えた値を表示するプログラム で最後の表示の仕方がわかりません。 実行結果は 整数1:37 整数2:28 28以上37以下の全整数は325です。と表示されるはずです。 この表示の3行目の28と37の表示がどうやればよいのかわかりません。 #include <stdio.h> int main(void) { int a, b; int sum=0; printf("整数1:"); scanf("%d",&a); printf("整数2:"); scanf("%d",&b); if(a>b) do{ sum=sum+b; b=b+1; }while(b<=a); else do{ sum=sum+a; a=a+1; }while(a<=b); printf("%d以上%d以下の全整数の和は%dです。",a,b,sum); return(0); } 全整数の表示はできます。 do文の中でa=cとかにしてやってみましたが、うまくいきませんでした。 お願いします。

  • C言語初心者です。次のプログラムを簡潔にしたいです

    二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成せよ。 自分のプログラムは以下の通りです。 #include <stdio.h> int main(void) { int num1,num2,small,big,sum=0; printf("二つの整数を入力してください。\n"); printf("整数A:"); scanf("%d",&num1); printf("整数B:"); scanf("%d",&num2); small=(num1 > num2) ? num2 : num1; big=(num1 > num2) ? num1 : num2; printf("%d以上%d以下の全整数の和は",small,big); if (num1 < num2) { do { sum+=num1; num1++; }while (num1 <= num2); } else { do { sum+=num2; num2++; }while (num2 <= num1); } printf("%dです。",sum); return 0; } 結果は正しく表示されるはずです。 しかし多変数かつループ文を組み合わせているため、長ったらしくなっています。 どのようなプログラミングならば、簡潔にかけますか? 解答がないので困っています。

  • Re: Vista c言語でのエラー

    直前の質問だったのですが、どうやらプログラムが壊れているみたいなんです。 #include <stdio.h> int main(void) { int sum,, no ; printf("整数を入力してください: "); scanf("%d", sum); printf("%d\n", sum); return (0); } と、とても簡単なプログラムに変えてみると、 整数を入力してください: 25 [Enter] 2147348480 となりました。また int sum, no; と変数を二個にすると前記のエラーが起こりました。 そのほかのプログラムを実行しても同じ結果でした。 コンパイラがおかしくなっちゃったんでしょうか?

  • C言語初心者です。次の問題で質問です。

    (問題) 二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値表示するプログラムを作成せよ。 (自分の解答) #include <stdio.h> int main(void) { int num1,num2; int sum=0; do { printf("整数1>整数2となる整数をそれぞれ入力してください\n"); printf("整数1:"); scanf("%d",&num1); printf("整数2:"); scanf("%d",&num2); if (num1 < num2) printf("整数1>整数2としてください\n"); } while (num1 < num2); printf("%d以上%d以下の全整数の和は",num2,num1); for (num2;num2 <= num1;num2++) { sum=sum+num2; } printf("%dです。",sum); return 0; } これでも一応正しく実行されるのですが、ごちゃごちゃしてるので簡潔に書けないでしょうか? 回答お願いします。

  • c言語で平均をだす

    #include<stdio.h> int main(void) { int num; int sum; printf("テストの点数を入力してください。\n"); do{ scanf("%d",&num); sum+=num; }while(num); printf("テストの合計点は%dです\n",sum); return 0; } テストの平均点をだすプログラムを作りたいのですが、合計を出すまではわかったのですが、ここから、平均を出すようにするにはどうすればよいですか。

  • while文の作成について

    キーボードに整数を打ち込み、0を打ち込むと終了し、その合計を出すプログラムを以下のように作りました。 #include<stadio.h> int main(void){ int num=0 int sum=0 printf("整数を入力"\n"); do{ scanf("%d",&num); sum +=num; }while(num); printf("合計は%dです。\n",sum); returen 0; } 次に負の値が入力されるまで整数を読み込み続け、その合計をを求めるプログラムを作りたいのですが、whileのところを }while(num>=0); としてみたのですが、うまくいきません。また分かり易くするため、入力した整数の個数も表示できるようにしたいです。どうすればよいでしょうか。詳しい方、教えてください。

  • 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までの奇数の総和を 計算するプログラムです。 超暇なときにでも回答お願いします。

  • 数値の連続入力終了条件について

    C言語初心者です。よろしくお願いします。 早速質問なのですが、while文を使ったscanf()関数による数値連続入力で、 ◎1---------------------------------------------- #include<stdio.h> int main(void) {      double dt,sum=0.0;      while(scanf("%lf",&dt) !=EOF){   sum=sum+dt; }   printf("合計=%f\n",sum); return 0; } ---------------------------------------------- ◎1のようにすれば、Ctrl+ZでEOFが返されたら終了とわかるのですが、今度は「0」が入力されたら処理を終了するというプログラムで、 ◎2---------------------------------------------- #include<stdio.h> int main(void) {      double dt,sum=0.0;      while(scanf("%lf",&dt) !=0.0){   sum=sum+dt; }   printf("合計=%f\n",sum); return 0; } ---------------------------------------------- ◎2のようにすると「0」が入力されても、終了せず、以下に示す◎3のように、しないと終了出来ません。 ◎3---------------------------------------------- #include<stdio.h> int main(void) {      double dt,sum=0.0;          scanf("%lf",&dt);      while(dt!=0.0){   sum=sum+dt; scanf("%lf",&dt); }   printf("合計=%f\n",sum); return 0; } ---------------------------------------------- ◎2で何故、◎1のように出来ず、◎3のようなscanf()を1回目、2回目と判定を入れなければならないか教えて下さい。

専門家に質問してみよう