(C语言)实现菜单模块功能(二)(数组及应用):

本文介绍如何使用C语言实现一个菜单模块,包括接收整数、删除特定值、排序、插入元素和计算平均值等功能。通过具体实例展示了数组在不同操作中的应用,同时强调了操作过程中数组元素个数的管理和输出函数的实用性。

菜单第1项完成:

输入一组整数,以-1作为结束的标志,用数组s接收这组数,输出数组中元素的个数和所有元素的值(规定这组数不超过100个,数组中的元素值可以重复出现;例如,输入6 9 5 4 6 7 5 6 8 6 6 2 3 -1,则元素个数为:13) 。

菜单第2项完成:

在完成第1项的基础上,输入一个整数x,将s中值等于输入值x的所有元素从数组中删除,并输出删除后元素的个数和数组元素的各个值(例如, 输入6,则结果为:个数=8 ; 数组元素为: 9 , 5, 4 , 7 ,5 , 8 ,2 ,3 )。

菜单第3项完成:

在完成第2项的基础上,将数组s按从小到大的顺序排序后输出。

菜单第4项完成:

在完成第3项的基础上,输入一个整数,将其插在s的合适位置上,保持从小到大的顺序不变,并输出插入后元素的个数和数组元素的各个值。

菜单第5项完成:

在完成第4项的基础上,求这组数的平均值并输出。

注意:

1、由于需要对数组中的元素进行插入和删除运算,规定操作过程中数的个数不超过100个,定义的数组大小为100即可,有可能浪费;在多种操作中需要知道数组中元素的个数,一定要想办法记住每一项操作前后数组中元素的个数。
2、由于输出数组元素要多次使用,可以编一输出函数,多次调用完成输出。

代码:

#include<stdio.h>
int one(int s[]);
int two(int s[],int x);
void three(int s[],int x);
int four(int s[],int x);
void five(int s[],int x);
int main()
{
 int x,n;
 int s[100];
 printf("请输入你要进行的操作序号:\n");
 do{
  printf("1:输入输出整数\n");
  printf("2:删除某个元素\n");
  printf("3:排序\n");
  printf("4:添加\n");
  printf("5:求平均值\n");
  printf("6:退出程序\n");
  scanf("%d",&n);
 switch(n)
 {
 case 1:
   x=one(s);
   break;
 case 2:
  x=two(s,x);
  break;
 case 3:
  three(s,x);
  break;
 case 4:
  x=four(s,x);
  break;
 case 5:
  five(s,x);
  break;
 }
 }while(n!=6);
}
int one(int s[])
{
 int i=0,j;
 printf("请输入一组整数一‘-1’作为结尾:");
    do{
  scanf("%d",&s[i]);
  i++;
 }while(s[i-1]!=-1);
 printf("共有%d个",i-1);
 printf("输入的整数:");
 for(j=0;j<i-1;j++)
 {
  printf("%5d",s[j]);
 }
 printf("\n");
 return i-1;
}
int two(int s[],int x)
{
 int i=0,j,a;
 printf("请输入要删除的数字:");
 scanf("%d",&a);
 for(i;i<x;i++)
 {
  if(s[i]==a)
  {
   for(j=i;j<x-1;j++)
   {
    s[j]=s[j+1];
   }
   x--;
   i--;
  }
 }
 printf("删除后整数个数为:%d\n",x);
 printf("删除后的整数都为:\n");
 for(i=0;i<x;i++)
 {
  printf("%5d",s[i]);
 }
 printf("\n");
 return x;
}
void three(int s[],int x)
{
 int i,j,k,team;
 for(i=0;i<x;i++)
 {
  k=i;
  for(j=i;j<x;j++)
  {
   if(s[j]<s[k])
   {
    k=j;
   }
  }
  if(k!=i)
  {
   team=s[i];
   s[i]=s[k];
   s[k]=team;
  }
 }
 for(i=0;i<x;i++)
 {
  printf("%4d",s[i]);
 }
 printf("\n");
}
int four(int s[],int x)
{
 printf("请输入要加入的整数:");
 scanf("%d",&s[x]);
 x++;
 printf("加入后整数的个数为:%d",x);
 printf("\n");
 three(s,x);
 printf("\n");
 return x;
}void five(int s[],int x)
{
 int i;
 float sum=0.0;
 for(i=0;i<x;i++)
 {
  sum=sum+s[i];
 }
 printf("平均值为:%f",sum/x);
 printf("\n");
}

若有不足,可以留言。谢谢!!!

#include "menu.h" //菜单资源头文件 #include "menu_res.h" //外部显示库函数 #include "lcm.h" /* 名称:C语言两级菜单(对于大内存可扩展N级菜单)V1.0 作者:中国传惠 Transmart gongxd@126.com 单位:山东科技大学 时间:2009-3-4 编译环境: IDE-Version: uVision3 V3.33 Copyright (c) Keil Elektronik GmbH / Keil Software, Inc 2006 License Information: gongxd 微软用户 微软中国 LIC=BU373-A1HZU-EZJW0-DRWR6-C682M-E9HMS Tool Version Numbers: 工具链路径:C:\Keil\C51\BIN\ C Compiler: C51.Exe V8.05a Assembler: A51.Exe Linker/Locator: BL51.Exe V6.00 Librarian: LIB51.Exe V4.24 Hex Converter: OH51.Exe V2.6 CPU DLL: S8051.DLL V3.06 Dialog DLL: DP51.DLL V2.48b Target DLL: C:\KEIL\VW_C.DLL Dialog DLL: TP51.DLL V2.48b 使用说明: 1.向"menu_res.h"中添加菜单列表 2.向 "Menu_Function.h"中添加菜单响应函数声明 3.在"lcm.h"中替换自己的外部显示库函数,可以用类似的宏定义#define DisplayFunction(int,int) MyDisplayFunction(int,int) 其中"lcm.h"的X,Y坐标起始定义为0,0 (0,0)X------> Y | | \|/ */ #include "Menu_Function.h" //菜单条目格式 //{要显示的的菜单文本,子菜单号,功能函数地址) MenuItemStruct code MenuMain[]={ {"主1 条目1",1,Null}, {"主1 条目2",2,Null}, {"主1 条目3",3,Null}, {"功能函数1",MenuHasFunction,MenuFuntion1}, {"主1 条目5",0,Null}, }; MenuItemStruct code MenuSub1[]={ {"次1 条目1",0,Null}, {"次1 条目2",0,Null}, {"功能函数2",MenuHasFunction,MenuFuntion2}, {"次1 条目4",0,Null}, {"次1 条目5",0,Null}, {"次1 条目6",0,Null}, }; MenuItemStruct code MenuSub2[]={ {"次2 条目1",0,Null}, {"次2 条目2",0,Null}, {"次2 条目3",0,Null}, }; MenuItemStruct code MenuSub3[]={ {"次3 条目1",0,Null}, {"次3 条目2",0,Null}, {"次3 条目3",0,Null}, {"次3 条目4",0,Null}, {"次3 条目5",0,Null}, {"次3 条目6",0,Null}, {"次3 条目7",0,Null}, {"次3 条目8",0,Null}, {"次3 条目9",0,Null}, }; //菜单板列表 MenuPanelStruct code MenuPanel[]={ {MenuPanelID(MenuMain)}, {MenuPanelID(MenuSub1)}, {MenuPanelID(MenuSub2)}, {MenuPanelID(MenuSub3)}, };
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃辣的IT男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值