给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X
的格式输出全部数字的和X
。
输入样例:
-3 8
输出样例:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30
方法一:(穷举)
#include <iostream>
using namespace std;
int main()
{
int a,b;
int count=0;
int sum=0;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
if(count!=0 && count%5==0)
cout<<endl;
if(i==-100)
{
cout<<" "<<i;
count++;
sum+=i;
continue;
}
if(i>=-99 && i<=-10)
{
cout<<" "<<i;
count++;
sum+=i;
continue;
}
if(i>=-9 && i<= -1)
{
cout<<" "<<i;
count++;
sum+=i;
continue;
}
if(i>=0 && i<=9)
{
cout<<" "<<i;
count++;
sum+=i;
continue;
}
if(i>=10 && i<=99)
{
cout<<" "<<i;
count++;
sum+=i;
continue;
}
if(i==100)
{
cout<<" "<<i;
count++;
sum+=i;
continue;
}
}
cout<<endl;
cout<<"Sum = "<<sum<<endl;
return 0;
}
方法二:
- 整数范围遍历
- 通过
stoi
函数将字符串a
和b
转换为整数,以此确定循环遍历的起始值和结束值。for
循环从stoi(a)
开始,到stoi(b)
结束(包含stoi(b)
),每次循环i
自增 1。
- 通过
- 格式化输出
- 利用
count
控制换行逻辑,当count
不为 0 且是 5 的倍数时,输出换行符,实现每 5 个整数换行。 - 为使输出整数宽度统一为 5,先将
i
转换为字符串,计算其长度与 5 的差值space
,此为需填充的空格数。 - 通过内层循环输出
space
个空格,再输出整数i
。
- 利用
#include<iostream>
using namespace std;
int main()
{
string a,b;
int count=0,sum=0;
cin>>a>>b;
for(int i=stoi(a);i<=stoi(b);i++)//string转int,获取边界
{
if(count!=0 && count % 5==0) cout<<endl;//除了第一次不换行,每五个数换一次行
int space = 5 - to_string(i).size();//int转string,求应该补充的空格数
for(int j=0;j<space;j++) cout<<" ";
cout<<i;
count++;
sum+=i;
}
cout<<endl<<"Sum = "<<sum<<endl;
return 0;
}