C语言中存储用户输入的二维数组
这里是C级新手。谢谢你事先的帮助 我需要编写具有以下属性的代码:C语言中存储用户输入的二维数组,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,这里是C级新手。谢谢你事先的帮助 我需要编写具有以下属性的代码: 要求用户在其二维数组中输入所需的行数和列数 创建一个2-D数组,其中包含那么多用于存储整数的行和列 用1到1000之间的随机数填充数组 输出数组中的最大数字 这是我现在可以去的地方: #include <stdio.h> int main(){ int rows; int columns; scanf("%d", &rows); scanf("%d", &columns); } #包括
#include <stdio.h>
int main(){
int rows;
int columns;
scanf("%d", &rows);
scanf("%d", &columns);
}
#包括
int main(){
int行;
int列;
scanf(“%d”,行和行);
scanf(“%d”列和列);
}
我该怎么办?
对不起,这个问题很开放,我被卡住了,不知道该怎么办。指南将是完美的。谢谢:)
编辑:
感谢您的指导,以下是我解决问题的方法:
解决方案:
#include <stdio.h>
#include <time.h>
int main () {
//Declare variables
int a,b,k,l,big,z[100][100];
//Ask user input
printf("ENTER ROWS & COLUMNS\n");
scanf("%d\n%d", &a, &b);
//Randomize array values
srand(time(NULL));
big = 1;
for (k=0;k<a;k++){
for(l=0;l<b;l++){
z[k][l]=rand()%1000 + 1;
if(z[k][l]>big) big=z[k][l];
printf("%d\t", z[k][l]);
}
printf("\n");
}
//Print biggest number
printf("\nBIGGEST NUMBER IN THE ARRAY: %d", big);
return 0;
}
#包括
#包括
int main(){
//声明变量
int a,b,k,l,big,z[100][100];
//询问用户输入
printf(“输入行和列\n”);
scanf(“%d\n%d”、&a和&b);
//随机化数组值
srand(时间(空));
大=1;
对于(k=0;k
指南将是完美的
好的…我们走吧
要求用户在其二维数组中输入所需的行数和列数
使用scanf
或更好的fgets
,然后使用sscanf
创建一个2-D数组,其中包含那么多用于存储整数的行和列
使用malloc
(在网上搜索“如何正确malloc二维数组”或只需查看)
用1到1000之间的随机数填充数组
使用srand
、rand
和%
运算符
输出数组中的最大数字
迭代数组的所有元素并与正在运行的最大值进行比较。C不支持本机2D数组,您需要分配一个数组数组。您事先不知道数组的大小,因此需要使用malloc
动态分配数组内存
对于生成随机数,您可以使用rand
,但您需要先为伪随机整数序列设置种子,然后使用srand
获取(可能)每次执行时使用不同的数字,或者您可以使用一个函数使用rand\u r
来执行这两个操作。请注意,rand生成一个介于0
和rand\u MAX
之间的随机数,您需要使用模运算符%
的技巧来生成特定范围[min,MAX]内的随机数
min+(rand()%(max-min+1))
您可以使用两个循环迭代数组,以获得最大数量
要了解如何使用这些功能,您可以阅读手册页:
作为补充说明,您并不需要2D数组来获得最大数量,您可以通过分配任何额外内存直接计算它
您的解决方案可以工作,但仅限于100列和100行。例如,如果用户输入更高的数字,您的代码将大部分崩溃。一种解决方案是验证输入并拒绝超过100的数字,如果您不想处理动态内存分配,但在现实世界中这是非常罕见的,并且动态内存分配是一个非常困难的问题必要的
你不应该用一个字符的名称来命名变量,特别是如果变量的寿命很长的话。最好使用一个好的描述性名称,如columnsumber
。很抱歉,这样不起作用。我们可以帮你解决代码中的问题,但我们不会为你编写代码。所以你需要更具体一些……你被困在哪里了?你知道那个程序吗开始于:intmain(void){….}
那么,您无法解决的问题是什么?获取用户输入?创建二维数组?填充数组?…首先尝试实现#1,并使用
printf将其打印回标准输出,以查看输入是否正确读取。然后尝试实现#2和#3,并打印二维数组的内容,以查看其是否有效。然后尝试实现#4.如果您对这些步骤中的任何一个有特定问题,欢迎您提出该特定问题。以这种方式使用scanf
是不安全的。您可能需要阅读此内容以了解更多信息:scanf(“%d”、&rows);
=>If(scanf(“%d”、&rows)!=1)退出(1)谢谢你的指导。你现在可以解决问题,但没有使用malloc。@Xavier99:一般来说,如果你认为一个答案解决了你的问题,那么请接受它。尽管你只能接受一个答案。但是如果你有15个信誉点,那么你可以投票给所有你认为有用的答案。如果你认为没有答案解决了你的问题,你就可以接受它也可以写下自己的答案并接受。