题目要求
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
代码实现
#include <stdio.h>
void Print_sum(int a,int b); //函数声明
int main() {
int a, b;
scanf("%d %d", &a, &b);
Print_sum(a, b); //函数调用
return 0;
}
//函数定义
void Print_sum(int a,int b){
int i, count = 0, sum = 0;
for(i=a; i<=b; i++)
{
count++; //记录数字个数
sum = sum + i; //记录和
printf("%5d", i);
//出错点:i != b排除了数字正好占一行或多行的情况。若去掉 i != b,则当输出的数字个数是5的倍数时,会多一行换行。
if(count % 5 == 0 && i != b )
{
printf("\n");
}
}
//和单独占一行
printf("\n");
printf("Sum = %d", sum);
}
知识点/易错点
1、代码里的出错点。
2、每个数字占5个字符宽度 : %5d
printf("%5d", i);
3、每5个数字占一行
if(count % 5 == 0 ) //count记录数字个数
{
printf("\n");
}
4、左对齐和右对齐
代码测试
#include <stdio.h>
int main() {
printf("%10d\n", 123); //右对齐,数字宽度为10
printf("%-10d\n",123); //左对齐,数字宽度为10
return 0;
}
输出结果
123
123
Program ended with exit code: 0
本题题目要求向右对齐,但代码未体现这一点,但看输出结果。
输入:-3 7
输出结果:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30Program ended with exit code: 0
已经右对齐了。
小结
如果你有更高效的代码或建议,请不吝赐教!
如果你觉得这篇文章对你有帮助,请为小白博主点个赞,你的点赞是对小白博主最大的鼓励!