我应该写一个程序,处理100个正数的序列。程序应该有3个不同的功能,可以从菜单中选择。
1.使用随机生成器生成一个数字序列,并在屏幕上打印数字。生成的数字应在0 ≤ n ≤ 900的范围内
1.我必须用冒泡排序对序列进行排序,然后必须打印数字,我不能使用内置的排序函数,如qsort。
1.退出程序。1和2必须在自己的函数中。程序每次打印数字时,必须打印成十行十列的表格。只有选择了选项一,才能选择选项二。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100
#define N 10
#define INVALID 0
#define VALID 1
void randomNum() {
//random number gen
int num[SIZE] = {0};
int i = 0;
srand(time(NULL));
for(i = 0; i < SIZE; i++) {
num[i] = rand() % 901;
}
for(i = 0; i < SIZE; i++) {
printf("%4d", num[i]);
if(i % 10 == 9)
printf("\n");
}
}
void sort() {
//sort of the generated number sequence
int num[SIZE] = {0};
int i = 0;
int j = 0;
int temp = 0;
for (int i = 0 ; i < SIZE; i++)
{
for (int j = 0; j < SIZE - 1; j++)
{
if (num[j] > num[j+1])
{
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
for(i = 0; i < SIZE; i++) {
printf("%4d", num[i]);
if(i % 10 == 9)
printf("\n");
}
}
int main() {
randomNum();
printf("\n");
sort();
return 0;
}
我已经找到了如何生成一个序列并排序它的解决方案,当所有代码都在main()中时,它可以正常工作,但是,当我在main()上方放入自己的函数时,它不工作。我被卡住了,不知道如何前进。当我运行程序时,它生成了一个随机序列,但排序函数只打印出100个零。
2条答案
按热度按时间qacovj5a1#
我修改了你的代码,试图以一种非常直接的方式做几乎相同的事情。
示例输出:
wkftcu5l2#
这是我的代码现在的样子。我想程序现在运行的还不错,但是当我运行它的时候,它会生成一个随机数序列,排序,然后打印出最大最小,平均值和中值。但是当我输入一个数字进行二进制搜索的时候,它会说:找不到一个数字,即使该数字在排序序列中,它为什么会这样做?我该如何修复它?