| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:哎 还是问题一大堆阿 麻烦大家了,
只看楼主 加入收藏
五号
Rank: 2
等 级:论坛游民
帖 子:31
专家分:27
注 册:2011-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
哎 还是问题一大堆阿 麻烦大家了,
程序代码:
#include<stdio.h>

#include<math.h>


 myfun(int a)

{  
     int i,end;
     end=(int)sqrt((double)a);

     for(i=2;i<=end;i++)
            if(a%i==0) break;
           if(i>end) return 1;
           else return 0;
}
main()
{
    int i,j;
    int a[10],b[10];
   printf("please input data");
    for(i=0;i<3;i++)
    {

        scanf("%d",&a[i]);
    }
    for(i=0;i<3;)
    {
        b[j]=a[i];
        i++;
        j++;
    }
    for(i=0;i<3;)
    {
         a[i]=myfun(a[i]);
       
         if(a[i]==1) printf("%d ",b[i]);
         i++;
    }


}
原本想输出3个数中的素数 可是运行不了。求打击!
哪里错了呢  是想法错了 还是语法 还是...都错了。
搜索更多相关主题的帖子: color 
2011-12-11 01:15
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:20 
你这个想法是没问题的,只是这样的算法不提倡,中间很多步骤是可以更简单的。
for(i=0;i<3;)
    {
        b[j]=a[i];
        i++;
        j++;
    }
这个就是错误的,因为你没有给j一个值,你让它从b数组的哪个元素开始赋值呢?
这个可以简单的写成
for(i=0;i<3;i++)
    b[i]=a[i];
还有end=(int)sqrt((double)a);这里的强制转换是多余的,直接end=sqrt(a);就行了

最后,其实不需要定义两个数组的,一个数组就够用了
for(i=0;i<3;i++)
    {
        a[i]=myfun(a[i]);      
        if(a[i]==1) printf("%d ",b[i]);        
    }
这个改成
for(i=0;i<3;i++)
    if(myfun(a[i])==1) printf("%d ",a[i]);
就行了
程序代码:
#include <stdio.h>
#include <math.h>

myfun(int a)

{  
    int i,end;
    end=sqrt(a);
    for(i=2;i<=end;i++)
        if(a%i==0) break;
    if(i>end) return 1;
    else return 0;
}
main()
{
    int i,a[10],b[10];
    printf("please input data:");
    for(i=0;i<3;i++)
    {
        scanf("%d",&a[i]);
        b[i]=a[i];  
    }
    printf("the result is:");
    for(i=0;i<3;i++)
    {
        a[i]=myfun(a[i]);       
        if(a[i]==1) printf("%d ",b[i]);        
    }
    printf("\n");
}
2011-12-11 02:18
五号
Rank: 2
等 级:论坛游民
帖 子:31
专家分:27
注 册:2011-10-20
收藏
得分:0 
回复 2楼 luchar
多谢  受益匪浅!
2011-12-13 12:57
tw720
Rank: 2
等 级:论坛游民
帖 子:6
专家分:18
注 册:2011-11-26
收藏
得分:0 
函数myfun的返回值是0或者1,为整型,所以myfun函数应该是“int myfun()”,只是书写上的小问题。。。。写程序时,应多分析算法的时间和空间复杂度,就像楼上所说。
2011-12-13 17:23
快速回复:哎 还是问题一大堆阿 麻烦大家了,
数据加载中...
 
   



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

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