如何用“C语言”实现“选项有功能的文本菜单”?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-30
C语言中如何实现选项菜单的功能?

#include#include void hello(){printf("hello world
");}int main(){ int x; while (1) { printf("-------------操作选项-----------
"); printf("1:返回菜单
"); printf("2:退出程序
"); printf("3:执行操作
"); printf("--------------------------------
"); printf("按数字键选择要执行的操作: "); scanf("%d",&x); printf("
"); //输入2跳出循环,退出程序 if(x==2) break; switch(x) { case 1: break; //输入1,跳出switch语句,进入下一次循环 case 3: hello();break; default: //数字输入错误,跳出siwtch语句,进入下一次循环 printf("输入的数字不正确
"); break; } } return 0;}
说明:有3个选项,1是用返回菜单,2是用于退出程序,3是用于执行相关的操作,这里只是一个示例,所以将要执行的操作,编写成了一个输出hello world的函数。

#include
#include
#include
#define Key_DOWN 0x5100
#define Key_UP 0x4900
#define Key_ESC 0x011b
#define Key_ALT_F 0x2100
#define Key_ALT_X 0x2d00
#define Key_ENTER 0x1c0d

void box(int startx,int starty,int high,int width);

main()
{
int i,key,x,y,l;
char *menu[] = {"File","Edit","Run","Option","Help","Setup","Zoom","Menu"};
char *red[] = { "F","E","R","O","H","S","Z","M" };
char *f[] = {"Load file", "Save file", "Print", "Modify ", "Quit A1t_x"};
char buf[16*10*2],buf1[16*2];
while(1)
{
textbackground(BLUE);
clrscr();
textmode(C80);
window(1,1,80,1);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(5,1);
for(i=0,l=0;i<8;i++)
{
x=wherex();
y=wherey();
cprintf("%s",menu[i]);
l=strlen(menu[i]);
gotoxy(x,y);
textcolor(RED);
cprintf("%s",red[i]);
x=x+l+5;
gotoxy(x,y);
textcolor(BLACK);
}
gotoxy(5,1);
key=bioskey(0);
switch (key){
case Key_ALT_X:
exit(0);
case Key_ALT_F:
{
textbackground(BLACK);
textcolor(WHITE);
gotoxy(5,1);
cprintf("%s",menu[0]);
gettext(5,2,20,12,buf);
window(5,2,20,9);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,7,16);
for(i=2;i<7;i++)
{ gotoxy(2,i);
cprintf("%s",f[i-2]);
}
gettext(2,2,18,3,buf1);
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",f[0]);
gotoxy(2,2);
y=2;

while ((key=bioskey(0))!=Key_ALT_X)
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(2,y,18,y+1,buf1);
if (key==Key_UP)
y=y==2?6:y-1;
else
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",f[y-2]);
gotoxy(2,y);
}
else
if (key==Key_ENTER)
{
switch ( y-1 ){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
exit(0);
default:
break;
}
break;
}
else
if (key==Key_ESC)
break;
}
if (key==Key_ALT_X) exit(0);
break;
}
}
}
}

void box(int startx,int starty,int high,int width)
{ int i;
gotoxy(startx,starty);
putch(0xda);
for (i=startx+1;i<width;i++) putch(0xc4);
putch(0xbf);
for( i=starty+1;i<high;i++)
{
gotoxy(startx,i);putch(0xb3);
gotoxy(width,i);putch(0xb3);
}
gotoxy(startx,high);
putch(0xc0);
for (i=startx+1;i<width;i++) putch(0xc4);
putch(0xd9);
return ;
}

1、直接用输出即可实现、

2、例程:

#include<stdio.h>
#include <stdlib.h>
void hello()
{
    printf("hello world
");
}
int main()
{
 int x;
 while (1)
 {
  printf("-------------操作选项-----------
");
  printf("1:返回菜单 
");
  printf("2:退出程序 
");
  printf("3:执行操作 
");
  printf("--------------------------------
");
 
  printf("按数字键选择要执行的操作: ");
  scanf("%d",&x);
  printf("
");
  //输入2跳出循环,退出程序
  if(x==2)
      break;
  
  switch(x)
  {
  case 1:  break; //输入1,跳出switch语句,进入下一次循环
  case 3:  hello();break;  
  default:  //数字输入错误,跳出siwtch语句,进入下一次循环
      printf("输入的数字不正确
");
      break;
  }
 }
 return 0;
}


#include <process.h>
#include <dos.h>
#include <conio.h>
#define Key_DOWN 0x5100
#define Key_UP 0x4900
#define Key_ESC 0x011b
#define Key_ALT_F 0x2100
#define Key_ALT_X 0x2d00
#define Key_ENTER 0x1c0d

void box(int startx,int starty,int high,int width);

main()
{
int i,key,x,y,l;
char *menu[] = {"File","Edit","Run","Option","Help","Setup","Zoom","Menu"};
char *red[] = { "F","E","R","O","H","S","Z","M" };
char *f[] = {"Load file", "Save file", "Print", "Modify ", "Quit A1t_x"};
char buf[16*10*2],buf1[16*2];
while(1)
{
textbackground(BLUE);
clrscr();
textmode(C80);
window(1,1,80,1);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(5,1);
for(i=0,l=0;i<8;i++)
{
x=wherex();
y=wherey();
cprintf("%s",menu[i]);
l=strlen(menu[i]);
gotoxy(x,y);
textcolor(RED);
cprintf("%s",red[i]);
x=x+l+5;
gotoxy(x,y);
textcolor(BLACK);
}
gotoxy(5,1);
key=bioskey(0);
switch (key){
case Key_ALT_X:
exit(0);
case Key_ALT_F:
{
textbackground(BLACK);
textcolor(WHITE);
gotoxy(5,1);
cprintf("%s",menu[0]);
gettext(5,2,20,12,buf);
window(5,2,20,9);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,7,16);
for(i=2;i<7;i++)
{ gotoxy(2,i);
cprintf("%s",f[i-2]);
}
gettext(2,2,18,3,buf1);
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",f[0]);
gotoxy(2,2);
y=2;

while ((key=bioskey(0))!=Key_ALT_X)
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(2,y,18,y+1,buf1);
if (key==Key_UP)
y=y==2?6:y-1;
else
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",f[y-2]);
gotoxy(2,y);
}
else
if (key==Key_ENTER)
{
switch ( y-1 ){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
exit(0);
default:
break;
}
break;
}
else
if (key==Key_ESC)
break;
}
if (key==Key_ALT_X) exit(0);
break;
}
}
}
}

void box(int startx,int starty,int high,int width)
{ int i;
gotoxy(startx,starty);
putch(0xda);
for (i=startx+1;i<width;i++) putch(0xc4);
putch(0xbf);
for( i=starty+1;i<high;i++)
{
gotoxy(startx,i);putch(0xb3);
gotoxy(width,i);putch(0xb3);
}
gotoxy(startx,high);
putch(0xc0);
for (i=startx+1;i<width;i++) putch(0xc4);
putch(0xd9);
return ;
}

  • 如何用“C语言”实现“选项有功能的文本菜单”?
    答:1、直接用输出即可实现、2、例程:include<stdio.h>#include <stdlib.h>void hello(){ printf("hello world\n");}int main(){ int x; while (1) { printf("---操作选项---\n"); printf("1:返回菜单 \n"); printf("2:退出程序 \n"); printf("3:执行操作 \n"); pr...
  • C语言中怎么编制简单的菜单,通过菜单选择能实现程序的各项功能
    答:include <stdlib.h> include <conio.h> include <ctype.h> using namespace std;void xuanzepaixu() //选择排序函数 { printf("待添加,请按任意键继续...");getchar();} void erfenpaixu() //二分查找函数 { printf("待添加,请按任意键继续...");getchar();} void menu() ...
  • C语言中如何实现选项菜单的功能?
    答:include <process.h> include <dos.h> include <conio.h> define Key_DOWN 0x5100 define Key_UP 0x4900 define Key_ESC 0x011b define Key_ALT_F 0x2100 define Key_ALT_X 0x2d00 define Key_ENTER 0x1c0d void box(int startx,int starty,int high,int width);main(){...
  • 设计一通过 c语言 个简单实用的菜单,通过菜单选择不同的菜单项并实现...
    答:include<stdio.h>#include<windows.h>//\n1.增加 2.查询 3.删除 4.退出\n");//声明函数void addnd();void searchnd();void printnd();void charund();//含 枚举类型 分支switchenum mmenu{/*定义一个名为mmenu的枚举类型 可以让常量有一定的含义(如实现菜单)*/addn=1,//默认是0,...
  • 编写一个C语言程序,显示如下菜单并实现相应的菜单选择功能
    答:main();/*这里是简单的调用主函数来返回初始选择列表,还有其他方法实现*/ } lifanggen(n){ double val=n;double time=0.333333333333333;/*这里为近似的1/3的值,因为要求 一个数字的立方根需要用到求立方根的算法,这里为求省事没有给出 ,百度里边可以搜到*/ printf("%lf\n\n\n",pow(val...
  • C语言实现从物理键盘输入F1~F5作为的菜单选项,简单的说就是按F1是一个...
    答:include <bios.h>#include <stdio.h>void main(){ int key=bioskey(0); if(key=0x3b00) printf("F1\n"); }/*0x011b ESC0x3b00 F10x3c00 F2 0x3d00 F3 0x3e00 F4 0x3f00 F5 0x4000 F6 0x4100 F7 0x4200 F8 0x4300 F9 0x4400 F10*...
  • 如何用C语言做一个菜单,里面放程序
    答:1、首先新建源文件c.c,用文本编辑器打开。2、输入图片里面的代码,编辑确认无误之后保存。3、编写好控制台批处理文件,设置好环境变量,主要是PATH,INCLUDE和LIB三个环境变量!编辑好之后保存为bat后者cmd后缀文件。4、双击打开刚才设置好的批处理文件,在里面输入cl **.c,自动编译链接,生成exe文件...
  • 在c语言里怎么实现 利用循环实现如下菜单选择项,当输入选择项不是1...
    答:int n;while(1){printf("请选择一个菜单选项\n\n");printf("1-添加记录\n");printf("2-更改记录\n");printf("3-删除记录\n");printf("4-推出\n");printg("请输入一个选项:");scanf("%d",&a);swich(a){case1:printf("您选择的菜单选项是:\d",a);exit(0);case2:printf("...
  • 各计算功能单独编写成函数,在主函数中通过选项菜单调用函数。C语言
    答:/*这里也可以用递归的方法*/ void Combination(int a,int b){ int result;result = Factorial(a) / (Factorial(b) * Factorial(a - b));printf("该组合数的值是:%d",result);} int GCD(int a,int b){ if (b == 0)return a;return GCD(b,a%b);} int LCM(int a,int b){ ...
  • 用C语言编写AT89C51单片机程序,设计一个智能数字钟。
    答://0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//0-F,-,共阴 uchar code table_d[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //0~9数组,带小数点 uchar table1[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年 uchar table2[...