scanf与直接赋值

当直接给n,m赋值时,素数正常输出,结果输出也是正确的
而使用scanf给n,m赋值后,结果就变成了0,且素数也不再输出
想问一下程序的问题出在了哪?

/*
现在,给定两个整数n和m,0


#include 

int main ()
{
    int x,i,n,m,a=0;
    int total,stop;

   scanf("%d %d",&n,&m);      //读取n,m的值 
 
    for (x=2;x>0;x++)         //取素数 
    {
        
        int bian = 1;
        
        for (i=2;iif (x % i == 0)
            {
                bian = 0;   //当 x 不为素数时,则将变量bian赋值为 0 
                break;
            }
        }    
        if (bian == 1)   //当 x 为素数时,进入判断 
        {
            a++;
            
            if (a>=n)    //n个素数到第m个素数之间所有的素数的和
            {
             if (a<=m)
             {
                 total = x + total;            
                 printf("%d",x);
             }
             if (a > m)     //当取到第m个素数时退出循环 
             {
                 stop = 0;
                 break;
             }
            }    
        } 
          if (stop) break;
    }
    
    printf("%d",total);    
                
    return 0;
}

        

这里问题不在scanf() 输入部分,修改处见注释,供参考:

/*
现在,给定两个整数n和m,0<n<=m<=200,
你的程序要计算第n个素数到第m个素数之间所有的素数的和
包括第n个素数和第m个素数。
*/
 
 
#include <stdio.h>
 
int main ()
{
    int x,i,n,m,a=0;
    int total = 0,stop = 1; //修改 初始化两数

    scanf("%d %d",&n,&m);

    for (x=2;x>0;x++)
    {
        
        int bian = 1;
        
        for (i=2;i<x;i++)
        {
            if (x % i == 0)
            {
                bian = 0;   
                break;
            }
        }    
        if (bian == 1)
        {
            a++;

            if (a>=n && a <= m)//修改
            {
             //if (a<=m)  修改
             //{          修改
                 total = x + total;
                 printf("%d ",x);
             }
             else if (a > m) // 修改
             {
                 stop = 0;
                 break;
             }
             //}  修改
        } 
        if (!stop) break;  //修改  if (stop)
    }
    printf("\n%d",total);  //修改
    return 0;
}

输入时两数之间加一个空格试试看