1. 从键盘输入一个正整数n,利用随机函数产生n个10~10000之间的整数并放入一个n维动态数组array中;
2、 编写函数void Print(int* p, int k),该函数的功能是显示数组p中的整数,函数的实现过程要求采用指针进行处理,其中k是数组中元素的个数;
3、对数组array进行排序,并使用Print函数显示数组array的内容以验证排序的正确性;
4、从键盘输入一个10~1000之间的整数m,把m插入到已排序的数组array中,要求插入后数组中的整数仍然保持有序,使用Print函数显示数组array的内容以验证插入数据的正确性。
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void Print(int* p, int k)
{
for (int i = 0;i < k;i++)
{
cout << p[i]<<endl;
}
}
int main()
{
int* arrange = NULL;
int* temp = NULL;
int n, i, m, j;
cout << "请输入数字个数n:";
cin >> n;
arrange = new int[n + 1];
temp = new int[n + 1];
srand((unsigned int)time(NULL));
for (i = 0;i < n+1;i++)
{
arrange[i] = (rand() % 9991) + 10;
temp[i] = 0;
}
for (i = 0;i < n;i++)
{
for (j = 0;j < n-1;j++)
{
if (arrange[j] > arrange[j + 1])
{
temp[j] = arrange[j];
arrange[j] = arrange[j + 1];
arrange[j + 1] = temp[j];
}
}
}
Print(arrange, n);
cout << endl;
cout << "请输入一个10—1000之间的整数:";
cin >> m;
if (m < 10 || m>1000) cout << "输入有误!";
else
{
arrange[n] = m;
for (i = n;i >0;i--)
{
if (m < arrange[i-1])
{
temp[i] = arrange[i - 1];
arrange[i - 1] = arrange[i];
arrange[i] = temp[i];
}
}
Print(arrange, n + 1);
}
delete[]arrange, temp;
return 0;
}
虽说简单,却还是做了一个晚上。基础还是不够牢固!
其中的一个小细节:
解决方案:
这个警告是由于新版本的VC里time_t是64位的,而srand接受32位的unsigned int,所以会丢失数据。
改成srand((unsigned)time(NULL));强制转换time_t到unsigned int就可以了。
继续加油!!