C语言高人帮忙查一下错~~我是初学者

输入一个数n大于2
列出其中素数(0~n)
并统计素数个数
我的程序
#include<stdio.h>
void main()
{
long n,a,b,c=1;
printf("please in put a number>2/n");
scanf("%l",&n);
if(n<=2)
printf("mistake/n");
else
for(a=2;a<=n;a++);
for(b=2;b<a;b++);
{
if(a%b==0) break;
if(b==a-1)
{c++;printf("%l/n",a) break};
}
printf("gong you %l ge su shu/n",&c);
}
这个程序可能有小错,我最后改的系统说BREAK位置错误,为什么啊?
{c++;printf("%l/n",a); break};
这里少打分号

#include<stdio.h>
void main()
{
long n,a,b,c=0;
printf("please in put a number>2\n");
scanf("%ld",&n);
if(n<=2)
printf("mistake\n");
else
for(a=2;a<=n;a++)
for(b=2;b<a;b++)
{
if(a%b==0)
break;
if(b==a-1)
{
c++;
printf("%ld\n",a);
break;
}
}
printf("gong you %d ge su shu\n",c);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-01
#include<stdio.h>
void main()
{
long n,a,b,c=1;
printf("please in put a number>2\n"); /*/n 改成 \n, 或者直接去掉 */
scanf("%ld",&n); /* l 改成 ld */
if(n<=2) {
printf("mistake\n"); /* \n 才是回车 */
} else {

printf("2\n");
for(a=2;a<=n;a++) /* 去掉分号 */
for(b=2;b<a;b++) /* 去掉分号 */
{
if(a%b==0) break;
if(b==a-1)
{c++;printf("%ld\n",a); /* 分号 */ break;}
}
printf("gong you %ld ge su shu\n", c);
}
}
第2个回答  2012-06-01
这个程序错误太多:换行\n,多重循环体,parse error before break 是指在break之前有语法错误
修改后:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
long n,a,b,c=1;
printf("please input a number>2\n");
scanf("%l",&n);
if(n<=2)
printf("mistake\n");
else
{
for(a=2;a<=n;a++)
for(b=2;b<a;b++)
{
if(a%b==0) break;
if(b==a-1)
{
c++;
printf("%l\n",a);
break;
}

}
printf("共有%l个素数\n",c);
}
system("PAUSE");
return 0;
}追问

你这个有点高深,我还没有学到这里,师傅~~

第3个回答  2012-06-01
你的for语句后面不要分号,好多人都犯这样的错误,带分号成了循环体执行nop语句,而不是下面的语句
第4个回答  2012-06-01
你好同志,你的程序n多错误,的确一言难尽,代码我已经帮你修改了,可以运行,2也是素数,可是你的程序中没有输出。
代码:
#include<stdio.h>
void main()
{
long n,a,b,c=0;
printf("please in put a number>2\n");
scanf("%ld",&n);
if(n<=2)
printf("mistake/n");
else
for(a=2;a<=n;a++)
for(b=2;b<=a;b++)
{
if(a%b==0)
break;
if(b==a-1)
{
c++;
printf("%ld\n",a) ;
break;
}
}
printf("gong you %ld ge su shu\n",c);
}
第5个回答  2012-06-01
1.if(b==a-1) 这句应改成if(b==(a-1));
2. {c++;printf("%l/n",a) break}; 这句 break前面烧了分号