用C语言写出创建一个二维数组,里面每一个元素都是-1-1之间的随机小数
时间: 2024-05-02 10:23:02 浏览: 10
好的,我可以回答您的问题。以下是用C语言创建一个大小为n行m列的二维数组,每个元素都是-1到1之间的随机小数的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n, m;
printf("请输入数组的行数和列数(用空格分隔):");
scanf("%d %d", &n, &m);
float arr[n][m];
srand(time(NULL)); // 设置随机种子
// 生成随机数填充数组
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
arr[i][j] = -1 + (float)rand()/RAND_MAX*2;
printf("%f ", arr[i][j]); // 输出每个元素的值
}
printf("\n"); // 每行输出后换行
}
return 0;
}
```
该程序首先要读入数组的行数和列数,随后通过srand函数初始化了随机数种子,之后利用rand函数生成随机数并用循环将其存储到二维数组中,最后输出每个元素的值。
相关问题
C语言编写 construct 函数,创建一个 n × n 的二维数组,数组中的每个元素都是一 个[-1,1]之间的小数
以下是一个示例 C 语言代码,用于创建一个 n × n 的二维数组,其中每个元素都是一个 [-1,1] 之间的小数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 构造函数,用于创建一个 n × n 的二维数组,其中每个元素都是一个 [-1,1] 之间的小数
double **construct(int n) {
double **arr = (double **)malloc(n * sizeof(double *));
for (int i = 0; i < n; i++) {
arr[i] = (double *)malloc(n * sizeof(double));
for (int j = 0; j < n; j++) {
arr[i][j] = ((double)rand() / (double)RAND_MAX) * 2 - 1;
}
}
return arr;
}
int main() {
srand(time(NULL));
int n = 3;
double **arr = construct(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%.2f ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个示例代码中,我们使用了 `malloc()` 函数来动态分配内存,以创建一个 n × n 的二维数组。我们使用了 `rand()` 函数来生成一个随机数,然后将其转换为一个 [-1,1] 之间的小数。最后,我们使用两个嵌套的循环来遍历整个数组,并将每个元素打印到控制台上。
用C语言创建一个double二维数组,使它的每个元素都是一个0~1之间的随机小数,创建后,请将这个二维数组排序。
这题需要使用C库函数,可以使用rand()函数生成随机数,并使用srand()函数设置随机数种子。接下来使用二重循环,逐个生成随机小数,使用qsort()函数对数组进行排序。下面是代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COL 5
int cmp(const void *a, const void *b)
{
double x = *((double *)a);
double y = *((double *)b);
if (x < y) return -1;
else if (x > y) return 1;
else return 0;
}
int main()
{
double arr[ROW][COL];
int i, j;
srand(time(NULL));
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
arr[i][j] = (double)rand() / RAND_MAX;
printf("%lf ", arr[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < ROW; i++) {
qsort(arr[i], COL, sizeof(double), cmp);
}
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%lf ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
该程序使用srand()函数设置随机数种子。接下来使用二重循环生成随机小数,并输出到屏幕上。随后使用qsort()函数对二维数组的每一行进行排序,最后将排好序的二维数组输出到屏幕上。