#include<stdio.h>
int main(){
int n1,n2;
scanf("%d %d",&n1,&n2);
if(n1>100||n1<-100||n2>100||n2<-100){
printf("Invalid Input");
}else{
int i=n1,flag=1,sum=0;
for(int i;i<=n2;i++){
if(flag%5!=0){
printf("%d",i);
}else{
printf("\n");
}
flag++;
sum+=i;
}
printf("%d",sum);
}
}
修改如下,改动处见注释,供参考:
#include<stdio.h>
int main() {
int n1, n2;
scanf("%d %d", &n1, &n2);
if (n1 > 100 || n1 < -100 || n2 > 100 || n2 < -100 || n1 > n2 ) { // 修改
printf("Invalid Input");
}
else {
int i = n1, flag = 1, sum = 0;
for (i; i <= n2; i++) { //for (int i; i <= n2; i++) 修改
if (flag % 5 != 0) {
printf("%5d", i); // 修改
}
else {
printf("%5d\n", i); // 修改
}
flag++;
sum += i;
}
if ((flag - 1) % 5) // 修改
printf("\n"); // 修改
printf("Sum = %d", sum); // 修改
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:我会帮助你找出代码中的错误并进行改正。首先,我注意到以下问题:
i
在循环内部已经定义了两次,这是不允许的。需要将其中一个 i
的定义移除。现在,让我们对代码进行改正:
#include<stdio.h>
int main(){
int n1,n2;
scanf("%d %d",&n1,&n2);
if(n1>100||n1<-100||n2>100||n2<-100){
printf("Invalid Input");
}else{
int flag = 1, sum = 0;
for(int i = n1; i <= n2; i++){
if(flag%5 != 0){
printf("%d",i);
}else{
printf("\n");
}
flag++;
sum += i;
}
printf("%d",sum);
}
return 0;
}
这个修改后的代码修复了已经提到的问题并保持了原来的逻辑。你可以尝试运行这个代码来检查是否成功解决了问题。希望对你有帮助!如有任何问题,请随时提问。
#include <stdio.h>
int main() {
int A, B, sum = 0;
int i;
scanf("%d %d", &A, &B);
int cnt = 1;
for (i = A; i <= B; i++) {
printf("%-5d", i); // 输出数字,并保持宽度为5个字符
if (cnt == 5)
{
printf("\n");
cnt = 0;
}
sum += i;
cnt++;
}
printf("\nSum = %d\n", sum);
return 0;
}