为什么不能两次一起输出呢?

问题
素数和(5分)
题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
代码

img

#include <stdio.h
int main(){

    int a;
    int n;
    int x;
    int i;
    int s;
    
    scanf("%d",&n);

    for(x=1;a<200;x++){    
        int isp=1;
        
        for(i=2;i<x;i++){
            if(x%i==0){
                isp=0;
                break;
            }
        }
        if(isp==1){
            s+=x;
            printf("%d ",x);
            a++; 
            if(a==n){
                printf("前n个素数");
                break;
            }
        }
    }
    printf("\n");
    printf("%d",s);
    printf("\n");

    int b;
    int m;
    int y;
    int z;
    int t;
    
    scanf("%d",&m);
    
    for(y=1;b<200;y++){
        int isf=1;
        
        for(z=2;z<y;z++){
            if(y%z==0){
                isf=0;
                break;
            }
        }
        if(isf==1){
            t+=y;
            printf("%d ",y);
            b++;
            if(b==m){
                printf("前m个素数");
                break;
            }
        }
        
    }
    printf("\n");
    printf("%d",t);

    return 0;```
为什么输出结果,只有第一次可以计算,第二次就会错误,注释完成之后就可以输出正常的结果,有什么办法解决吗
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/839355829046149.png "#left")

```c
#include <stdio.h>
int main(){
    /*
    int a;
    int n;
    int x;
    int i;
    int s;
    
    scanf("%d",&n);

    for(x=1;a<200;x++){    
        int isp=1;
        
        for(i=2;i<x;i++){
            if(x%i==0){
                isp=0;
                break;
            }
        }
        if(isp==1){
            s+=x;
            printf("%d ",x);
            a++; 
            if(a==n){
                printf("前n个素数");
                break;
            }
        }
    }
    printf("\n");
    printf("%d",s);
    printf("\n");
    */ 
    int b;
    int m;
    int y;
    int z;
    int t;
    
    scanf("%d",&m);
    
    for(y=1;b<200;y++){
        int isf=1;
        
        for(z=2;z<y;z++){
            if(y%z==0){
                isf=0;
                break;
            }
        }
        if(isf==1){
            t+=y;
            printf("%d ",y);
            b++;
            if(b==m){
                printf("前m个素数");
                break;
            }
        }
        
    }
    printf("\n");
    printf("%d",t);

    return 0;```
这样第二段就可以正常输出了,有什么办法可以让两次一起输出吗,刚开始学习c语言不太明白是不是自己有哪里用错了还是语言逻辑用错了。

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/725488829046134.png "#left")

啥意思,确定代码能运行吗?
for(x=1;a<200;x++){ 为啥是a<200,不是x<200?
修改如下:

#include <stdio.h>
int main(){
 
    int a=0;
    int n;
    int x;
    int i;
    int s=0;
    
    scanf("%d",&n);
 
    for(x=1;x<200;x++){    
        int isp=1;
        
        for(i=2;i<x;i++){
            if(x%i==0){
                isp=0;
                break;
            }
        }
        if(isp==1){
            s+=x;
            printf("%d ",x);
            a++; 
            if(a==n){
                printf("前n个素数之和:");
                break;
            }
        }
    }
    printf("\n");
    printf("%d",s);
    printf("\n");
 
    int b=0;
    int m;
    int y;
    int z;
    int t=0;
    
    scanf("%d",&m);
    
    for(y=1;y<200;y++){
        int isf=1;
        
        for(z=2;z<y;z++){
            if(y%z==0){
                isf=0;
                break;
            }
        }
        if(isf==1){
            t+=y;
            printf("%d ",y);
            b++;
            if(b==m){
                printf("\n前n个素数之和:");
                break;
            }
        }
        
    }
    printf("\n");
    printf("%d",t);
    return 0;
 
}

不过你完全没必要代码写两遍啊。给第一遍代码外面套一层for循环就可以执行多次了啊

估计和括号格式有关,试试这个

#include <stdio.h>
int main()
{

    int a;
    int n;
    int x;
    int i;
    int s;

    scanf("%d",&n);

    for(x=1; a<200; x++)
    {
        int isp=1;

        for(i=2; i<x; i++)
        {
            if(x%i==0)
            {
                isp=0;
                break;
            }
        }
        if(isp==1)
        {
            s+=x;
            printf("%d ",x);
            a++;
            if(a==n)
            {
                printf("前n个素数");
                break;
            }
        }
    }
    printf("\n");
    printf("%d",s);
    printf("\n");

    int b;
    int m;
    int y;
    int z;
    int t;

    scanf("%d",&m);

    for(y=1; b<200; y++)
    {
        int isf=1;

        for(z=2; z<y; z++)
        {
            if(y%z==0)
            {
                isf=0;
                break;
            }
        }
        if(isf==1)
        {
            t+=y;
            printf("%d ",y);
            b++;
            if(b==m)
            {
                printf("前m个素数");
                break;
            }
        }

    }
    printf("\n");
    printf("%d",t);
    return 0;
}