#include <stdio.h>
#include<stdlib.h>
void shuchu(int *num,int n);
void he(int *num,int n);
void average(int *num,int n);
void max(int *num,int n);
void shunxu(int *num,int n);
void shanchu1(int *num,int *n);
void shanchu2(int *num,int *n);
int compare1(const void *a,const void *b);
int compare2(const void *a,const void *b);
int main()
{
//打印菜单
printf("请输入数字选择对应的功能菜单:\n");
printf("1、对数组添加 n 个数 (不直接输出)\n");
printf("2、输出所有数\n");
printf("3、对这 n 个数求和\n");
printf("4、统计 n 个数的平均值\n");
printf("5、求 n 个数的最大值\n");
printf("6、对这 n 个数进行排序 (不直接输出处理后的数组)\n");
printf("7、删除第n个数 (不直接输出处理后的数组)\n");
printf("8、删除数字n (不直接输出处理后的数组)\n");
printf("9、退出\n");
int yx;
int i,n;
int number = 0; /*储存数组总的个数*/
int num[100]={0};
//程序运行
while(1)
{
//选择功能
printf("\n请输入所选功能\n");
scanf("%d",&yx);
if( yx != 9 )
printf("case %d:\n",yx);
//功能一
if(yx == 1)
{
printf(" 输入需要添加的个数:(现已有%d个数)\n",number);
scanf("%d",&n);
if( n != 0 )
printf(" 输入%d个数:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&num[number++]);
}
}
switch(yx)
{
case 2:
shuchu(num,number);
break;
case 3:
he(num,number);
break;
case 4:
average(num,number);
break;
case 5:
max(num,number);
break;
case 6:
shunxu(num,number);
break;
case 7:
shanchu1(num,&number);
break;
case 8:
shanchu2(num,&number);
break;
}
if( yx == 9 )
break;
}
getchar();
printf("输入任意键退出\n");
getchar();
return 0;
}
//(2)
void shuchu(int *num,int n)
{
int i;
printf(" 输出%d个数:\n",n);
for(i=0;i<n;i++)
{
printf(" %d ",num[i]);
}
printf("\n");
}
//(3)
void he(int *num,int n)
{
int sum,i;
sum=0;
for(i=0;i<n;i++)
{
sum+=num[i];
}
printf(" 这%d个数的和为%d\n",n,sum);
}
//(4)
void average(int *num,int n)
{
float ave;
int sum=0; int i;
for(i=0;i<n;i++)
{
sum+=num[i];
}
ave=sum/1.0/n;
printf(" 这%d个数的平均数为%f\n",n,ave);
}
//(5)
void max(int *num,int n)
{
int max,i;
max = num[0];
for(i=0;i<n;i++)
{
if(num[i]>max)
{
max=num[i];
}
}
printf(" 这%d个数的最大值为%d\n",n,max);
}
//(6)
int compare1(const void *a,const void *b)
{
return *(int*)a - *(int*)b;
}
int compare2(const void *a,const void *b)
{
return *(int*)b - *(int*)a;
}
void shunxu(int *num,int n)
{ int x;
printf(" 请输入升序(选择1)还是降序(其他)\n");
scanf("%d",&x);
if( x == 1 )
qsort(num,n,sizeof(int),compare1);
else
qsort(num,n,sizeof(int),compare2);
}
//(7)
void shanchu1(int *num,int* n)
{
int i;
int sc,tnum[100];
int number = 0;
printf(" 请先输入需要删除第几个数字:");
scanf("%d",&sc);
for(i=0;i<*n;i++)
{
if( i == sc )
continue;
else
tnum[number++] = num[i];
}
for( i = 0;i < number ;i++)
{
num[i] = tnum[i];
}
*n = number;
}
//(8)
void shanchu2(int *num,int* n)
{
int i;
int sc,tnum[100];
int number = 0;
printf(" 请先输入需要删除的数字:");
scanf("%d",&sc);
for(i=0;i<*n;i++)
{
if( num[i] == sc )
continue;
else
tnum[number++] = num[i];
}
for( i = 0;i < number ;i++)
{
num[i] = tnum[i];
}
*n = number;
}
可以多次输入,增加了一些功能。对数组的删减增添不会直接输出,可在再次选择功能时选择功能2来输出,不同种类的输出有缩进,运行后看着会舒服一点。