关于#c语言#的问题:用函数实现:求数组各元素之和求数组元素最大值和最小值求下标为奇数的数组元素之和求各数组元素的平均值用折半查找法查找某个数用交换法排序要求:先输出类似上一题的菜单

用函数实现:求数组各元素之和求数组元素最大值和最小值求下标为奇数的数组元素之和求各数组元素的平均值用折半查找法查找某个数用交换法排序要求:先输出类似上一题的菜单

#include <stdio.h>
// 求数组各元素之和
int sum(int array[], int length) {
  int result = 0;
  for (int i = 0; i < length; i++) {
    result += array[i];
  }
  return result;
}
// 求数组元素最大值和最小值
void min_max(int array[], int length, int* min, int* max) {
  *min = *max = array[0];
  for (int i = 1; i < length; i++) {
    if (array[i] < *min) *min = array[i];
    if (array[i] > *max) *max = array[i];
  }
}
// 求下标为奇数的数组元素之和
int odd_sum(int array[], int length) {
  int result = 0;
  for (int i = 1; i < length; i += 2) {
    result += array[i];
  }
  return result;
}
// 求各数组元素的平均值
float avg(int array[], int length) {
  return (float)sum(array, length) / length;
}
// 用折半查找法查找某个数
int binary_search(int array[], int length, int value) {
  int low = 0;
  int high = length - 1;
  while (low <= high) {
    int mid = (low + high) / 2;
    if (array[mid] == value) return mid;
    if (array[mid] < value) low = mid + 1;
    else high = mid - 1;
  }
  return -1; // not found
}
// 用交换法排序
void sort(int array[], int length) {
  for (int i = 0; i < length - 1; i++) {
    for (int j = i + 1; j < length; j++) {
      if (array[i] > array[j]) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
      }
    }
  }
}
int main() {
  int array[] = {34, 45, 78, 90, 3, 40, 6101, 1, 76, 24};

相关功能实现如下,望采纳:


求数组各元素之和

int sum_array(int array[], int size)
{
    int sum = 0;
    for (int i = 0; i < size; i++)
    {
        sum += array[i];
    }
    return sum;
}

求数组元素最大值和最小值

void min_max(int array[], int size, int *min, int *max)
{
    *min = *max = array[0];
    for (int i = 1; i < size; i++)
    {
        if (array[i] < *min)
        {
            *min = array[i];
        }
        else if (array[i] > *max)
        {
            *max = array[i];
        }
    }
}

求下标为奇数的数组元素之和

int sum_odd_index(int array[], int size)
{
    int sum = 0;
    for (int i = 0; i < size; i++)
    {
        if (i % 2 == 1)
        {
            sum += array[i];
        }
    }
    return sum;
}

求各数组元素的平均值

double average_array(int array[], int size)
{
    int sum = 0;
    for (int i = 0; i < size; i++)
    {
        sum += array[i];
    }
    return (double)sum / size;
}

用折半查找法查找某个数

int binary_search(int array[], int size, int value)
{
    int low = 0;
    int high = size - 1;
    while (low <= high)
    {
        int mid = (low + high) / 2;
        if (array[mid] == value)
        {
            return mid;
        }
        else if (array[mid] < value)
        {
            low = mid + 1;
        }
        else
        {
            high = mid - 1;
        }
    }
    return -1;
}

用交换法排序

void sort_array(int array[], int size)
{
    for (int i = 0; i < size - 1; i++)
    {
        for (int j = 0; j < size - 1 - i; j++)
        {
            if (array[j] > array[j + 1])
            {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

在使用上述函数时,需要先输出类似上一题的菜单,然后根据用户的选择来调用对应的函数。例如,如果用户选择了求数组元素最大值和最小值,则可以使用以下代码来实现:

int array[] = {1, 2, 3, 4, 5};
int size = 5;
int min, max;

min_max(array, size, &min, &max);
printf("Min: %d, Max: %d\n", min, max);

下面是用C语言实现这些功能的代码示例。

#include <stdio.h>

// 求数组各元素之和
int sum(int array[], int length) {
  int result = 0;
  for (int i = 0; i < length; i++) {
    result += array[i];
  }
  return result;
}

// 求数组元素最大值和最小值
void min_max(int array[], int length, int* min, int* max) {
  *min = *max = array[0];
  for (int i = 1; i < length; i++) {
    if (array[i] < *min) *min = array[i];
    if (array[i] > *max) *max = array[i];
  }
}

// 求下标为奇数的数组元素之和
int odd_sum(int array[], int length) {
  int result = 0;
  for (int i = 1; i < length; i += 2) {
    result += array[i];
  }
  return result;
}

// 求各数组元素的平均值
float avg(int array[], int length) {
  return (float)sum(array, length) / length;
}

// 用折半查找法查找某个数
int binary_search(int array[], int length, int value) {
  int low = 0;
  int high = length - 1;
  while (low <= high) {
    int mid = (low + high) / 2;
    if (array[mid] == value) return mid;
    if (array[mid] < value) low = mid + 1;
    else high = mid - 1;
  }
  return -1; // not found
}

// 用交换法排序
void sort(int array[], int length) {
  for (int i = 0; i < length - 1; i++) {
    for (int j = i + 1; j < length; j++) {
      if (array[i] > array[j]) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
      }
    }
  }
}

int main() {
  int array[] = {34, 45, 78, 90, 3, 40, 6101, 1, 76, 24};


代码如下:
1.求数组各元素之和

int sum(int a[], int n)

{

  int s = 0;

  for (int i = 0; i < n; i++)
  {
    s += a[i];
  }
  return s;
}

2.求数组元素最大值和最小值

void max_min(int a[], int n, int *max, int *min)

{

  *max = *min = a[0];
  for (int i = 1; i < n; i++)
  {
    if (a[i] > *max)
    {
      *max = a[i];
    }
    if (a[i] < *min)
    {
      *min = a[i];
    }
  }
}

3.求下标为奇数的数组元素之和

int odd_sum(int a[], int n)

{

  int s = 0;

  for (int i = 1; i < n; i += 2)
  {
    s += a[i];
  }
  return s;
}

4.求各数组元素的平均值

float avg(int a[], int n)

{
  int s = 0;
  for (int i = 0; i < n; i++)
  {
    s += a[i];
  }
  return (float)s / n;
}

5.用折半查找法查找某个数

int binary_search(int a[], int n, int x)

{

  int low = 0;

  int high = n - 1;
  while (low <= high)
  {
    int mid = (low + high) / 2;
    if (x == a[mid])
    {
      return mid;
    }
    else if (x < a[mid])
    {
      high = mid - 1;
    }
    else
    {
      low = mid + 1;
    }
  }
  return -1;
}

6.用交换法对数组排序

void swap(int *a, int *b) {

  int temp = *a;

  *a = *b;

  *b = temp;
}

void sort(int *arr, int n) {
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      if (arr[i] > arr[j]) {
        swap(&arr[i], &arr[j]);
      }
    }
  }
}

可以参考以下代码:

#include <stdio.h>

#define MAX_SIZE 100

// 求数组各元素之和
int sum(int arr[], int size) {
  int i, total = 0;
  for (i = 0; i < size; i++) {
    total += arr[i];
  }
  return total;
}

// 求数组元素最大值
int max(int arr[], int size) {
  int i, max = arr[0];
  for (i = 1; i < size; i++) {
    if (arr[i] > max) {
      max = arr[i];
    }
  }
  return max;
}

// 求数组元素最小值
int min(int arr[], int size) {
  int i, min = arr[0];
  for (i = 1; i < size; i++) {
    if (arr[i] < min) {
      min = arr[i];
    }
  }
  return min;
}

// 求下标为奇数的数组元素之和
int sum_odd(int arr[], int size) {
  int i, total = 0;
  for (i = 0; i < size; i++) {
    if (i % 2 == 1) {
      total += arr[i];
    }
  }
  return total;
}

// 求数组各元素的平均值
double avg(int arr[], int size) {
  return sum(arr, size) / (double)size;
}

// 折半查找法查找某个数
int search(int arr[], int size, int key) {
  int low = 0, high = size - 1;
  while (low <= high) {
    int mid = low + (high - low) / 2;
    if (arr[mid]

类似上一是哪一题

如有帮助,望采纳
不理解的可以随时问我

#include"Processing_data.h"
 
 
int main()//给定一组数据,求总和(Sum)、平均值(Average_value)、最大值(Max)、最小值(Min)
{
 
    int arr[] = {1,5,7,3,9,2,-2,4,0,6,8,-8};//建立数组
    //int i = 0;
    //printf("请连续输入十个待计算数字 \n");
    //for (i = 0; i < 10; i++)
    //{
    //    scanf("%d", &arr[i]);
    //}
    int sz = sizeof(arr) / sizeof(arr[0]);//sz:计算数组大小
 
    //1.求总和(Sum)
    int sum=Sum(arr,sz);
    printf("这组数据的总和为: %d\n", sum);
 
    //2.平均值(Average_value)
    float av = Average_value(sum, sz);
    printf("这组数据的平均值为: %f\n", av);
    
    //3.最大值(Max)
    int max = Max(arr,sz);
    printf("这组数据的最大值为: %d\n", max);
 
    //4最小值(Min)
    int min = Min(arr, sz);
    printf("这组数据的最小值为: %d\n", min);
    
    return 0;
}
 
 
 
int Sum(int* arr1,int sz1)//求和
{
    int a = 0;
    int c = 0;
    for (int i = 0; i < sz1; i++)//创建一个循环,从下标为0开始依次相加最后返回
    {
        a = arr1[i];
        c = c + a;
    }
    return c;
}
 
 
 
float Average_value(int sum1,int sz1)//平均值
{
    return sum1 / sz1;//根据求和函数得到的值计算平均值
}
 
 
 
int Max(int* arr1, int sz1)//最大值
{
    int i = 0;
    int max = arr1[0];//取数组下标为0的数作为参考
    for (i = 0; i < sz1; i++)//依次比较,最后返回最大值
    {
        if (max < arr1[i])
        {
            max = arr1[i];
        }
    }
    return max;
}
 
 
int Min(int* arr1, int sz1)//最小值
{
    int min = arr1[0];//取数组下标为0的数作为参考
    int i = 0;
    for (i = 0; i < sz1; i++)//依次比较,最后返回最小值
    {
        if (min > arr1[i])
        {
            min = arr1[i];
        }
    }
    return min;
}