题:

给定两个整数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

求解思路

关键步骤在代码中有注释

  1. 解决输出每个数字占5个字符宽度,向右对齐
  2. 5个数字占一行的,换行操作
  3. 易被疏漏的一点 判断输出完A~~B之间的所有数后是否还要换行

答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

int main()
{
int A, B;
int i, sum =0, num =0;
scanf("%d %d", &A, &B);
// 按顺序 输出A~~B之间的所有数
for (i = A; i <= B; i++)
{
printf("%5d", i); //每5个数字占一行,每个数字占5个字符宽度,向右对齐, 默认是向右对齐的,如果想要向左对齐就在5d前面加一个负号;
sum = sum+i;
num++;
// 进行换行操作
if(num % 5 == 0)
{
printf("\n");
num =0;
}
}
// 判断输出完A~~B之间的所有数后是否还要换行,再输出sum。
if(num != 0)
{
printf("\nSum = %d\n",sum);
}
else{
printf("Sum = %d\n",sum);
}

return 0;
}