'scanf'不会将值n传递给for循环
感谢您抽出宝贵时间表示感谢。终端打印阵列的大小。我希望扫描该值并将其称为'n'。然后将该值'n'传递给循环,其中将小于999的随机数分配给该数组的不同部分。
#include <stdio.h>
#include <stdlib.h>
int n;
int arraySize;
int randN;
int rand();
int parameter = 999;
int main()
{
printf("What is the size of the array\n");
scanf("%d\n", &n);
//here is the scanf
int i;
for(i = 0 ; i < n; i++ )
{
int array[n];
randN=rand();
if (randN <= parameter)
{
array[i]=randN;
return 0;
}
return 0;
}
}
答案 0 :(得分:1)
数组被声明为循环体中的第一行。
这意味着,对于每次循环迭代,都会创建数组,设置一个元素,然后数组不再存在。
如果您希望循环填充整个数组,请在循环之前声明数组。这也将确保数组可以在循环之后使用....所有元素都在循环中填充。
答案 1 :(得分:0)
删除格式字符串末尾的\ n。 scanf尝试按格式字符串中的指定获取输入,\ n强制用户输入其他换行符
scanf("%d", &n);
答案 2 :(得分:0)
见user3279954的回答
参见AnT的评论
“返回0;”语句将在循环的第一次迭代中终止程序,无论调用rand()返回的值是什么
另外:不要自己声明库函数(比如rand()),而是包含相应的头文件,这里已经包含了stdlib.h。
#include <stdio.h>
#include <stdlib.h>
int n;
int arraySize;
int randN;
int parameter = 999;
int main()
{
printf("What is the size of the array\n");
scanf("%d", &n);
int array[n];
int i;
for (i = 0 ; i < n; i++ )
{
// This loop below should be optimized for any productive use
// easy solutions like random%1000 (yielding values from 0
// to 999) will bias some values over others.
do {
randN=rand();
} while (randN > parameter);
// This loop above should be optimized for any productive use
array[i]=randN;
}
for (i = 0 ; i < n; i++ )
{
printf("%i ", array[i]);
}
return 0;
}
答案 3 :(得分:-1)
好的,所以你的代码有些东西:
#include <stdio.h>
#include <stdlib.h>
int n;
int arraySize;
int randN;
int rand();
int parameter = 999;
int main()
{
printf("What is the size of the array\n");
scanf("%d", &n); // remove the \n
// in C, you have to use a const to create an array
const int arrSize = n;
// create the array BEFORE, entering the for loop
int array[arrSize];
int i;
for(i = 0 ; i < n; i++ )
{
// this guarantees that you will get a number less than "parameter"
randN=rand() % parameter;
array[i]=randN;
// return 0; you don't want this return
}
// so you can see what got stored
for(i = 0 ; i < n; i++ )
printf("%d ", array[i]);
return 0;
}
编辑:为数组中的值添加了printf