鱼C论坛

 找回密码
 立即注册
查看: 2437|回复: 5

[已解决]救命这个怎么写

[复制链接]
发表于 2022-6-6 14:29:22 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
随机产生10个1~100之间的整数存放于数组a中,将这些数据按降序排列。再从键盘输入一个整数,将这个整数插入到a数组中使得数组中的整数仍然按降序排列
最佳答案
2022-6-6 15:07:04
本帖最后由 临时号 于 2022-6-6 15:10 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. int main()
  5. {
  6.         int a[11];
  7.         int i;
  8.         int j;
  9.         int b;
  10.         srand(time(0));
  11.        
  12.         for(i=0;i<10;i++){
  13.                 a[i] = rand()%100+1;
  14.         }
  15.         for(i=0;i<10;i++){
  16.                 b=i;
  17.                 for(j=b+1;j<10;j++){
  18.                         if(a[b]<a[j]){
  19.                                 b=j;
  20.                         }
  21.                 }
  22.                 if(b-i){
  23.                         j=a[b];
  24.                         a[b]=a[i];
  25.                         a[i]=j;
  26.                 }
  27.         }
  28.    
  29.         scanf("%d",a+10);
  30.         for(i=10;i;i--){
  31.                 if(a[i]<=a[i-1]){
  32.                         break;
  33.                 }
  34.                 b=a[i];
  35.                 a[i]=a[i-1];
  36.                 a[i-1]=b;
  37.         }
  38.    
  39.         // 观察数组
  40.         for(i=0;i<11;i++){
  41.                 printf("%d ",a[i]);
  42.         }
  43.         printf("\n");
  44.         return 0;
  45. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-6-6 15:07:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 临时号 于 2022-6-6 15:10 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. int main()
  5. {
  6.         int a[11];
  7.         int i;
  8.         int j;
  9.         int b;
  10.         srand(time(0));
  11.        
  12.         for(i=0;i<10;i++){
  13.                 a[i] = rand()%100+1;
  14.         }
  15.         for(i=0;i<10;i++){
  16.                 b=i;
  17.                 for(j=b+1;j<10;j++){
  18.                         if(a[b]<a[j]){
  19.                                 b=j;
  20.                         }
  21.                 }
  22.                 if(b-i){
  23.                         j=a[b];
  24.                         a[b]=a[i];
  25.                         a[i]=j;
  26.                 }
  27.         }
  28.    
  29.         scanf("%d",a+10);
  30.         for(i=10;i;i--){
  31.                 if(a[i]<=a[i-1]){
  32.                         break;
  33.                 }
  34.                 b=a[i];
  35.                 a[i]=a[i-1];
  36.                 a[i-1]=b;
  37.         }
  38.    
  39.         // 观察数组
  40.         for(i=0;i<11;i++){
  41.                 printf("%d ",a[i]);
  42.         }
  43.         printf("\n");
  44.         return 0;
  45. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 17:09:22 | 显示全部楼层
本帖最后由 jhq999 于 2022-6-6 17:18 编辑

用数组模拟链表
  1. #include <bits/stdc++.h>

  2. using namespace std;

  3. int main()
  4. {
  5.     int a[24]={0},i,j;
  6.     srand(time(0));
  7.     a[0]=a[1]=0;
  8.     for( i=2;i<22;i+=2)
  9.     {
  10.         a[i]=rand()%100+1;
  11.         for(j=0;a[j+1];j=a[j+1])
  12.         {
  13.             if(a[i]<a[a[j+1]])break;
  14.         }
  15.         a[i+1]=a[j+1];
  16.         a[j+1]=i;

  17.     }
  18.     j=a[1];
  19.     while(a[j])
  20.     {
  21.         printf("%4d  ",a[j]);
  22.         j=a[j+1];
  23.     }
  24.     scanf("%d",a+22);
  25.     for(j=0;a[j+1];j=a[j+1])
  26.     {
  27.         if(a[22]<a[a[j+1]])break;
  28.     }
  29.     a[23]=a[j+1];
  30.     a[j+1]=22;
  31.     j=a[1];
  32.     while(a[j])
  33.     {
  34.         printf("%4d  ",a[j]);
  35.         j=a[j+1];
  36.     }
  37.     return 0;
  38. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 17:50:50 | 显示全部楼层
C++
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdlib>
  4. #include <ctime>

  5. void swap(int& a, int& b) {
  6.         int t = a;
  7.         a = b;
  8.         b = t;
  9. }

  10. using std::vector, std::string;
  11. using std::cout, std::cin, std::endl;
  12. void show(string str, vector<int> arr) {
  13.         cout << str << ": ";
  14.         for (const int& num : arr) {
  15.                 cout << num << " ";
  16.         }
  17.         cout << endl;
  18. }

  19. int main(void) {
  20.         int a = 1, b = 100, num;
  21.         vector<int> arr;
  22.         srand((unsigned)time(NULL));

  23.         for (int i = 0; i < 10; ++i) {
  24.                 arr.push_back((rand() % (b - a + 1)) + a);
  25.         }
  26.        
  27.         show("初始数组", arr);

  28.         for (int i = 0; i < 9; ++i) {
  29.                 for (int j = i + 1; j < 10; ++j) {
  30.                         if (arr[i] < arr[j]) {
  31.                                 swap(arr[i], arr[j]);
  32.                         }
  33.                 }
  34.         }

  35.         show("降序排序", arr);

  36.         cin >> num;

  37.         for (int i = 0; i < 10; ++i) {
  38.                 if (arr[i] < num) {
  39.                         arr.insert(arr.begin() + i, num);
  40.                         break;
  41.                 }
  42.         }

  43.         show("插入整数", arr);
  44.         return 0;
  45. }
复制代码

C
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>

  5. void swap(int *a, int *b) {
  6.         int t = (*a);
  7.         (*a) = (*b);
  8.         (*b) = t;
  9. }

  10. void show(char *str, int *arr, size_t N) {
  11.         printf("%s ", str);
  12.         for (int i = 0; i < N; ++i) {
  13.                 printf("%d ", arr[i]);
  14.         }
  15.         printf("\n");
  16. }

  17. int main(void) {
  18.         int a = 1, b = 100, num;
  19.         int arr[11];
  20.         time_t t;
  21.         srand((unsigned)time(NULL));

  22.         for (int i = 0; i < 10; ++i) {
  23.                 arr[i] = (rand() % (b - a + 1)) + a;
  24.         }
  25.        
  26.         show("初始数组", arr, 10);

  27.         for (int i = 0; i < 9; ++i) {
  28.                 for (int j = i + 1; j < 10; ++j) {
  29.                         if (arr[i] < arr[j]) {
  30.                                 swap(&arr[i], &arr[j]);
  31.                         }
  32.                 }
  33.         }

  34.         show("降序排序", arr, 10);

  35.         scanf("%d", &num);

  36.         for (int i = 0; i < 10; ++i) {
  37.                 if (arr[i] < num) {
  38.                         for (int j = 10; j > i; --j) {
  39.                                 arr[j] = arr[j - 1];
  40.                         }
  41.                         arr[i] = num;
  42.                         break;
  43.                 }
  44.         }

  45.         show("插入整数", arr, 11);
  46.         return 0;
  47. }
复制代码
Python
  1. import random

  2. arr = [random.choice(range(1, 101)) for _ in range(10)]

  3. print("初始数组:", *arr)

  4. for i in range(9):
  5.     for j in range(i + 1, 10):
  6.         if arr[i] < arr[j]:
  7.             arr[i], arr[j] = arr[j], arr[i]

  8. print("降序数组:", *arr)

  9. num = int(input())

  10. for i in range(10):
  11.     if arr[i] < num:
  12.         arr.insert(i, num)
  13.         break

  14. print("插入整数:", *arr)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 18:09:51 | 显示全部楼层
本帖最后由 jhq999 于 2022-6-6 18:51 编辑
  1. #include <bits/stdc++.h>
  2. #include <vector>
  3. using namespace std;
  4. int numcmp(int num1,int num2)
  5. {
  6.     return num1<num2;
  7. }
  8. int main()
  9. {

  10.     vector<int> s;
  11.     srand(time(0));

  12.     for(int i=0;i<10;i+=1)
  13.     {
  14.         s.push_back(rand()%100+1);
  15.     }
  16.     sort(s.begin(),s.end(),numcmp);
  17.     for(int i:s)printf("%4d",i);
  18.     printf("\n");
  19.     int r;
  20.     scanf("%d",&r);
  21.     s.push_back(r);
  22.     sort(s.begin(),s.end(),numcmp);
  23.     for(int i:s)printf("%4d",i);
  24.     return 0;
  25. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 22:00:52 | 显示全部楼层
来整一个“现代 C++ ”版本
  1. #include<algorithm>
  2. #include<iostream>
  3. #include<iterator>
  4. #include<random>
  5. #include<vector>
  6. using namespace std;
  7. int main(){
  8.     mt19937_64 engine{ random_device()() };
  9.     uniform_int_distribution<> distribute(1, 100);
  10.     vector<int> array(10);
  11.     generate(array.begin(), array.end(), [&engine, &distribute](){ return distribute(engine); });
  12.     sort(array.begin(), array.end(), greater<>());
  13.     ranges::copy(array, ostream_iterator<int>(cout, " "));
  14.     cout << endl;
  15.     int new_value;
  16.     cin >> new_value;
  17.     const auto bound = upper_bound(array.cbegin(), array.cend(), new_value, greater<>());
  18.     array.insert(bound, new_value);
  19.     ranges::copy(array, ostream_iterator<int>(cout, " "));
  20.     cout << endl;
  21.     return 0;
  22. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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