| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:求大大给我纠错
取消只看楼主 加入收藏
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求大大给我纠错
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
main()
{
      int palind(char str[],int k,int i);
      int prime(char str[],int ip);
      int i=0,n=0,m=0;
      char str[20],ch;
      printf("please input a number:\n");
      for(;(ch=getchar())!='\n';i++)
      str[i]=ch;
      if(i%2==0)
      n=palind(str,i/2,i-1);
      else
      n=palind(str,i/2-1,i-1);
      if(n==0)
      printf("not palindrome\n");
      else
      m=prime(str,i);
      if(m==0)
      printf("not prime number");
      else
      printf("is palindrome and prime number");
      system("pause");
      }

int palind(char str[],int k,int i)
    {
          if(str[k]==str[i-k]&&k==0)
          return 1;
          else if(str[k]==str[i-k])
          palind(str,k-1,i);
          else
          return 0;
          }
         
int prime(char str[],int ip)
    {
          int j,k,p=1,sum=str[0];
          for(k=1;k<ip;k++)
          {
          p*=10;
          sum=sum+str[k]*p;
          }
          printf("%d",sum);
          for(j=2;j<=sqrt(sum);j++)
          if(sum%j==0)
          return 0;
          if(j>sqrt(sum))
          return 1;
          }

prime函数怎么错了,求解释
2011-05-25 11:17
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
回复 2楼 ppfly
饿... 不懂你的意思
2011-05-25 12:10
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
这是回文素数问题,求素数prime部分哪错了
2011-05-25 12:45
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 


   继续研究下
2011-05-25 18:04
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
以下是引用Toomj在2011-5-25 12:59:49的发言:

#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int main()
{
      int palind(int str[],int k,int i);
      int prime(int str[],int ip);
      int i=0,n=0,m=0;
      int str[20];
      char ch;
      printf("please input a number:\n");
      for(;(ch=getchar())!='\n';i++)
      str=ch-'0';   //你要的是数不是字符
      if(i%2==0)
      n=palind(str,i/2,i-1);
      else
      n=palind(str,i/2-1,i-1);
      if(n==0)
      printf("not palindrome\n");
--->  else printf("is palindrome\n");
      m=prime(str,i);
      if(m==0)
      printf("not prime number\n");
      else
      printf("is prime number\n");
      system("pause");
--->  return 0;
      }

int palind(int str[],int k,int i)
    {
          if(str[k]==str&&k==0)
          return 1;
          else if(str[k]==str)
          palind(str,k-1,i);
          else
          return 0;
          }
         
int prime(int str[],int ip)
    {
          int j,k,p=1,sum=0;
          for(k=ip-1;k>=0;k--)   //注意顺序
          {
          sum=sum+str[k]*p;
          p*=10;
          }
          printf("%d",sum);
          for(j=2;j<=sqrt(sum);j++)
          {if(sum%j==0)
--->      return 0;}
          //if(j>sqrt(sum))
--->      return 1;
          }
...
else
      {
      m=prime(str,i);
      if(m==0)
      printf("not prime number\n");
      else
      printf("is palindrome and prime number\n");
      system("pause");
      return 0;
      }
...
以上运行上有什么不同???
为什么运行结果完全不一样?


还有
...最后如果return 0了,不是应该运行到return 1吗?不就重复了吗?
为什么结果却是对的,求解释!!!
2011-05-25 19:48
快速回复:求大大给我纠错
数据加载中...
 
   



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

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