c语言pat基础题改错8.2-1

img


我的答案如下:


#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);
    }
}

img

修改如下,改动处见注释,供参考:

#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;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7801651
  • 你也可以参考下这篇文章:PAT乙级1010 || 一元多项式求导(C语言)
  • 除此之外, 这篇博客: 海南热带海洋学院18级C语言期末考试PAT编程题中的 输出样例: 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    我会帮助你找出代码中的错误并进行改正。首先,我注意到以下问题:

    1. 变量 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;
    }
    

    这个修改后的代码修复了已经提到的问题并保持了原来的逻辑。你可以尝试运行这个代码来检查是否成功解决了问题。希望对你有帮助!如有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

img

#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;
}