zhouchengzhe! 2021-12-31 13:43 采纳率: 100%
浏览 25
已结题

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

问题
素数和(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")

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-12-31 13:47
    关注

    啥意思,确定代码能运行吗?
    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循环就可以执行多次了啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 创建了问题 12月31日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!