[英]How do you load an array with up to 10,000 numbers in C with a for loop?
这是我到目前为止。 我的随机数生成器可以工作,但我不确定如何将用户想要的数字加载到数组中。 它还检查以确保输入的数字超过 2 个且少于 10,000 个。
#include <stdio.h>
int randu(int randoms);
int main (int argc, char *argv[]) {
int numsor;
int randoms[];
int x=0;
if (argc == 1){
printf("How many numbers do you wish to sort? \n");
scanf("%d", &numsor);
}
if (argc == 2){
sscanf(argv[1], "%d", &numsor);
}
if (argc > 2){
printf("how many numbers do you wish to sort? \n");
scanf("%d", &numsor);
}
while (numsor<2 || numsor>10000){
if (numsor < 2){
printf("Error please enter a number more than 2. \n");
}
else{
printf("Error please enter a number less than 10,000. \n");
}
scanf("%d", &numsor);
}
}
int randu(int numsor){
static int seed=17;
seed=(25179*seed+13849)%65536;
return seed;
};
这是我应该通过的确切伪代码。
编写一个程序,允许用户生成任意数量的随机数(最多 10,000 个),将它们按升序排序,然后打印排序后的数字。 您必须使用数组来存储数字,并使用子例程来生成和排序数字。 您必须确保用户选择至少 2 个号码但不超过 10,000 个。 用户希望排序的数字数量可能来自命令行,如果不是,则应提示用户。 排序的输出必须在一行上,由一个空格分隔。
Main的伪代码:
如果用户在命令行输入要生成和排序的数字数量
o 转换该数字并将其分配给适当的变量 否则
o 询问用户他们希望生成和排序的数字数量
o 将输入读入适当的变量
当用户输入的数字数量小于 2 或大于 10,000
o 显示错误信息
o 询问他们希望生成和排序多少个数字 o 阅读输入
----这就是我的问题开始的地方。------
使用 for 循环将指定数量的随机数加载到数组中
调用冒泡排序器(传递数组和其中的项目数)
使用 for 循环打印从第一项到最后一项的排序数组。
int randu(void);
Definitions:
int randu(){
static int seed= 17;
seed = (25179*seed+13849)%65536; return seed;
}
void bubble(int *, int);
void bubble(int a[], int n) { int i, j;
for (i = 0; i < n-1; i++) for (j = n-1; i < j; j--)
if (a[j-1] > a[j]) swap(&a[j-1],&a[j]);
void swap(int *, int *);
void swap(int *a, int *b) { int temp;
temp = *a; *a = *b; *b = temp;
}
}
只需这样做: int* randoms = (int *)malloc(sizeof(int)*numsor); // 分配整数
只需使用 for(int i = 0; i < numsor; i++) { randoms[i] = 在这里生成随机数; }
#include "stdio.h"
#include "malloc.h"
int randu() {
static int seed= 17;
seed = (25179*seed+13849)%65536;
return seed;
}
void swap(int *a, int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubble(int a[], int n) {
int i, j;
for (i = 0; i < n-1; i++) {
for (j = n-1; i < j; j--) {
if (a[j-1] > a[j]) {
swap(&a[j-1],&a[j]);
}
}
}
}
void main (int argc, char *argv[]) {
int numsor;
/* Your input logic here ... */
int* randoms = (int*)malloc(sizeof(int) * numsor);
for (int i = 0; i < numsor; i++) {
randoms[i] = randu();
}
bubble(randoms, numsor);
for (int i = 0; i < numsor; i++) {
printf("[%d]: %d\n", i, randoms[i]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.