| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 463 人关注过本帖
标题:函数上有点小问题。。。。。。
只看楼主 加入收藏
未来ken
Rank: 2
等 级:论坛游民
帖 子:102
专家分:96
注 册:2013-11-16
结帖率:85.71%
收藏
已结贴  问题点数:10 回复次数:5 
函数上有点小问题。。。。。。
#include<stdio.h>
#include<math.h>
int Isprime(int j,int m);
int main()
{
    int m,j,i;
    for(i = 1;;i++)
    {
    do{
        printf("Input m:");
        scanf("%d",&m);
    }while(m<=1);
    if(Isprime(j,m))  printf("%d is not a prime number\n",m);
    else printf("%d is a prime number\n",m);
    }
}
int Isprime(int j,int m)
{
    int i,p;
    for(i = 2;i<=m-1;i++)
    {
        p = m%i;
        if(p == 0)
        {
            j = 1;
            return j;
            break;
        }
    }
}

自己写的...判断一个数是不是素数...但是对 if(Isprime(j,m))  printf("%d is not a prime number\n",m);
   不太理解,自己试了几次竟然试出来可以编译...为什么啊.求大神讲解......
搜索更多相关主题的帖子: include number return 
2013-11-16 20:17
U201010009
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:73
专家分:178
注 册:2013-2-25
收藏
得分:0 
楼主定义了Isprime(j,m)函数当m不是素数的时候函数Isprime(j,m)有返回值,所以那个if条件判断为真,就执行printf("%d is not a prime number\n", m),当m是素数的时候Isprime(j,m)返回值为NULL,所以if条件跑那段为假,执行printf("%d is a prime number\n", m),我是这样理解的
2013-11-16 20:44
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
大概扫了一眼,估计是不能运行。

1、for改成while(1)看起来或许会更舒服一些

2、定义很多没有必要的变量如:函数里的那个参数j和里面的p

3、主函数j为初始化,是错误的。(编译器警告3级下是error)


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-11-16 20:53
未来ken
Rank: 2
等 级:论坛游民
帖 子:102
专家分:96
注 册:2013-11-16
收藏
得分:0 
回复 3楼 蚕头燕尾
燕尾..能运行的哟......但是我不是很懂.......

任重而道远
2013-11-17 16:37
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
我的编译器报错等级设置成了三级,VS2012下不能运行。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-11-21 11:05
飘叶csc
Rank: 2
等 级:论坛游民
帖 子:23
专家分:34
注 册:2013-11-13
收藏
得分:10 
#include<stdio.h>
 #include<math.h>
 int Isprime(int j,int m);
 int main()
 {
     int m,j,i;
     for(i = 1;;i++)
     {
     do{
         printf("Input m:");
         scanf("%d",&m);
     }while(m<=1);
     if( Isprime(j, m))  
         printf("%d is not a prime number\n",m);
     else
         printf("%d is a prime number\n",m);
     }
 }
 int Isprime(int j,int m)
 {
     int i;
     for(i = 2;i<=m-1;i++)
     {
         if(m%i==0)
         {
             return j=1;
             break;
         }
         else//注意错误提示,增加if不成立的返回值
             return j=0;
   
     }
 }
初学者,不知道怎么将vc6.0的两警告去掉19) : warning C4700: local variable 'j' used without having been initialized
(39) : warning C4715: 'Isprime' : not all control paths return a value
求方法,上面的程序可以正确运行,求改进。



[ 本帖最后由 飘叶csc 于 2013-11-21 18:07 编辑 ]
2013-11-21 18:04
快速回复:函数上有点小问题。。。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019596 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved