菜单的制作,通常需要一下几个步骤:
1、定义菜单项目数据结构;
2、定义你要做的弹出菜单或下拉菜单或...的数据结构;
3、建立菜单内容;
4、加载菜单内容;
5、在某个位置上显示(包含保存原有内容以备关闭菜单后恢复覆盖的屏幕,测试菜单显示区域根据实际情况调整显示区域);
6、光标移动,菜单项目颜色变化;
7、执行选中菜单项程序;
8、关闭菜单。
如果纯粹用C语言写,写一个通用的,估计至少要上千行程序代码,以前做过,后来不再使用C语言了,放在机器上,就找不到了。要不就放上去了。
#include<stdio.h>#include<string.h>
#include<stdlib.h>
//值传递
void fun1(char a)
{
a = 'b'
}
//地址传递
char fun2(char* a)
{
*a = 'a'
return *a
}
//动态分配数组
void fun3(char*& a)
{
a = (char*)malloc(sizeof(char))
}
char caidan()
{
char choose[5]
printf("\n***************************************\n")
printf(" ┌──────┐\n")
printf(" │ 菜单│\n")
printf(" __________________________________\n")
printf("│ 1,按值传递 |\n")
printf("│ 2,按地址传递 |\n")
printf("│ 3,动态数组演示|\n")
printf("│ 4,退 出 |\n")
printf("└────────────────┙\n")
printf("**************************************\n\n")
do
{
printf("请输入您的选择(1-4):")
scanf("%s",choose)
}while(strcmp(choose,"1")&&strcmp(choose,"2")&&strcmp(choose,"3")&&strcmp(choose,"4"))
//返回选择的菜单,注意如果输入太长 这里会异常,因为choose[5],只申请了5个字节。
return choose[0]
}
void main()
{
//执行菜单的选择
while(1)
{
switch(caidan())
{
case '1':
{
char a = 'a'
fun1(a)
//按值传递 内容不变
break
}
case '2':
{
char b = 'b'
char a = fun2(&b)
//按地址传递内容会变
break
}
case '3':
{
char* p = NULL
fun3(p)
//动态数组分配成功
break
}
case '4':exit(0)
}
}
}
改一下试试:
int main() {
void zhi(void)
void han(void)
void shu(void)
void fen(int x)
void xun(int x)
char chose,s[20]
int n
for() {
printf("1:分支程序\n2:循环程序\n3:函数程序\n4:数组程序\n5:指针程序\n0:退出\n\n选择数字:")
scanf("%s",s)chose=s[0]
switch(chose) {
case'1':printf("这是个销售量与其相应等级的分支程序,请输入相应销售量!\n")
scanf("%d",&n)
fen(n)
break
case'2':printf("这是个求0——n累加之和的循环结构,输入n,下面为其值!\n")
scanf("%d",&n)
xun(n)
break
case'3':printf("这是一个求最大公约数的函数程序,请输入两个数的值!\n")
han()
break
case'4':printf("这是一个数组逆行排序的数组程序,请输入10个整数!\n")
shu()
break
case'5':printf("这是一个用指针求一个三个数的数组和的指针程序,请输入这三个数!\n")
zhi()
break
case'0':exit(1)
default:break
}
}
return 0
}