给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中输出全部数字的和。
输入样例:-3 8输出样例:
-3 -2 -1 0 1 2 3 4 5 6 7 8 Sum = 30
本题的要求输出整数段,题目刚看上去并不难,就是把a<=b之间的数存进数组里面,最后再输出的时候那里用一个数字做一下转化即可。
具体代码如下:#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int a[1000]= {0},i,j,b1,b2,h=0,a1=0,sum=0;//定义数组
scanf("%d%d",&b1,&b2);
if(b1==b2)//判断输入的两个数是否相等若相等,就输出一个就行。
{
printf("%5d",b1);
printf("\nSum = %d\n",b1);
}
else if((b2-b1+1)%5==0)//判度他们俩得差+1和是不是5的倍数,这主要是为后面的输出的格式做铺垫
{
for(i=b1; i<=b2; i++)
{
a[h++]=i;
if(i==b2) break;//赋值给数组里面
}
for(i=0;; i++)
{
for(j=a1; j<a1+5; j++)//用a1来转接每五组输出值
{
if(j<h)
{
sum=sum+a[j];
printf("%5d",a[j]);//必须当j<h的时候才能输入,同事依据这个作为循环停止的判断。
}
else if(j==h) printf("Sum = %d",sum);//判断j=h即输出停止输出sam.但不能加'\n'因为外一层的循环有个'\n';
else break;
}
printf("\n");
a1=a1+5;//来调节赋值
if(a1>h) break;
}
}
else
{
for(i=b1; i<=b2; i++)
{
a[h++]=i;
if(i==b2) break;
}
for(i=0;; i++)
{
for(j=a1; j<a1+5; j++)
{
if(j<h)
{
sum=sum+a[j];
printf("%5d",a[j]);
}
else if(j==h) printf("\nSum = %d",sum);
else break;
}
printf("\n");
a1=a1+5;
if(a1>h) break;
}
}
return 0;
}