新网创想网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言菜单函数实例 c语言菜单程序设计模板

C语言编程做一个简单的菜单

#include stdio.h

创新互联建站企业建站,十载网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都做网站、网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

#include stdlib.h

void menu()        //菜单绘制

{

printf("---------------------------------------\n");

printf("\t\t 0.退出\n");

printf("\t\t 1.录入信息\n");

printf("\t\t 2.查找信息\n");

printf("\t\t 3.删除信息\n");

printf("\t\t 4.浏览信息\n");

printf("\t\t  5.有其他疑问找群主")

printf("\t\t  6.C++8群: 491994603")

printf("---------------------------------------\n");

}

void keyDown()    //按键处理

{

int choice;

scanf("%d", choice);

switch (choice)

{

case 0:

printf("退出程序\n");

Sleep(2000);

return 0;

case 1:

//调用菜单1实现函数

break;

case 2:

//调用菜单2实现函数

break;

case 3:

//调用菜单3实现函数

break;

case 4:

//调用菜单4实现函数

break;

default:

printf("输入错误\n");

}

system("pause");

return 0;

}

int main()

{

while(1)        

{

menu();

keyDown();

system("cls");

}

return 0;

}

C语言编写菜单

#includestdio.h 

#includestring.h 

#includestdlib.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); 

}

}

用c语言制作一个简单的菜单程序,一个主函数四个子函数

给你一个简单的菜单程序吧。其中的子函数,填充成楼主所需即可。

#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;

}运行结果

c语言写菜单的示例?

#include stdio.h

#include windows.h

#include string.h

#include stdlib.h

#define MAX 1000

void main1()

{

int a, *p;

p = a;

printf("please input a number:");

scanf("%d", p); // 对p指向的a地址输入值

printf("a=%d\n*p=%d\n", a, *p); // 输出a地址存的值 输出p指向的地址a的内容

}

void main2()

{

int a,*p;

p = a;

printf("please input a number:");

scanf("%d", a); // 对p指向的a地址输入值

printf("p=%p *p=%d\n", p,*p);// 输出p指向的a的首地址号不足的位数用00补齐 输出p指向的地址a的内容

printf("%4d%4d %x\n", (*p)++, ++(*p), p);//输出现在p指向的地址,输出p指向的地址内的值加一后的值,输出p指向的地址内的值加一后的值再加一

printf("%4d%4d\n", *p++, *p);// 输出上个程序加一后的p指向的地址的内容

printf("p=%x\n", p);// 输出现在p指向的地址号

}

void sub(int x, int y, int *z)

{

*z = y - x;

}

void main3()

{

int a, b, c;

sub(10, 5, a);// 把10和5分别富值给x,y 把a的地址传个*z在sub中对z指向的a地址富值

sub(7, a, b);// 把7和a的值分别富值给x,y 把b的地址传个*z在sub中对z指向的b地址富值

sub(a, b, c);// 把a的值和吧的值分别富值给x,y 把c的地址传个*z在sub中对z指向的c地址富值

printf("a=%d\nb=%d\nc=%d\n", a, b, c);// 输出被赋值后的a b c

}

void main4()

{

int a[] = {1, 2, 3, 4, 5};

int *p = NULL;

p = a;// p指向a的首地址

printf("%d ", *p);// 输出p指向的a首地址的第一个元素的内容

printf("%d ", *(++p));// p的指向后移动指向a的第二个元素并输出她的内容

printf("%d ", *++p);// p的指向后移动指向a的第二个元素并输出她的内容

printf("%d ", *(p--));// p输出值后指向的位子向前移一个元素

printf("%d ", *p++);// 输出p的值后再将p的指向向后移一个元素

printf("%d ", *p);// 输出p移后的指向的地址的值

printf("%d ", ++(*p));// 对p指向的地址的值加一后输出值

printf("%d\n ", *p);// 输出现在p指向的地址的值

}

f(int *t)

{

*t =10;

}

void main5()

{

int *p, a;

a = 2;

p = a;// p指向a的地址

f(p);// 把p指向的a的地址传给*t在子函数中对a进行重新赋值;

printf("a=%d\n", a);// 输出a重新赋的值

}

void main6()

{

int a[10], j, *p;

for (j = 0; j 10; j++)

a[j] = j+1; // 对数组a进行赋值

printf("\nOutput array using a[j]:\n");

for (j = 0; j 10; j++)

printf("%d ", a[j]);// 输出赋值后的a

p = a; // p指向数组a首地址

printf("\nOutput array using p[j]:\n");

for (j = 0; j 10; j++)

printf("%d ", p[j]); // 把指针p当数组用输出p指向的a的各个元素

printf("\nOutput array using*( p+j):\n");

for (j = 0; j 10; j++)

printf("%d ", *(p+j)); // 把指针p当数组用输出p指向的a的各个元素

printf("\nOutput array using*( a+j):\n");

for (j = 0; j 10; j++)

printf("%d ", *(a+j)); // 使用数组a的指针性质

printf("\nOutput array using *p++:\n");

for (j = 0; j 10; j++)

printf("%d ", *p++); // 把指针p当数组用输出p指向的a的各个元素

printf("\n");

}

void Input(float *p,int n)

{

int i;

printf("Pleese input %d score: ",n);

for(i=0;in;i++)

{

scanf("%f",(p+i));

}

}

void Output(float *q,int n)

{

int i;

printf("Output the score:\n");

for(i=0;in;i++)

{

printf("%f\n",*(q+i));

}

}

void FMax(float score[], int n,float *maxs,int *maxn )

{

int i;

*maxs=score[0];

for(i=1;in;i++)

{

if(score[i]*maxs)

{

*maxs=score[i];

*maxn=i;

}

}

}

void FMin(float score[], int n,float *mins,int *minn )

{

int i;

*mins=score[0];

for(i=1;in;i++)

{

if(score[i]*mins)

{

*mins=score[i];

*minn=i;

}

}

}

void main7()

{

float score[MAX],maxs,mins;

int maxn,minn;

Input(score,10);

Output(score,10);

FMax(score,10,maxs,maxn);

FMin(score,10,mins,minn);

printf("maxscore=%.2f,\t\tmaxnum=%d\nminscore=%.2f,\t\tminnum=%d\n",maxs,maxn,mins,minn);

}

int aver(int (*p)[5],int q)

{

int j,m=0,b;

for(j=0;j5;j++)

{

m+=*(*(p+q-1)+j);

}

b=m/5;

return(b);

}

void main8()

{

int i,j,(*pscore)[5],a,n,q[10][5];

pscore=q;

printf("Please input ten students's five scores:\n");

for(i=0;i10;i++)

{

for(j=0;j5;j++)

{

scanf("%d",pscore[i*5+j]);

}

}

printf("Please input students's number:");

scanf("%d",n);

a=aver(pscore,n);

printf("第%d学生五门成绩的平均值为:%d\n",n,a);

}

void main9()

{

char *str1,*str2,*str3,a[100],b[100],c[100];

str1=a[0];

str2=b[0];

str3=c[0];

printf("str1=");

gets(str1);

printf("str2=");

gets(str2);

strcat(str1,str2);// 把字符串str2接到字符串str1的后面

printf("str1=%s\n",str1);// 输出连接后的字符串str1

strcpy(str3,str1);// 把字符串str1接到字符串str3的后面

printf("str3=%s\n",str3);// 输出连接后的字符串str3

}

void main10( )

{

char *p = "abcdefghijklmnopq";

while( *p++!='e')// 指针p的指向地址向后移一个元素判断是不是等于'e'

printf("%c\n", *p);// 如果判断等于'e'就输出p指向的地址内的字符

}

void main11()

{

char b[] = "program";

char *a = "PROGRAM";

int i = 0;

printf("%c%s\n", *a,b+1);// 先对数组b加一后输出b 再输出*a

while (putchar(*(a+i)))

{

i++;

}

printf("i = %d\n", i);// 判断a有多少个字符输出

while (--i)

{

putchar(*(b + i)); // 将p字符串逆向输出不输出最后一个

}

printf("\n%s\n", b[3]);// 输出b字符串的最后四位

}

void main12( )

{

int a=1, *p, **pp;

pp =p;

p =a;

a++;

printf ("%d,%d,%d\n",a,*p, **pp);// a是a加一后的值 *P是指向的a地址内的值 **pp是指向的 *P是指向的a地址内的值

}

void main13()

{

char *alpha[7]={ " ABCD","EFGH ","IJKL ","MNOP ","QRST ","UVWX ","YZ "};

char **p;

int i;

p = alpha;

for(i = 0;i 4;i++)

printf("%c", *(p[i]));// 输出指向的前四个字符串的第一个字母

printf("\n");

}

void main14()

{

char n[100];

char *s [ ]={"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Ten"};

int i,x,len;

printf("输入一串阿拉伯数字:\n");

gets(n);

len=strlen(n);// 计算输入的n的长度

for(i=0;ilen;i++)

{

x=*(n+i)-48; /* 48为字符"0"的ASCII码 */

printf("%s ",s[x]);// 将输入的数字当地址号

}

printf("\n");

}

unsigned int MyStrlen(char s[ ])

{

char *p = s;

while (*p !='\0' )

{

p++;

}

return(p-s );

}

void main15()

{

char a[1000];

int b;

printf("Input char number:");

gets(a);

b= MyStrlen(a);

printf("The number's len:%d\n",b);

}

void reading(char (*a)[5], int *num)

{

int i=0;

gets(a[i]);

while(!strcmp(a[i],"****")==0)

{

gets(a[i]);

}

*num=i;

}

void findmax(char (*a)[5], int *num,char **max)

{

int i;

for (*max=a[0],i=1;i*num;i++)

{

if(strcmp(a[i],*max)0)

*max=a[i];

}

}

void main16()

{

char ss[10][5],*ps;

int n;

reading(ss,n);

findmax(ss,n,ps);

printf("max=%s\n",ps);

}

int *search1(int(*s)[4],int *len,int *n)

{

int i,j;

for (i = *n; i*len; i++)

{

for (j=0; j4; j++)

{

if (*(*(s+i)+j) 60)

{

*n=i;

return s[i];//如有不及格的返回地址

}

}

}

return NULL;//如果没有返回NULL,好打出没有成绩不及格的同学

}

int *search2(int(*s)[4],int *len,int *n)

{

int i,j;

for (i = *n; i*len; i++)

{

for (j=0; j4; j++)

{

if (*(*(s+i)+j) 90)

{

*n=i;

return s[i];//如有不及格的返回地址

}

}

}

return NULL;//如果没有返回NULL,好打出没有成绩不及格的同学

}

void main17()

{

int i,j,n,score[1000][4],count=0,x;

int *p;

p=score[0][0];

printf("Pleese input the students's total number(小于1000):\n ");

scanf("%d",n);

printf("Pleese input every student's score:\n ");

for(i=0;in;i++)

{

for(j=0;j4;j++)

{

scanf("%d",p[i*4+j]);

}

}

printf("是100分制请输入100,150分制请输入150:");

scanf("%d",x);

switch(x)

{

case 100:

i=0;//从第一个开始擦找

while (in+1)

{

p=search1(score,n, i);

if (p)//如果有

{

printf("不及格的是第 %d 个人,三科成绩分别为:\n",i+1);

for (j = 0; j 4; j++)

{

printf("%d, ", *p++);

}

count++;//记录有几个不及格的

printf("\n");

}

i++;

}

if (!pcount==0)//如果没有

{

printf("没有成绩不及格的同学\n");

}

break;

case 150:

i=0;//从第一个开始擦找

while (in+1)

{

p=search2(score,n, i);

if (p)//如果有

{

printf("不及格的是第 %d 个人,三科成绩分别为:\n",i+1);

for (j = 0; j 4; j++)

{

printf("%d, ", *p++);

}

count++;//记录有几个不及格的

printf("\n");

}

i++;

}

if (!pcount==0)//如果没有

{

printf("没有成绩不及格的同学\n");

}

break;

default:

printf("Incorrect letter entered .");

}

}

#define MAXI 16

#define N 5

void sort(char (*s)[MAXI],int n)

{

int i , j;

char *temp =(char *)malloc(sizeof(char ) * MAXI) ;

for(i = 0; i n-1 ; i++)

{

for(j = i+1; j n ; j++)

{

if(strcmp(s[i] , s[j]) 0) //这里的排序不能用s[i] = s[j],错误:incompatible types in assignment

{

strcpy(temp,s[i]);

strcpy(s[i],s[j]);

strcpy(s[j],temp);

}

}

}

free(temp);

}

void print(char (*s)[MAXI],int n)

{

int i;

for(i = 0; i n ; i++)

{

printf("%s\n",s[i]);

}

}

void main18()

{

int index;

char str[N][MAXI];

for(index = 0; index N ;index++)

{

printf("请输入第%d个字符串:\n",index+1);

gets(str[index] );

}

sort(str,N);

print(str,N);

}

void main19()

{

printf("\t\t\t\t欢迎使用");

printf("\n");

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

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

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

printf("\n\t\t*\t\t输入1.第①个实验\t\t*");

printf("\n\t\t*\t\t输入2.第②个实验\t\t*");

printf("\n\t\t*\t\t输入3.第③个实验\t\t*");

printf("\n\t\t*\t\t输入4.第④个实验\t\t*");

printf("\n\t\t*\t\t输入5.第⑤个实验\t\t*");

printf("\n\t\t*\t\t输入6.第⑥个实验\t\t*");

printf("\n\t\t*\t\t输入7.第⑦个实验\t\t*");

printf("\n\t\t*\t\t输入8.第⑧个实验\t\t*");

printf("\n\t\t*\t\t输入9.第⑨个实验\t\t*");

printf("\n\t\t*\t\t输入10.第⑩个实验\t\t*");

printf("\n\t\t*\t\t输入11.第⑾个实验\t\t*");

printf("\n\t\t*\t\t输入12.第⑿个实验\t\t*");

printf("\n\t\t*\t\t输入13.第⒀个实验\t\t*");

printf("\n\t\t*\t\t输入14.第⒁个实验\t\t*");

printf("\n\t\t*\t\t输入15.第⒂个实验\t\t*");

printf("\n\t\t*\t\t输入16.第⒃个实验\t\t*");

printf("\n\t\t*\t\t输入17.第⒄个实验\t\t*");

printf("\n\t\t*\t\t输入18.第⒅个实验\t\t*");

printf("\n\t\t*\t\t输入0.结束\t\t\t*");

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

}

void main()

{

int n,m;

do{

system("cls");

main19();

printf("请输入所需要选择运行的程序的序号:");

scanf("%d",n);

switch(n)

{

case 1:

main1();

break;

case 2:

main2();break;

case 3:

main3();break;

case 4:

main4();break;

case 5:

main5();break;

case 6:

main6();break;

case 7:

main7();break;

case 8:

main8();break;

case 9:

main9();break;

case 10:

main10();break;

case 11:

main11();break;

case 12:

main12();break;

case 13:

main13();break;

case 14:

main14();break;

case 15:

main15();break;

case 16:

main16();break;

case 17:

main17();break;

case 18:

main18();break;

default:

printf("选错了!!!!!!!\n");

}

printf("不想继续就输入0否则输入任意数字:");

scanf("%d",m);

}while(m!=0);

}

求一个C语言菜单函数的程序?

1、对于窗口组件菜单,需要根据不同平台,通过图形编程接口,进行菜单的编制。

例程:

#includestdio.h 

#includegraphics.h 

#includeconio.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=1;i=100;i++) 

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=0;nk;n++)

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

{

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

do

{    

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

j++;

if(j==m) 

{

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

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

t=-1;/*判断中if中++t;t将会归零*/

}

}

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");

}


当前标题:c语言菜单函数实例 c语言菜单程序设计模板
文章出自:http://wjwzjz.com/article/docsede.html
在线咨询
服务热线
服务热线:028-86922220
TOP