所以,我有这个代码需要变成一个函数:
int main(void) {
int i=0,seed;
printf("\n\nEnter seed integer value: ");
scanf("%d", &seed);
printf("\nSeed value is:%d\n\n",seed);
srand(seed);
int a[5][5];
int x,y;
printf("Matrix A:\n");
for(x=0;x<5;x++) {
for(y=0;y<5;y++) {
a[x][y] = rand() %51 + (-25);
printf("%d ",a[x][y]); }
printf("\n"); }
printf("\n\n");
基本上,它产生一个2D 5x5随机数组。这工作正常,但我的下一个任务是将函数应用于此代码,函数名称为:
void generate_matrices(int a[5][5])
我已多次尝试过,最接近成功代码的是:
#include <stdio.h>
#include <stdlib.h>
void generate_matrices(int a[5][5]);
int main(void) {
int a, seed;
printf("\n\nEnter seed integer value: ");
scanf("%d", &seed);
srand(seed);
printf("\nSeed value is:%d\n\n",seed);
generate_matrices(a);
return 0;
}
void generate_matrices(int a[5][5]) {
int y,z;
printf("Matrix A:\n");
for(y=0;y<5;y++) {
for(z=0;z<5;z++) {
a[y][z] = rand() %51 + (-25); }
printf("%d ",a[y][z]); }
printf("\n");
}
但是这会返回错误,“expect'int(*)[5]'但是争论的类型是'int'。
非常感谢所有/任何帮助。为了公平起见,我完成了90%的代码。这是我需要帮助的唯一一点,以便我可以将其应用于我的其余代码。
干杯!
答案 0 :(得分:0)
您已在此行a
int a, seed;
声明为单个整数
当您使用generate_matrices(a);
调用函数时,您传递的是一个整数而不是指向数组的指针。
将申报行更改为int a[5][5], seed;
generate_matrices(a);
会将指向5 * 5数组中第一个元素的指针传递给函数。
您应该在main
而不是在函数中打印结果,然后您将知道该数组已被修改并可在程序正文中使用。
您使用了非常规的牙箍放置&#39;}&#39;这使得查看for
循环的每个部分中的内容变得更加困难。
您将打印语句放在错误的位置 - 因此只打印部分矩阵。
这应该是什么(只是结果 - 主要):
printf("Matrix\n ");
for (y = 0; y < 5; y++) {
for (z = 0; z < 5; z++) {
printf("%d\t ", a[y][z]);
}
printf("\n");
}
如果您使用int a[5][5]
并使用generate_matrices(a);
来调用该功能
函数void generate_matrices(int a[5][5]) {...}
编译时没有错误
答案 1 :(得分:0)
#include<stdio.h>
#include<stdlib.h>
void modify(int b[5][5]);
int main()
{
srand(4562);
int i,j,arr[5][5];
modify(arr);
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",arr[i][j]=rand() %51 + (-26)); }
}
return 0;
}
void modify(int b[5][5])
{
int i,j;
for(i=0;i<5;i++) {
for(j=0;j<5;j++) {
b[i][j]; }
}
}
所以这是我最接近完成它。它产生我想要的元素数量,也在我想要的范围内。然而,它不生产我需要的5x5网格。我哪里出错?
编辑:我现在不打算整洁,我只想让程序按照我的意愿运行,然后我就把它搞定了。编辑2:没关系,意识到我没有包含的内容。现在很好。谢谢你的帮助。