求教,为什么这个程序输入素数能有结果,输入非素数没反应,哪一步出问题了呢

#include<stdio.h>

#include<math.h>

int main()

{

        int n,w=0,i=2;

        printf("输入一个大于或等于3的整数: ");

        scanf("%d",& n);

        do

        {

                int r=n%i;

                if(r==0)

                {int w=1;}

                else

                i+=1;

        }while(w==0&&i<=sqrt(n));

        if(w==0)

        printf("其是素数\n");

        else

        printf("其不是素数\n");

        return 0;

}

        

562bbfd90001195403830371.jpg

562bbfda0001b92705000326.jpg562bbfd90001bfa905000327.jpg


bangmax
浏览 1296回答 1
1回答

onemoo

do 中的  if(r==0) 后面,你写成了 int w = 1;   这相当于在if中重新定义了一个叫w的int变量,这个w与外面那个w不是同一个变量。 而你最后在 if (w == 0) 这里判断的是main函数开头的那个w,这个w的值显然一直是0。解决方法就是去掉12行 w开头的那个int。
打开App,查看更多内容
随时随地看视频慕课网APP