如何用C语言写一个菜单

对于窗口组件的菜单,需要根据不同的平台,通过图形化编程接口来编写菜单。

常规:

# include & ltstdio.h & gt?

# include & ltgraphics.h & gt?

# include & ltconio.h & gt?

作废?main()?

{?

夏尔?str?

int?I,k,choice = 1;?

int?gd=DETECT,GM;?

init graph(& amp;gd,& amp通用,“?”);?

setbkcolor(2);?

settextstyle(3,0,3);?

outtextxy(140,120," a?那个?嘲弄?时钟。”);?

outtextxy(140,150," b?那个?数字?时钟。”);?

outtextxy(140,180," c?退出。”);?

setlinestyle(0,0,3);?

矩形(170,115,370,145);?

/*按向上和向下键选择所需选项*/?

for(I = 1;我& lt=100;i++)?

{?

str = getch();?

if(str==72)?

{?

-选择;?

if(choice = = 0)choice = 3;?

}?

if(str==80)?

{?

++选择;?

if(choice = = 4)choice = 1;?

}?

if(str = = 13)break;?/*按Enter键确认*/?

/*画个图做个菜单*/?

clear device();?

切换(选择)?

{?案子?1:?setlinestyle(0,0,3);?

矩形(170,115,400,145);?

settextstyle(3,0,3);?

outtextxy(140,120," a?那个?嘲弄?时钟。”);?

settextstyle(3,0,3);?

outtextxy(140,150," b?那个?数字?时钟。”);?

outtextxy(140,180," c?退出。”);?

打破;?

案子?2:?setlinestyle(0,0,3);?

矩形(170,145,400,175);?

settextstyle(3,0,3);?

outtextxy(140,120," a?那个?嘲弄?时钟。”);?

settextstyle(3,0,3);?

outtextxy(140,150," b?那个?数字?时钟。”);?

settextstyle(3,0,3);?

outtextxy(140,180," c?退出。”);?

打破;?

案子?3:?settextstyle(3,0,3);?

outtextxy(140,120," a?那个?嘲弄?时钟。”);?

outtextxy(140,150," b?那个?数字?时钟。”);?

settextstyle(3,0,3);?

outtextxy(140,180," c?退出。”);?

setlinestyle(0,0,3);?

矩形(170,175,400,205);?

打破;?

}?

}?

如果(i & gt=100)出口(0);/*如果按键次数超过100次,退出*/?

Switch(choice)/*这里是实现所需功能的参考函数*/?

{?

案子?1:?clear device();?

setbkcolor(4);?

settextstyle(3,0,4);?

outtextxy(160,120,“第65438号+0?有吗?不是吗?建成了。”);?打破;?

案子?2:?clear device();?

setbkcolor(4);?

settextstyle(3,0,4);?

outtextxy(160,150,“2号?有吗?不是吗?建成了。”);?

打破;?

案子?3:?退出(0);?

}?

getch();?

closegraph();?

}对于命令行菜单,通过不断刷新输出,直接模拟菜单行为。

常规:

#包含?& ltstdio.h & gt

#包含?& ltstdlib.h & gt?

#包含?& ltstring.h & gt

int?n,t,k;

int?m;

夏尔?s1[20],s2[20],c;

夏尔?* * l;

夏尔?*num[]={ "一"、"二"、"三"、"四"、"五"、"六"、"七"、"八"、"九"、"十" };

作废?菜单()

{

printf(" \ n \ n \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

Printf("\t\t**1。查找S2在字符串S1 **\n ")中出现的次数;

Printf("\t\t**2。计算字符串中的大小写字母以及数字出现的次数* * \ n ");

Printf("\t\t**3。把数字翻译成英语?* * \ n ");

Printf("\t\t**4。结束?* * \ n ");

printf(" \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

printf("\t\t?您的输入:“);

fflush(stdin);

scanf("%d ",& ampn);

}

作废?检查()

{

夏尔?a[20],b[20];

int?j=0,k,m,l = 0;

int?t=0,n = 0;

Printf("请输入主字符串:\ n ");

scanf("%s ",a);

k = strlen(a);

Printf("请输入子串:\ n ");

scanf("%s ",b);

m = strlen(b);

for(n = 0;n & ltk;n++)

if(a[n]==b[0])

{

j++;?/*记录相同数量的字符*/

{

if(a[++n]==b[++t])

{?

j++;

if(j==m)?

{

l++;/*相同数量的子字符串*/

j = 0;/*判断后,相同数量的字符将归零*/

t =-1;/*如果在判断++ t;t将归零*/

}

}

其他

{

j = 0;

t = 0;

打破;/*如果不是,跳出while循环,让for make n+1继续判断*/

}

}while(a[n]!='\0');/*搜索字符数组A的结尾*/

}

Printf("子串出现次数:\n%d\n ",l);

}?

作废?cout()

{

int?n=0,t=0,k = 0;

Printf("请输入一个字符串:\ n ");

fflush(stdin);/*清除缓冲区*/

while((c=getchar())!='\n ')

{

if(c & gt;= ' a ' & amp& ampc & lt='z ')

n++;

if(c & gt;= ' A ' & amp& ampc & lt='Z ')

t++;

if(c & gt;= ' 0 ' & amp& ampc & lt='9')

k++;

}

Printf("带大写字母:\n%d\n ",t);

Printf("带小写字母:\n%d\n ",n);

Printf("带数字:\n%d\n ",k);

}

作废?数字()

{

l = num

Printf("请输入一个数字:(0-10)\ n ");

fflush(stdin);

scanf("%d ",& ampm);

printf(" d "的英文是:\n%s\n ",m,*(l+m-1));

}

作废?主()

{

while(1)

{

系统(“cls”);

menu();

开关(n)

{

案子?1:system(" cls ");check();系统(“暂停”);打破;

案子?2:系统(“cls”);cout();系统(“暂停”);打破;

案子?3:系统(“cls”);number();系统(“暂停”);打破;

案子?4:系统(“cls”);打破;

默认值:system(" cls ");打破;?

}

如果(n==4)?打破;

}

Printf("感谢使用\ n ");

}