배열을 정렬하고 특정 숫자를 검색하는 프로그램을 작성하는 과제가 있습니다. 이미 수행 한 부분입니다. 사용자가 임의의 값을 500보다 작게 설정하는 크기로 배열을 초기화 하시겠습니까? 나는 알 수없는 크기가 아닌 알려진 크기로 어떻게하는지 안다. 입력/출력 예 : 는 "배열의 크기를 입력주십시오 : 5"배열을 지정된 크기로 1에서 500 사이의 임의의 값으로 초기화합니다.
-1
A
답변
1
이 당신을 도울 것입니다.
int main(void)
{
int n,i;
n=rand()%500; // Get random value
int arr[n]; // Initialize the dynamic array
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
// Do your stuff
}
0
당신은 같은 것을 할 수 있습니다
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void printArray(int* p, int size)
{
for (int j = 0; j < size; ++ j) printf("%d ", p[j]);
printf("\n");
}
int main(void) {
srand(time(NULL)); // Start with a random seed based on time
int n = 0;
printf("Which array size do you need?\n");
if (scanf("%d", &n) != 1 || n < 1)
{
printf("Wrong input\n");
exit(0);
};
printf("Creating random array of size %d\n", n);
int* p = malloc(n * sizeof(*p)); // Reserve memory
for (int j = 0; j < n; ++j) p[j] = rand() % 500; // Generate random numbers
printArray(p, n); // Print the result
free(p); // free the allocated memory
return 0;
}
+0
모든 사람들에게 감사한다! –
덕분에 사람을! 하지만 난 그것을 바꾸고 난 그냥 % r을 랜덤 값이 필요합니까? –
VLA는이 경우에는 더 좋은 옵션이 아닙니다. ('n'이 큰 숫자인지 확인하지 않고 스택 오버플로를 일으킬 수 있습니다. http://stackoverflow.com/q/7326547/1606345 참조), 왜 안 되죠? 'malloc'? –
@KeineLust 당신은 바로 메모리 할당에 관한 것입니다. 하지만 그는 이미 최대 500 개 범위를 지정했습니다. –