C语言题目要求如下: 1.输入数字(最多20个数字) 2.计算平均值 3.找最大值 4.从小到大

2025-05-10 00:05:02
推荐回答(3个)
回答1:

#include 
#include 
#include 
int arr[20], j = 0;
int avg(int n)
{
        int i, sum;
        sum = 0;
        for (i = 0; i < n; i++) {
                sum += arr[i];
        }
        return sum / n;
}
void bsort(int n)
{
        int i, k, tmp;
        for (k = 0; k < n - 1; k++) {
                for (i = 0; i < n - 1 - k; i++) {
                        if (arr[i] > arr[i+1]) {
                                tmp = arr[i];
                                arr[i] = arr[i+1];
                                arr[i+1] = tmp;
                        }
                }
        }
}
int max(int n)
{
        bsort(n);
        return arr[n - 1];
}
int mid(int n)
{
        bsort(n);
        return n % 2 ? arr[(n + 1) / 2 + 1] : (arr[n / 2 - 1] + arr[n / 2]) / 2;
}
int main()
{
        int i, k;
        do {
                printf("input your choice:");
                scanf("%d", &i);
                switch (i) {
                case 1:
                        memset(arr, 0, sizeof(int) * 20);
                        printf("how many nums?\n");
                        scanf("%d", &j);
                        if (j > 20) {
                                printf("no more than 20!retry\n");
                                break;
                        }
                        for (k = 0; k < j; k++) {
                                printf("input num %d:", k + 1);
                                scanf("%d", &arr[k]);
                        }
                        printf("input end\n");
                        break;
                case 2:
                        if (!j) {
                                printf("not input numers! retry\n");
                                break;
                        }
                        printf("avg num is %d.\n", avg(j));
                        break;
                case 3:
                        if (!j) {
                                printf("not input numers! retry\n");
                                break;
                        }
                        printf("max num is %d.\n", max(j));
                        break;
                case 4:
                        if (!j) {
                                printf("not input numers! retry\n");
                                break;
                        }
                        bsort(j);
                        printf("bubble sort in ascending\n");
                        for (k = 0; k < j; k++) printf("%d ", arr[k]);
                        printf("\n");
                        break;
                case 5:
                        if (!j) {
                                printf("not input numers! retry\n");
                                break;
                        }
                        bsort(j);
                        printf("bubble sort in descending\n");
                        for (k = j - 1; k >= 0; k--) printf("%d ", arr[k]);
                        printf("\n");
                        break;
                case 6:
                        if (!j) {
                                printf("not input numers! retry\n");
                                break;
                        }
                        printf("mid num is %d.\n", mid(j));
                        break;
                case 0:
                        printf("end program!\n");
                        return 0;
                default:
                        printf("wrong input!retry\n");
                        break;
                }
        } while (i);
}

 

效果:

 

纯手打,求采纳,谢谢~

回答2:

#include 
#include 
int arr[20]={0};
int many;      //个数
void Menu();  //菜单函数
void _scanf(); //输入数据
void Max(); //最大值
void Average(); //计算平均值
void Median();  //找出中位数
void SORT_max();    //从大到小
void SORT_min();   //从小到大
void _scanf()
{
 int loop=0;
 printf("多少个数字: ");
 scanf("%d",&many);
 for( ; loop < many; loop++)
 {
  printf("输入数字%d: ",loop+1);
  scanf("%d",&arr[loop]);
 }
}
void Max()
{
 int i = 1, max = arr[0];
 for( ; i < many; i++)
 {
  max < arr[i]?max = arr[i] : i++;
 }
 printf("Max:%d\n\n",max);
}
void Median()  //找出中位数
{
 int k,j,Team;
 for(j = 1; j < many; j++)
 {
  for(k = many - 1; k >= j; k--)
  {
   if(arr[k] < arr[k-1])  //从小到大
   {
    Team = arr[k-1];
    arr[k-1] = arr[k];
    arr[k] = Team;
   }
  }
 }
 printf("中位数为:%d\n\n",many % 2 == 0?(arr[many/2] + arr[many/2-1])/2:arr[many/2]); //判断奇偶然后输出中位数
}
void SORT_max()
{
 int j, k, Team;
 for(j = 1; j < many; j++)
 {
  for(k = many - 1; k >= j; k--)
  {
   if(arr[k] > arr[k-1])  //从大到小
   {
    Team = arr[k-1];
    arr[k-1] = arr[k];
    arr[k] = Team;
   }
  }
 }
 printf("从大到小排序如下: \n\n\n");
 for(j = 0; j < many; j++)
  printf("%3d ",arr[j]);
}
void SORT_min()
{
 int j, k, Team;
 for(j = 1; j < many; j++)
 {
  for(k = many - 1; k >= j; k--)
  {
   if(arr[k] < arr[k-1])  //从小->大
   {
    Team = arr[k-1];
    arr[k-1] = arr[k];
    arr[k] = Team;
   }
  }
 }
 printf("从小到大排序如下: \n\n\n");
 for(j = 0; j < many; j++)
  printf("%3d ",arr[j]);
}
void Average()  //计算平均值
{
 double SUM=0.0;
 int i;
 for(i = 0; i < many; i++)
  SUM += arr[i];
 printf("\n\n平均值为:%.5f\n\n",SUM/many);
}
void Menu()
{
 int choice;
 while(1)
 {
  printf("  1.输入数字\n\n"
   "  2.计算平均值\n\n"
   "  3.找最大值\n\n"
   "  4.从小到大排序\n\n"
   "  5.从大到小排序\n\n"
   "  6.找中位数\n\n"
   "  0.退出\n\n"
   );
  printf("输入选择: ");
  scanf("%d",&choice);
  switch(choice)  //选择菜单
  {
  case 0:system("pause");exit(0); break; //End
  case 1:_scanf();   system("pause");system("CLS");break;
  case 2:Average();  system("pause");system("CLS");break;
  case 3:Max();     system("pause");system("CLS");break;
  case 4:SORT_max(); system("pause"); system("CLS");break;
  case 5:SORT_min();  system("pause");system("CLS");break;
  case 6:Median(); system("pause");system("CLS");break;
  default:printf("输入输错,重新输入!\n");system("CLS");Menu();
  }
 }
}
int main()
{
 Menu();
}

回答3:

你去相关论坛里问问去