我正在尝试在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/

10-12 01:28
查看更多