鱼C论坛

 找回密码
 立即注册
查看: 2226|回复: 2

求助

[复制链接]
发表于 2021-11-9 14:48:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:一个具有 15 个整型数组元素的一维数组 A。 实现以下功能:
1)使用 srand()和 rand()函数初始化该一维数组,使其每个数组 元素在-100 到 200 之间(含-100 和 200);
2)在显示器上显示所有生成的数组元素值;
3)对该数组按照由小到大(或由大到小)的顺序进行排序(排序方 法不限),并在显示器上显示排序后的数组;
4)删除下标为 10 的数组元素值,并在显示器上显示删除后的结果。

用子函数完成各分功能。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-9 19:20:54 | 显示全部楼层
本帖最后由 jhq999 于 2021-11-9 20:40 编辑

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int Rndary(int* inary,int arylen);
  5. int Putary(int* inary,int arylen);
  6. int Sortary(int* inary,int arylen);
  7. int Delary(int* inary,int index,int *parylen);
  8. int Rndary(int* inary,int arylen)
  9. {
  10.      int i=0,j=0,rndval=0;
  11.       srand(unsigned int(time(NULL)));
  12.       for(i=0;i<arylen;i++)
  13.       {
  14.          rndval=rand()%301-100;
  15.          for(j=0;j<i;j++)
  16.          {
  17.             if(inary[j]==rndval)break;
  18.           }
  19.           if(j==i)inary[i]=rndval;
  20.           else
  21.                i--;
  22.        }
  23.        return 0;
  24. }
  25. int Putary(int* inary,int arylen)
  26. {
  27.     int i=0;
  28.     for(i=0;i<arylen;i++)
  29.     {
  30.        printf("%d,",inary[i]);
  31.      }
  32.     return 0;
  33. }
  34. int Sortary(int* inary,int arylen)
  35. {
  36.      int i=0,j=0,flag=1;
  37.     for(i=0;i<arylen;i++)
  38.     {
  39.        flag=1;
  40.        for(j=1;j<arylen-i;j++)
  41.         {
  42.            if(inary[j-1]>inary[j])
  43.            {
  44.               flag=0;
  45.               int tmp=inary[j-1];
  46.               inary[j-1]=inary[j];
  47.               inary[j]=tmp;
  48.             }
  49.          }
  50.          if(flag)break;
  51.      }
  52.     return 0;
  53. }
  54. int Delary(int* inary,int index,int *parylen)
  55. {
  56.     int i=0;
  57.     for(i=index;i<*parylen;i++)//存疑如果是0开始的下标i<*parylen-1
  58.     {
  59.         inary[i-1]= inary[i];//inary[i]= inary[i+1];
  60.     }
  61.      *parylen--;
  62.     return 0;
  63. }
  64. int main()
  65. {
  66.         int a[15]={0};
  67.         Rndary(a,15);
  68.         Sortary(a,15);
  69.         Putary(a,15);
  70.         int len=15;
  71.         Delary(a,10,&len);
  72.         Putary(a,len);
  73.         return 0;
  74. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-9 19:43:54 | 显示全部楼层
ZXPoo 发表于 2021-11-9 17:45
可以用低阶一点的方法写吗,看不太懂

以下已经是我的简单代码,希望对你有帮助
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. /*---------------这是排序函数----------------*/
  5. int sort(const void * elem1, const void * elem2) // 定义函数:用于进行排序
  6. {
  7.     int f = *((int*)elem1);
  8.     int s = *((int*)elem2);
  9.     if (f > s) return  1;
  10.     if (f < s) return -1;
  11.     return 0;
  12. }

  13. int main()
  14. {
  15.     /*------------------创建数组-----------------*/
  16.     int arr[15]; // 定义一个具有 15 个整数的数组
  17.     srand((unsigned)time(0)); // 随机种子
  18.     for(int i = 0; i < 15; i++) arr[i] = rand()%(301)-100; // 数组赋值随机数 -100 至 200 之间,[a, b] = rand()%(b-a))+a)
  19.     for(int i = 0; i < 15; i++) printf("%d ", arr[i]); // 打印数组
  20.     printf("\n"); // 换行
  21.    
  22.     /*------------------排序-----------------*/
  23.     qsort(arr, sizeof(arr)/sizeof(*arr), sizeof(*arr), sort); // 排序
  24.     for(int i = 0; i < 15; i++) printf("%d ", arr[i]); // 打印数组
  25.     printf("\n"); // 换行
  26.    
  27.     /*------------------删除元素-----------------*/
  28.     for(int i = 10; i < 15; i++) arr[i] = arr[i+1]; // 删除下标为 10 的数组元素值
  29.     for(int i = 0; i < 14; i++) printf("%d ", arr[i]); // 打印数组
  30.     return 0;
  31. }
复制代码
输出结果:
  1. 163 -68 42 57 -93 -23 160 159 10 165 144 -2 106 191 -24
  2. -93 -68 -24 -23 -2 10 42 57 106 144 159 160 163 165 191
  3. -93 -68 -24 -23 -2 10 42 57 106 144 160 163 165 191
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 17:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表