随笔练习(一次失败的练习)

学习了函数的调用,我把之前求素数的代码又试着写一遍,加深印象。然后第一次写的成果如下


#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);}}}

结果就是可以运行,但是e16806d980b544ff8b4173ce38f4c863.jpg

 显然就是不论输入什么,都会被判断为素数。后来我发现是自己在定义素数的函数的时候没有把判断写清楚,只写了是素数的时候的返回值为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;}

这里有返回值了,然后运行结果27153fd2423b4367b7273353187d5d26.jpg

 当时我以为可以了,结果输入另外一个数字d8cff74069bd4daeb178e763d4a7a0d2.jpg

 发现好像还是不对,好像只能判断第一次,也就是与2相除的时候。原来是我把x%m!=0的判断放到了循环语句里面,导致只能判断m=2的时候,而不能一直判断。本来我以为自己找到了错误之处,但是运行以后就会发现,好像还是不对。害,有点失败。最后有点糟糕,自己好像一直在打转,所以,最后请教了同学,得到下面的程序46e01172c7cf448e887d3cde2638beda.png

 总之就是,自己很糟糕😰

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值