dポイントプレゼントキャンペーン実施中!

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

お願いします。

A 回答 (4件)

別の変数がいるでしょ、、


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);
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/24 14:55

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を交換するだけで済みます。
    • good
    • 0

printf("%d以上%d以下の全整数の和は%dです。

",a,b,sum);

のとき変数aとbは変化していますよね?

途中で、a=a+1 ; や b=b+1 とかやってますから。

ですから別の変数に記憶しておくか、加算するとき別の変数を使うかする必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/24 15:22

#1です。


すみません、、最後の文はこれです。

printf("%d と %d の全整数の和は %d です", a, b, sum);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!