用c语言 在main中定义一个二维数组,完成以下操作: (1)编写函数input,给数组中的所有元素赋以100一999之间的随机数; (2) 编写函数output,输出数组元素中的值; (3) 编写函数,将二维数组中的所有质数挑出来放在一个一维数组中; (4)最后输出质数数组。
时间: 2024-05-04 09:20:39 浏览: 157
以下是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COL 5
// 判断是否为质数
int isPrime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
// 随机生成100到999之间的整数
int randInt() {
return rand() % 900 + 100;
}
// 给二维数组赋随机数
void input(int arr[][COL], int row, int col) {
srand((unsigned int)time(NULL));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = randInt();
}
}
}
// 输出二维数组
void output(int arr[][COL], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
// 挑选质数到一维数组
void pickPrime(int arr[][COL], int row, int col, int primeArr[], int *len) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (isPrime(arr[i][j])) {
primeArr[(*len)++] = arr[i][j];
}
}
}
}
int main() {
int arr[ROW][COL];
int primeArr[ROW * COL];
int len = 0;
input(arr, ROW, COL);
printf("二维数组:\n");
output(arr, ROW, COL);
pickPrime(arr, ROW, COL, primeArr, &len);
printf("质数数组:\n");
for (int i = 0; i < len; i++) {
printf("%d ", primeArr[i]);
}
printf("\n");
return 0;
}
```
代码解析:
首先定义了常量 `ROW` 和 `COL` 分别表示二维数组的行数和列数。然后定义了三个函数 `input`、`output` 和 `pickPrime` 分别用于给二维数组赋随机数、输出二维数组和挑选质数到一维数组。
`input` 函数中使用了 `srand` 函数来初始化随机数种子,保证每次运行程序生成的随机数不同。然后使用 `randInt` 函数生成100到999之间的整数,赋值给二维数组的每个元素。
`output` 函数中使用两层循环遍历二维数组,输出每个元素。
`pickPrime` 函数中同样使用了两层循环遍历二维数组,判断每个元素是否为质数,如果是就加入到一维数组 `primeArr` 中,并增加 `len` 的值。
在 `main` 函数中先定义了二维数组 `arr` 和一维数组 `primeArr`,以及变量 `len` 表示质数数组的长度。然后调用 `input` 函数给二维数组赋随机数,输出二维数组。接着调用 `pickPrime` 函数将二维数组中的质数挑选出来放在一维数组 `primeArr` 中,并计算质数数组的长度。最后输出一维数组 `primeArr`。
注意:在定义二维数组 `arr` 和一维数组 `primeArr` 时,一维数组的长度应该为二维数组总共的元素个数,即 `ROW * COL`。
阅读全文