学习了函数的调用,我把之前求素数的代码又试着写一遍,加深印象。然后第一次写的成果如下
#include<stdio.h>
int main()
{int x,a,b,c;
int parison(1);
scanf("%d",&x);
if (parison==1)
{a=x/100;
b=x/10%10;
c=x%10;
printf("%d是三位数素数,百位为%d,十位为%d,个位为%d",x,a,b,c);}
else{printf("%d不是素数,不符合要求",x);}
return 0;}
int parison(int x)
{
int m,n;
for(m=2;m<x;m++)
{if(x%m==0)
{break;}
else{ return(1);}}}
结果就是可以运行,但是
显然就是不论输入什么,都会被判断为素数。后来我发现是自己在定义素数的函数的时候没有把判断写清楚,只写了是素数的时候的返回值为1,不是素数时没有返回值,就导致返回值永远只有1。所以改进之后得下面#include<stdio.h>
int parison(int x)
{
int m;
for(m=2;m<x;m++)
{if(x%m==0)
{return (-1);}
if(x%m!=0)
{return(1);}}
}
int main()
{int x,a,b,c;
scanf("%d",&x);
if (parison(x)==1)
{a=x/100;
b=x/10%10;
c=x%10;
printf("%d是三位数素数,百位为%d,十位为%d,个位为%d",x,a,b,c);}
else {printf("%d不是素数,不符合要求",x);}
return 0;}
这里有返回值了,然后运行结果
当时我以为可以了,结果输入另外一个数字
发现好像还是不对,好像只能判断第一次,也就是与2相除的时候。原来是我把x%m!=0的判断放到了循环语句里面,导致只能判断m=2的时候,而不能一直判断。本来我以为自己找到了错误之处,但是运行以后就会发现,好像还是不对。害,有点失败。最后有点糟糕,自己好像一直在打转,所以,最后请教了同学,得到下面的程序
总之就是,自己很糟糕😰