• ベストアンサー

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とかにしてやってみましたが、うまくいきませんでした。 お願いします。

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

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

別の変数がいるでしょ、、 int i, a, b, sum; a = 28; b = 37; sum = 0; if ( a < b ) {  for ( i = a; i <= b; i++ ) {   sum += i;  } } else {  for ( i = b; i <= a; i++ ) {   sum += i;  } } printf("%d と %d の全整数の和は %d です", a, b, i);

free-name
質問者

お礼

回答ありがとうございます。 短いプログラムで見やすいですが まだforは使ったことがありません。

その他の回答 (3)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.4

1+2+…+n=n*(n+1)/2ですから、 a<bとおいて、a+(a+1)+…+(b-1)+b=(b-a+1)*(a+b)/2 で一発で計算させるとか。 で、a>bのときは、bとaを交換するだけで済みます。

回答No.3

printf("%d以上%d以下の全整数の和は%dです。",a,b,sum); のとき変数aとbは変化していますよね? 途中で、a=a+1 ; や b=b+1 とかやってますから。 ですから別の変数に記憶しておくか、加算するとき別の変数を使うかする必要があります。

free-name
質問者

お礼

回答ありがとうございます。 なんとかできるようになりました。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

#1です。 すみません、、最後の文はこれです。 printf("%d と %d の全整数の和は %d です", a, b, sum);