| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 853 人关注过本帖, 1 人收藏
标题:c语言错误原因
只看楼主 加入收藏
姚志良
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2012-4-7
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:12 
c语言错误原因
#include<stdio.h>
int fun(int n)
{
    int i;
    for(i=2;i<n;i++)
    {if(n%i!=0)
    return 1;
    return 0;}

}
main()
{
    int n,c,sum=0;
    {
        for(n=3;n<=100;n++)
            c=fun(n);
        sum=sum+c;}
    printf("素数之和=%d\n",sum);
}
  求3到100 素数之和答案不对啊
搜索更多相关主题的帖子: 原因 c语言 原因 c语言 
2012-04-20 08:47
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:2 
你少了个else吧?
第8行……
你看看这个:
if(n%i!=0)
return 1;
return 0;
是不是如果执行完了return 1之后,后面的return 0 依然会执行啊?(这个我也不确定,呵呵)
还有主函数里的for语句里,你的fun()函数的返回值不是0就是1,所以你的c值不是0就是1,请问怎样求和?
最后,你的语句格式很不规范啊,主函数里,for语句下没有花括号,反而for语句和下面的被花括号括起来成复合语句了……why?
2012-04-20 09:07
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
建议你搜一下林锐博士写的《C++/C高质量编程》,学习一下里面的格式规范,嘿嘿,很有用的
2012-04-20 09:12
dc__sky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:117
注 册:2012-3-13
收藏
得分:2 
int fun(int n)
{
    int i;
    for(i=2;i<n;i++)
    {if(n%i!=0)
    return 1;
    return 0;}
}
这里是素数就返回1,那肯定不对嘛
红色的改为 return n;

2012-04-20 09:15
PsSyg
Rank: 2
等 级:论坛游民
帖 子:14
专家分:14
注 册:2011-10-17
收藏
得分:2 
int fun(int n)
{
    int i;
    for(i=2;i<n;i++)
    {if(n%i!=0)
    return 1;
    return 0;}

}
n未被赋值所以程序会按顺序执行,这条是全局变量语句
----------------------------------------------------
main()
{
    int n,c,sum=0;
    {
        for(n=3;n<=100;n++)
            c=fun(n);
        sum=sum+c;}
    printf("素数之和=%d\n",sum);
}
-----------------------------------------------
int n,c,sum=0;这是局部变量语句,这条语句只能存在于main()里面而无法给上面语句的变量赋值。
2012-04-20 09:29
ab1034982749
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:215
专家分:1185
注 册:2012-4-14
收藏
得分:2 
我认为还是应该这样改
#include<stdio.h>
int fun(int n)
{
    int i;
    for(i=2;i<n/2;i++)
    {
        if(n%i==0)
            return 0;
    }
    if(i>n/2)
        return 1;
}

int main()
{
    int n,sum=0;
 
   for(n=3;n<=100;n++)
       if(fun(n))
        sum=sum+n;
    printf("100以内的素数之和=%d\n",sum);
    return 0;
}
2012-04-20 18:44
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:2 
你的int fun(int n)
 {
     int i;
     for(i=2;i<n;i++)
     {if(n%i!=0)
     return 1;
     return 0;}
 
}这段程序就无法完成素数的判断,看看我的结构把
int sushu(int x)
{
int i,flag=1;
for(i=2,i<sqrt(x);i++)
if(x%i==0) {flag=0;break;}
return flag;


}
 
2012-04-20 19:21
蓝xuan
Rank: 4
等 级:业余侠客
帖 子:81
专家分:211
注 册:2012-3-31
收藏
得分:2 
#include<stdio.h>
int fun(int n)
{
    int i,k=2;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
            return 0;
        else
            k++;
    }
    if(k>=n-2)
        return n;
}
main()
{
    int n,c,sum=0;
    {
        for(n=3;n<=100;n++)
        {
            c=fun(n);
            sum=sum+c;
        }
    }
    printf("素数之和=%d\n",sum);
}
2012-04-20 20:57
heifeng2012
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:53
专家分:113
注 册:2012-3-22
收藏
得分:2 
  再研究下
2012-04-20 21:26
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
收藏
得分:2 
多看看
2012-04-21 17:28
快速回复:c语言错误原因
数据加载中...
 
   



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

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