1、对于窗口组件菜单,需要根据不同平台,通过图形编程接口,进行菜单的编制。
例程:
#include<stdio.h>#include<graphics.h>
#include<conio.h>
void main()
{
char str
int i,k,choice=1
int gd=DETECT,gm
initgraph(&gd,&gm," ")
setbkcolor(2)
settextstyle(3,0,3)
outtextxy(140,120,"A. The Mock Clock.")
outtextxy(140,150,"B. The Digital Clock.")
outtextxy(140,180,"C. Exit.")
setlinestyle(0,0,3)
rectangle(170,115,370,145)
/*按上下键选择所需选项*/
for(i=1i<=100i++)
{
str=getch()
if(str==72)
{
--choice
if(choice==0)choice=3
}
if(str==80)
{
++choice
if(choice==4)choice=1
}
if(str==13)break /*按回车键确认*/
/*画图做菜单*/
cleardevice()
switch(choice)
{ case 1: setlinestyle(0,0,3)
rectangle(170,115,400,145)
settextstyle(3,0,3)
outtextxy(140,120,"A. The Mock Clock.")
settextstyle(3,0,3)
outtextxy(140,150,"B. The Digital Clock.")
outtextxy(140,180,"C. Exit.")
break
case 2: setlinestyle(0,0,3)
rectangle(170,145,400,175)
settextstyle(3,0,3)
outtextxy(140,120,"A. The Mock Clock.")
settextstyle(3,0,3)
outtextxy(140,150,"B. The Digital Clock.")
settextstyle(3,0,3)
outtextxy(140,180,"C. Exit.")
break
case 3: settextstyle(3,0,3)
outtextxy(140,120,"A. The Mock Clock.")
outtextxy(140,150,"B. The Digital Clock.")
settextstyle(3,0,3)
outtextxy(140,180,"C. Exit.")
setlinestyle(0,0,3)
rectangle(170,175,400,205)
break
}
}
if(i>=100)exit(0)/*如果按键超过100次退出*/
switch(choice)/*这里引用函数,实现所要的功能*/
{
case 1: cleardevice()
setbkcolor(4)
settextstyle(3,0,4)
outtextxy(160,120,"No.1 have not built.") break
case 2: cleardevice()
setbkcolor(4)
settextstyle(3,0,4)
outtextxy(160,150,"No.2 have not built.")
break
case 3: exit(0)
}
getch()
closegraph()
}
2、对于命令行菜单,直接通过不断刷新输出来模拟菜单行为。
例程:
#include <stdio.h>#include <stdlib.h>
#include <string.h>
int n,t,k
int m
char s1[20],s2[20],c
char **l
char *num[]={"one","two","three","four","five","six","seven","eight","nine","ten"}
void menu()
{
printf("\n\n\t\t*******************************************************\n")
printf("\t\t** 1.查找字符串S1中S2出现的次数 **\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",&n)
}
void check()
{
char 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=0n<kn++)
if(a[n]==b[0])
{
j++ /*记录相同的字符数*/
do
{
if(a[++n]==b[++t])
{
j++
if(j==m)
{
l++/*子字符串相同数*/
j=0/*判断后相同字符数归零*/
t=-1/*判断中if中++tt将会归零*/
}
}
else
{
j=0
t=0
break/*如果不同跳出while循环让for使n+1继续判断*/
}
}while(a[n]!='\0')/*查找完字符数组a结束*/
}
printf("子字符串出现次数:\n%d\n",l)
}
void cout()
{
int n=0,t=0,k=0
printf("请输入一个字符串:\n")
fflush(stdin)/*清除缓冲*/
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z')
n++
if(c>='A'&&c<='Z')
t++
if(c>='0'&&c<='9')
k++
}
printf("有大写字母:\n%d\n",t)
printf("有小写字母:\n%d\n",n)
printf("有数字:\n%d\n",k)
}
void number()
{
l=num
printf("请输入一个数字:(0-10)\n")
fflush(stdin)
scanf("%d",&m)
printf("%d对应的英文是:\n%s\n",m,*(l+m-1))
}
void main()
{
while(1)
{
system("cls")
menu()
switch(n)
{
case 1:system("cls")check()system("pause")break
case 2:system("cls")cout()system("pause")break
case 3:system("cls")number()system("pause")break
case 4:system("cls")break
default:system("cls")break
}
if(n==4) break
}
printf("感谢使用\n")
}
给你一个简单的菜单程序吧。其中的子函数,填充成楼主所需即可。#include
/*子函数1*/
fun1() {
printf ("子函数1\n")
}
/*子函数2*/
fun2() {
printf ("子函数2\n")
}
/*子函数3*/
fun3() {
printf ("子函数3\n")
}
/*子函数4*/
fun4() {
printf ("子函数4\n")
}
int main(void) {
int key/*命令编号*/
do {
system("cls")/*清屏*/
/*打印菜单*/
printf ("======================================================\n")
printf (" #\t功能详情\n")
printf ("------------------------------------------------------\n")
printf (" 1\t功能1\n")
printf (" 2\t功能2\n")
printf (" 3\t功能3\n")
printf (" 4\t功能4\n")
printf (" 5\t退出\n")
printf ("======================================================\n")
printf ("\n")
printf("请输入命令编号以开启 *** 作:")
/*输入命令编号*/
scanf("%d",&key)
printf ("\n")
/*switch函数实现输入功能序号执行相应函数*/
switch (key) {
case 1: fun1()break/*子函数1*/
case 2: fun2()break/*子函数2*/
case 3: fun3()break/*子函数3*/
case 4: fun4()break/*子函数4*/
case 5: printf("程序结束!按任意键退出...\n\n")break
default:printf("输入错误,请重新输入!\n\n")break
}
/*屏幕暂留*/
if (key!=5) {
printf ("\n")
printf("按Enter键继续...\n")
printf ("\n")
fflush(stdin)
getch ()
}
} while (key!=5)
/*屏幕暂留*/
fflush(stdin)
getch ()
return 0
}运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)