这个break为什么会提示错呀?
void num(int m, int k, int xx[]){
int data=m+1;
int i,n=0;
for (i=2;i<sqrt(data);i++)
if (data%i!=0)
{
xx[n]=data;
n++;
}
if (n>=k)
break; data++;
}
假如m=17,k=5
提示:
Compiling...
0001.cpp
D:\C语言\新建程序\0001.cpp(18) : error C2043: illegal break
执行 cl.exe 时出错.
0001.exe - 1 error(s), 0 warning(s)
----------------解决方案--------------------------------------------------------
你出了循环体了。。
----------------解决方案--------------------------------------------------------
对了,我再问个问题吧。
这个题目的意思是求一个数,然后紧跟着它后面的五个整数,这五个数都是素数。
例如:
我输入17 5
应该显示:19 21 23 29 31
我的程序是这样的,但错了咧。。。
#include <conio.h>
#include <stdio.h>
#include <math.h>
void readwriteDat();
void num(int m, int k, int xx[])
{
int data=m+1;
int i,n=0;
for (i=2;i<=sqrt(data);i++)
if (data%i!=0)
{
xx[n]=data;
n++;
}
if (n>=k)
break;
data++;
}
void main()
{
int m, n, xx[1000];
printf("\nPlease enter two integers:");
scanf("%d%d", &m, &n);
num(m, n, xx);
for (m=0; m<n; m++)
printf("%d ", xx[m]);
printf("\n");
readwriteDat();
}
void readwriteDat()
{
int m, n, xx[1000], i;
FILE *rf, *wf;
rf = fopen("in.dat", "r");
wf = fopen("out.dat", "w");
for (i=0; i<10; i++)
{
fscanf(rf, "%d %d", &m, &n);
num(m, n, xx);
for (m=0; m<n; m++)
fprintf(wf, "%d ", xx[m]);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}
----------------解决方案--------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <math.h>
void readwriteDat();
void num(int m, int k, int xx[])
{
int data=m;
int i,n=0;
int flag,flag1;
do{
do{
flag=0,flag1=0;
data++;
for (i=1;i<=sqrt(data);i++)
if (data%i==0)
{
if(++flag1==2)
flag=1;
}
}while(flag);
xx[n++]=data;
}while(n<k);
}
void main()
{
int m, n, xx[1000];
printf("\nPlease enter two integers:");
scanf("%d%d", &m, &n);
num(m, n, xx);
for (m=0; m<n; m++)
printf("%d ", xx[m]);
printf("\n");
//readwriteDat();
}
----------------解决方案--------------------------------------------------------