不太清楚语法哪里错了?
#include <stdio.h>
#include <string.h>
int n = 1000000;
int mark[1000001];
int N, M;
int c, i;
scanf("%d,%d", &N,&M);
int main() {
int c;
memset(mark, 0, sizeof(mark));
mark[0] = 1;
mark[1] = 1;
for (c = 2; c * c <= n; c++) {
if (mark[c] != 1) /*是待筛选的数*/
{
for (i = M; i <= n / c; M++)
{
mark[c * i] = 1;
}
}
}
if (mark[c] != 1)
{
printf("%d\n", c);
}
return 0;
}
Line 8: error: expected declaration specifiers or '...' before string constant
Line 8: error: expected declaration specifiers or '...' before '&' token
Line 8: error: expected declaration specifiers or '...' before '&' token
Line 8: warning: data definition has no type or storage class
Line 8: error: conflicting types for 'scanf'
int n = 1000000;
int mark[1000001];
int N, M;
int c, i;
scanf("%d,%d", &N,&M);
这一堆放到main函数里面
很明显,你把
scanf("%d,%d", &N,&M);
放到函数外面了,语法规定scanf只能在函数里面
错误提示都说是第八行的scanf语句出错了嘛,位置放错了,应该放在函数内部,能放在全局的位置。
错处提示中已经说明的很清楚了,第八行的“scanf”。
根据c语言语法规定scanf只能在函数里面!!!
变量在函数外面声明的话,表示这个变量是一个全局变量。
纠正之后的代码为:
#include <stdio.h>
#include <string.h>
int n = 1000000;
int mark[1000001];
int N, M;
int c, i;
int main() {
scanf("%d,%d", &N,&M);
int c;
memset(mark, 0, sizeof(mark));
mark[0] = 1;
mark[1] = 1;
for (c = 2; c * c <= n; c++) {
if (mark[c] != 1) /*是待筛选的数*/
{
for (i = M; i <= n / c; M++)
{
mark[c * i] = 1;
}
}
}
if (mark[c] != 1)
{
printf("%d\n", c);
}
return 0;
}
scanf语句应该放在主函数里面
第一,scanf函数应该放在main函数里面。第二,虽然没报错,但是你定义了两个c变量
scanf放到main函数啊
scanf放到主函数中