Emma! 发表于 2021-11-25 17:54:35

救救孩子吧,数组和函数的题

傻眼貓咪 发表于 2021-11-25 19:17:09

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
int arr;

/*随机产生 100 个 之间的随机数*/
void isRandom(){ for(size_t i = 0; i < 100; i++) arr = (rand() % (9000 - 50 + 1)) + 50; }

/*判断该数是否被 5、7、9 除余数均为 2*/
bool isTrue(int num){ return ((num%5 == 2) && (num%7 == 2) && (num%9 == 2)); }

/*被 5、7、9 除余数均为 2 的数的个数*/
int count(){
    int res = 0;
    for(size_t i = 50; i <= 9000; i++){
      if(isTrue(i)){
            res++;
      }
    }
    return res;
}

/*选择法降序*/
void sort(int n, int arr){
    for(size_t i = 0; i < n; i++){
      for(size_t j = i+1; j < n; j++){
            if(arr < arr){
                arr ^= arr;
                arr ^= arr;
                arr ^= arr;
            }
      }
    }
}

/*折半查找法*/
int find(int start, int end, int arr[], int num){
    int mid = (start + end) >> 1;
    if(mid > 0){
      if(num < arr) find(start, mid, arr, num);
      else if(num > arr) find(mid+1, end, arr, num);
      else return mid;
    }
    else if(!(mid)) return arr == num ? 0 : -1;
}

int main()
{
    isRandom(); // 调用函数:随机产生 100 个 之间的随机数
    printf("100 个随机数:\n");
    for(size_t i = 0; i < 100; i++){
      printf("%d ", arr);
      if(!((i+1)%10)) printf("\n");
    }
   
    printf("位于 之间能被 5、7、9 除余数均为 2 的数的个数:%d\n", count()); // 调用函数:计算出被 5、7、9 除余数均为 2 的数的个数
    sort(100, arr); // 调用函数:选择法降序
   
    int x;
    printf("输入一个整数位于 之间:");
    scanf("%d", &x);
    int res = find(0, 100, arr, x);
    res >= 0 ? printf("%d 在数组位置:%d\n", x, res) : printf("数字 %d 不存在数组里\n", x);
    return 0;
}

Gacy 发表于 2021-11-25 19:37:40

傻眼貓咪 发表于 2021-11-25 19:17


呜呜学会了{:10_254:}

Emma! 发表于 2021-11-27 15:03:29

傻眼貓咪 发表于 2021-11-25 19:17


太牛了谢谢大佬!!!!!!!{:10_254:}{:10_254:}
页: [1]
查看完整版本: 救救孩子吧,数组和函数的题