求助
题目:一个具有 15 个整型数组元素的一维数组 A。 实现以下功能:1)使用 srand()和 rand()函数初始化该一维数组,使其每个数组 元素在-100 到 200 之间(含-100 和 200);
2)在显示器上显示所有生成的数组元素值;
3)对该数组按照由小到大(或由大到小)的顺序进行排序(排序方 法不限),并在显示器上显示排序后的数组;
4)删除下标为 10 的数组元素值,并在显示器上显示删除后的结果。
用子函数完成各分功能。 本帖最后由 jhq999 于 2021-11-9 20:40 编辑
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Rndary(int* inary,int arylen);
int Putary(int* inary,int arylen);
int Sortary(int* inary,int arylen);
int Delary(int* inary,int index,int *parylen);
int Rndary(int* inary,int arylen)
{
int i=0,j=0,rndval=0;
srand(unsigned int(time(NULL)));
for(i=0;i<arylen;i++)
{
rndval=rand()%301-100;
for(j=0;j<i;j++)
{
if(inary==rndval)break;
}
if(j==i)inary=rndval;
else
i--;
}
return 0;
}
int Putary(int* inary,int arylen)
{
int i=0;
for(i=0;i<arylen;i++)
{
printf("%d,",inary);
}
return 0;
}
int Sortary(int* inary,int arylen)
{
int i=0,j=0,flag=1;
for(i=0;i<arylen;i++)
{
flag=1;
for(j=1;j<arylen-i;j++)
{
if(inary>inary)
{
flag=0;
int tmp=inary;
inary=inary;
inary=tmp;
}
}
if(flag)break;
}
return 0;
}
int Delary(int* inary,int index,int *parylen)
{
int i=0;
for(i=index;i<*parylen;i++)//存疑如果是0开始的下标i<*parylen-1
{
inary= inary;//inary= inary;
}
*parylen--;
return 0;
}
int main()
{
int a={0};
Rndary(a,15);
Sortary(a,15);
Putary(a,15);
int len=15;
Delary(a,10,&len);
Putary(a,len);
return 0;
}
ZXPoo 发表于 2021-11-9 17:45
可以用低阶一点的方法写吗,看不太懂
以下已经是我的简单代码,希望对你有帮助
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*---------------这是排序函数----------------*/
int sort(const void * elem1, const void * elem2) // 定义函数:用于进行排序
{
int f = *((int*)elem1);
int s = *((int*)elem2);
if (f > s) return1;
if (f < s) return -1;
return 0;
}
int main()
{
/*------------------创建数组-----------------*/
int arr; // 定义一个具有 15 个整数的数组
srand((unsigned)time(0)); // 随机种子
for(int i = 0; i < 15; i++) arr = rand()%(301)-100; // 数组赋值随机数 -100 至 200 之间, = rand()%(b-a))+a)
for(int i = 0; i < 15; i++) printf("%d ", arr); // 打印数组
printf("\n"); // 换行
/*------------------排序-----------------*/
qsort(arr, sizeof(arr)/sizeof(*arr), sizeof(*arr), sort); // 排序
for(int i = 0; i < 15; i++) printf("%d ", arr); // 打印数组
printf("\n"); // 换行
/*------------------删除元素-----------------*/
for(int i = 10; i < 15; i++) arr = arr; // 删除下标为 10 的数组元素值
for(int i = 0; i < 14; i++) printf("%d ", arr); // 打印数组
return 0;
}输出结果:163 -68 42 57 -93 -23 160 159 10 165 144 -2 106 191 -24
-93 -68 -24 -23 -2 10 42 57 106 144 159 160 163 165 191
-93 -68 -24 -23 -2 10 42 57 106 144 160 163 165 191
页:
[1]