#include<stdio.h>
void f()
{
int n=2,v=1,x;
for(;n<x;n++)
{
if(x%n==0)
{
v=0;
break;
}
}
if(v==0)
printf("no\n");
else
printf("yes\n");
scanf("%d",&x);
}
int main()
{
int x;
scanf("%d",&x);
do{
f(x);
} while(x!=0);
return 0;
}
代码的意思是,输入一个数判断是否为素数
问题是,输入的第一个数不管是不是素数都会print yes,输入0的时候,本来应该终止运行,没有终止。
这是把原来的代码拆成两个函数了(要求),原来的代码没有问题
原来的代码:
#include<stdio.h>
int main()
{
int x,n,v;
scanf("%d",&x);
do{
n=2,v=1;
for(;n<x;n++)
{
if(x%n==0)
{
v=0;
break;
}
}
if(v==0)
printf("no\n");
else
printf("yes\n");
scanf("%d",&x);
} while(x);
return 0;
}
要求:连续输入多个整数判断是否素数,以0结束。
这是我们之前做过的题目,现要求将其中判断一个数是否素数的处理编写为一个独立的模块,在main函数中调用使用它。
修改如下:
#include<stdio.h>
void f(int x)
{
int n = 2, v = 1;
for (; n < x; n++)
{
if (x % n == 0)
{
v = 0;
break;
}
}
if (v == 0)
printf("no\n");
else
printf("yes\n");
}
int main()
{
int x;
while (scanf_s("%d", &x) && x != 0)
f(x);
return 0;
}
感谢您的回答,可以问一下(scanf_s("%d", &x) && x != 0)的含义以及scanf_s的作用和使用情境吗