数组处理列表

#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来输出,不同种类的输出有缩进,运行后看着会舒服一点。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值