当前位置:编程学习 > C/C++ >>

哪位C语言大侠能告诉我这个程序哪里有问题啊,为什么运行的结果没有,就见一光标在那闪啊!!

#include<stdio.h> int su(int m) { int i; for(i=2;i<=m/2;i++) { if(m%i==0) return 0; } if(i>m/2) return 1; } main() { int m,n=0; for(m=100;m<10000;m++) { for(;m>0;m=m/10) { if(su(m)==0) break; } if(m==0) n++; } printf("%d",n); }
补充:这个程序是用来求100到9999间的素数的个数
追问:这里怎么是死循环呢?
当m/10等于0的时候就跳出来了啊
答案:#include<stdio.h>
int su(int m)
{
	int i;
	for(i=2;i<=m/2;i++)
	{
		if(m%i==0)  return 0;
	}
	//if(i>m/2)  return 1;
	return 1;//是素数,自然for循环完毕
}
main()
{
	int m,n=0;
	for(m=100;m<10000;m++)
	{
		if(su(m)==1) 
		{
			n++;//是对m进行判断,不是对小于m判断
		}
	}
	printf("%d",n);
} 

for(m=100;m<10000;m++)
 {
  for(;m>0;m=m/10)
  {
   if(su(m)==0) break;
  }
  if(m==0) n++;//如果m=0,然后m++,这样m<10000就不能实现
 }
其他:for(m=100;m<10000;m++)
 {
  for(;m>0;m=m/10)
  {
   if(su(m)==0) break;
  }
  if(m==0) n++;
 }
程序在这里就进入死循环了,不可能出现结果的。 上述是我的程序地址。。因为太大。放不下。 问题1:typedef struct stuelse printf( 那两个for那里死了。。虽然你跳出了里面的for..但是外面的你是跳不出来的。。。
里面的for改成:(t=m;t>0;t=t/10)就可以跳了 。。
还有这种方法求素数效率太低。。要线性筛选最好。。 

上一个:学c语言来开发voip通信,有没有必要学单机片
下一个:c语言高手进

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,