我正在尝试在10行和10列中打印100个数字的数组,每个数字都是由某个范围内的随机数生成器随机生成的。但是,要么什么都不打印,要么只打印一个数字。我该如何解决?
我看过一些打印数组的示例,但是该代码似乎不适用于我的程序。我还研究了使用数组为随机数生成器植入种子的方法,但是这些方法似乎也不起作用。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int myRandomNumber, i, a;
srand(0);
myRandomNumber = rand();
double doubarr[10][10];
for (a = 0; a <100; a++);
for (i = 0; i<100; i++);
doubarr[i][a]=(double)(rand()%100+1)/2.0;
printf("%.2lf ", doubarr[i][a]);
}
我希望最终结果在上面的代码指定的范围内打印10行和10列随机生成的数字。谢谢!
最佳答案
printf("%.2lf ", doubarr[i][a]);
这将打印出一个值-具体来说,是[i][a]
中位置doubarr
的一个值。由于for
循环周围没有花括号,因此打印代码要在两个花括号都结束之后才执行,因为没有括号的for
循环仅在它们之后执行一行。要打印每个值,您需要遍历数组中的每个值。
话虽这么说,您编写的代码既不编译也不运行,而是segfault:doubarr
的大小为10、10,而您尝试分配的大小为0-100、0-100。
更正的代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int myRandomNumber, i, a;
srand(0);
myRandomNumber = rand();
double doubarr[10][10];
for (a = 0; a <10; a++) {
for (i = 0; i<10; i++) {
doubarr[i][a]=(double)(rand()%100+1)/2.0;
printf("%.2lf ", doubarr[i][a]);
}
}
}
Demo
关于c - 阵列无法打印?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58398911/