【发布时间】:2017-07-22 16:53:31
【问题描述】:
我想让用户定义他们希望存储在我的结构成员中的随机数的数量。 这是我目前所拥有的。
struct BigInt {
int A;
int rdm;
};
struct BigInt A[300];
struct BigInt rdm[10]={0,1,2,3,4,5,6,7,8,9};
printf("Number");
int len;
scanf("%i",&len);
srand(time(NULL));
int i=0;
while (i!=len){
int r=rand()%10;
A[i]=rdm[r];
printf("\nr:%i\n",r);
printf("A[i]:%i",A[i]);
i++;
}
但是我得到了奇怪的值,它并没有像我预期的那样工作。我不知道为什么,我做错了什么?
【问题讨论】:
-
打开编译器警告。 注意这些警告,甚至将它们视为错误。编辑:编译器可能抱怨
printf()调用中"%i"和A[i]之间的不匹配。 -
struct BigInt有两个成员。 -
您将
A和rdm用作成员名称和数组名称。表示你还没有掌握什么是结构,以及它是如何工作的。 -
我很惊讶你的编译器竟然编译了这段代码。你需要更好地理解结构。
-
请注意,
struct BigInt rdm[10]={0,1,2,3,4,5,6,7,8,9};初始化了 10 元素数组rdm的前 5 个元素。这是因为每个BigInt有两个成员,所以0初始化rdm[0].A,1初始化rdm[0].rdm,2初始化rdm[1].A,等等。它也可以写成:struct BigInt rdm[10]={ { 0, 1 }, { 2, 3 }, { 4, 5 }, { 6, 7 }, { 8, 9 }, };并且会得到相同的效果。您还可以使用:struct BigInt rdm[10]={ { 0 }, { 1 }, { 2 }, { 3 }, { 4 }, { 5 }, { 6 }, { 7 }, { 8 }, { 9 } };,它将设置.A成员,而将.rdm置零。等等。