#include<stdio.h> #include<math.h> #define M3 #define N4 prime(int *p,int n)//判断素数 { int i,j,k,found,s; for(i=0;i<n;i++) {s=p[i]; for(i=0;i<n;i++) {s=p[i]; found=1; for(k=2;k<=sqrt(s)&&found;k++) if(s%k==0)found=0;//found=0非素数 if(found&&s!=1) printf("%3d",s); } } } int main() {int a[M][N],i,j; printf("Please input array:\n"); for(i=0;i<M;i++) scanf("%d",&a[i][j]);//输入数组元素 printf("array:\n"); for(i=0;i<M;i++) {for(j=0;j<N;j++) printf("%3d",a[i][j]);//输出数组元素 printf("\n");} printf("\nprime:"); prime(&a[0][0],M*N);//调用函数,判断素数 return 0; 怎么修改 }
时间: 2023-12-05 17:03:27 浏览: 113
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
代码有一些错误,我帮您修改一下:
```c
#include <stdio.h>
#include <math.h>
#define M 3
#define N 4
void prime(int *p, int n) // 判断素数
{
int i, j, found, s;
for (i = 0; i < n; i++)
{
s = *(p + i);
found = 1;
for (j = 2; j <= sqrt(s) && found; j++)
{
if (s % j == 0)
{
found = 0; // found = 0非素数
}
}
if (found && s != 1)
{
printf("%3d", s);
}
}
}
int main()
{
int a[M][N], i, j;
printf("Please input array:\n");
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
scanf("%d", &a[i][j]); // 输入数组元素
}
}
printf("array:\n");
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
printf("%3d", a[i][j]); // 输出数组元素
}
printf("\n");
}
printf("\nprime:");
prime(&a[0][0], M * N); // 调用函数,判断素数
return 0;
}
```
主要修改了以下几个地方:
1. 定义 `M` 和 `N` 时需要用 `#define`,而不是 `#define M3` 和 `#define N4`。
2. 函数名 `prime` 后面需要加上函数的返回类型 `void`。
3. 判断素数的函数中,变量 `i` 在两个循环中重复使用了,需要修改。
4. 在输入数组元素时,需要使用两个循环,而不是一个循环。
5. 在输出数组元素时,需要使用两个循环,而不是一个循环。
阅读全文