[新版]明解C言語入門編演習4-3の答えがわかりません。
問い:二つの整数値を読み込んで小さい数以上大きい数以下の整数を全て加えた値を表示するプログラムを作成せよ。
---------------------------------------
二つの整数を入力してください。
整数1:37
整数2:28
28以上37以下の全整数の和は325です。
---------------------------------------
上みたいな感じで作るみたいです。ちなみにdo文を使って作成するそうです。
お願いします。教えてください。
答え:
#include<stdio.h>
int main(void)
{
int a,b,max,min,sum=0;
printf("二つの整数を入力してください。\n");
scanf("%d %d",&a,&b);
(a>b) ? (max=a,min=b,a=b):(max=b,min=a);
do
{
sum=sum+min;
min++;
}
while(max>=min);
printf("%d〜%dの和は%d",a,max,sum);
return 0;
}
これはどうですか?
補足の質問:
私の希望してたとおりです。ありがとうございました。この質問・回答は役に立ちましたか?
答え:
#include<stdio.h>
main(){
int a,b,sum=0;
printf("二つの整数を入力してください。\n");
scanf("%d %d",&a,&b);
do{
sum=sum+b;
b++;
}while(a>=b);
printf("%d",sum);
}
他は答える:
せめて自分が作らないと何のための本だかと思いますけどね。
それに入力は全角なのとか、いろいろ疑問ですけど。
#include <stdio.h>
void getInt(char *sMsg, int *iVal)
{
char sBuff[BUFSIZ];
int iRes;
do
{
printf(sMsg);
fgets(sBuff, sizeof(sBuff), stdin);
iRes = sscanf(sBuff, "%d", iVal);
}while (iRes != 1);
}
int main(int argc, char **argv)
{
int iA, iB;
printf("二つの整数を入力してください\n");
getInt("整数1 :", &iA);
getInt("整数2 :", &iB);
/* これでいいじゃん */
printf("結果 : %d %d %d\n", iA, iB,
(iA+iB) * (abs(iA - iB) + 1) / 2);
/* DO WHILEを使いたいなら仕方がないから */
int iMin, iMax;
int iRes = 0;
if(iA <= iB)
{
iMin = iA;
iMax = iB;
}
else
{
iMin = iB;
iMax = iA;
}
do
{
iRes += iMin;
++iMin;
}while(iMin <= iMax)
printf("結果 : %d %d %d\n", iA, iB, iRes);
}
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.