1. 怎样用c语言编写菜单

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

    例程:

    #include<stdio.h>
    #include<graphics.h>
    #include<conio.h>
    voidmain()
    {
    charstr;
    inti,k,choice=1;
    intgd=DETECT,gm;
    initgraph(&gd,&gm,"");
    setbkcolor(2);
    settextstyle(3,0,3);
    outtextxy(140,120,"A.TheMockClock.");
    outtextxy(140,150,"B.TheDigitalClock.");
    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)
    {case1:setlinestyle(0,0,3);
    rectangle(170,115,400,145);
    settextstyle(3,0,3);
    outtextxy(140,120,"A.TheMockClock.");
    settextstyle(3,0,3);
    outtextxy(140,150,"B.TheDigitalClock.");
    outtextxy(140,180,"C.Exit.");
    break;
    case2:setlinestyle(0,0,3);
    rectangle(170,145,400,175);
    settextstyle(3,0,3);
    outtextxy(140,120,"A.TheMockClock.");
    settextstyle(3,0,3);
    outtextxy(140,150,"B.TheDigitalClock.");
    settextstyle(3,0,3);
    outtextxy(140,180,"C.Exit.");
    break;
    case3:settextstyle(3,0,3);
    outtextxy(140,120,"A.TheMockClock.");
    outtextxy(140,150,"B.TheDigitalClock.");
    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)/*这里引用函数,实现所要的功能*/
    {
    case1:cleardevice();
    setbkcolor(4);
    settextstyle(3,0,4);
    outtextxy(160,120,"No.1havenotbuilt.");break;
    case2:cleardevice();
    setbkcolor(4);
    settextstyle(3,0,4);
    outtextxy(160,150,"No.2havenotbuilt.");
    break;
    case3:exit(0);
    }
    getch();
    closegraph();
    }
  2. 对于命令行菜单,直接通过不断刷新输出来模拟菜单行为。

    例程:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    intn,t,k;
    intm;
    chars1[20],s2[20],c;
    char**l;
    char*num[]={"one","two","three","four","five","six","seven","eight","nine","ten"};
    voidmenu()
    {
    printf(" ******************************************************* ");
    printf(" **1.查找字符串S1中S2出现的次数** ");
    printf(" **2.统计字符串中大小写字母,数字出现的次数** ");
    printf(" **3.将数字翻译成英语** ");
    printf(" **4.结束** ");
    printf(" ******************************************************* ");
    printf(" 您的输入:");
    fflush(stdin);
    scanf("%d",&n);
    }
    voidcheck()
    {

    chara[20],b[20];
    intj=0,k,m,l=0;
    intt=0,n=0;
    printf("请输入主字符串: ");
    scanf("%s",a);
    k=strlen(a);
    printf("请输入子字符串: ");
    scanf("%s",b);
    m=strlen(b);
    for(n=0;n<k;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]!='');/*查找完字符数组a结束*/
    }
    printf("子字符串出现次数: %d ",l);
    }
    voidcout()
    {
    intn=0,t=0,k=0;
    printf("请输入一个字符串: ");
    fflush(stdin);/*清除缓冲*/
    while((c=getchar())!=' ')
    {
    if(c>='a'&&c<='z')
    n++;
    if(c>='A'&&c<='Z')
    t++;
    if(c>='0'&&c<='9')
    k++;
    }
    printf("有大写字母: %d ",t);
    printf("有小写字母: %d ",n);
    printf("有数字: %d ",k);
    }
    voidnumber()
    {
    l=num;
    printf("请输入一个数字:(0-10) ");
    fflush(stdin);
    scanf("%d",&m);
    printf("%d对应的英文是: %s ",m,*(l+m-1));
    }
    voidmain()
    {
    while(1)
    {
    system("cls");
    menu();
    switch(n)
    {
    case1:system("cls");check();system("pause");break;
    case2:system("cls");cout();system("pause");break;
    case3:system("cls");number();system("pause");break;
    case4:system("cls");break;
    default:system("cls");break;
    }
    if(n==4)break;
    }
    printf("感谢使用 ");
    }

2. C语言菜单怎么弄

中国电力出版社书号为5123-5504-0的C语言程序设计书上有介绍方法:
现在,通过一个简单的开发实例来理解上述概念。该应用软件运行时,首先出现一个菜单,用户选择某一菜单项后进入相应子模块处理具体问题,处理结束后回到主菜单。当在主菜单上选择退出功能后,软件运行结束。将各子模块划分成子函数后,进一步将菜单初始化和界面显示、选择功能划分成子函数,最终设计出来的函数代码框架如下:
#include <stdio.h>
//菜单初始化函数:设置菜单文字
void InitMenu( char *Menu[] )
{
Menu[0]="1. 菜单项1名称 ";

}
// 显示菜单、接受用户选择函数
// 初学者可以使用printf、getch函数实现基本交互
// 进阶后可以引入图形、字体、功能键、鼠标等元素进行人机交互
int ChooseMenu( char *Menu[], int MaxItem )
{
return 1; // 选择菜单1

return 0; // 选择退出
}
//模块一
void sub1(void)
{

}
void main( void )
{
char *Menu[10],MaxItem=10; //指针数组存储菜单名称:0-9项
intdone=0; //退出标志,为1时退出
InitMenu( Menu ); //调用菜单初始化模块
do
{
// 每轮循环都重新显示界面、接受用户选择、根据用户选择执行相应分支
switch( ChooseMenu(Menu, MaxItem ) )
{
case 1:
sub1();
break;
case 2:

case 0:
done=1;
}
}while(!done);
}
在结构那一章还有一个课程设计的菜单,太长了,感兴趣找书看看吧

3. C语言函数菜单的问题

/**********************************
完整的代码,只需编译即可运行!
**********************************/
#define MAX 100
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"math.h"
#include"string.h"
int length(char* a )
{ return strlen(a);
}
void (char *a,char*b,int n,int m)
{ int i,j;
for(i=m,j=0;i<n;i++,j++)
b[j]=a[i];
b[j]='\0';
}
void Inv(int* a,int n)
{ int i,*b;
b=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
b[i]=a[n-i-1];
for(i=0;i<n;i++)
a[i]=b[i];
}
void clear()
{clrscr();
gotoxy(16,4);
textbackground(14);
textcolor(4);
}

void good_bye()
{clear();
printf("\n\n\n\n\n\t\t\t Program End,GOOD BYE!");
getchar();
}

void print_randnum(int a[],int n)
{int i;
clear();
printf("\n\n\t\t output randnum:\n\n\t\t");
for(i=1;i<=n;i++)
{printf("%6d",a);
if(i%6==0) printf("\n\t\t");
}
printf("\n");
getchar();
getchar();
}

void creat_randnum(int a[],int range,int n)
{int i;
for(i=1;i<=n;i++)
a[i]=random(range);
printf("\n\n\t\t output randnum:\n\n\t\t");
for(i=1;i<=n;i++)
{printf("%6d",a);
if(i%10==0)printf("\n\t\t");
}
printf("\n");
getchar();
getchar();
}

int menu_select()
{ char c;
int n;
clear();
printf(" Shuzu de paixu yunsuan:\n\n\n");
printf("\t\t\t1. Chansheng suiji shuzu\n");
printf("\t\t\t2. Shuchu suijishu shuzu\n");
printf("\t\t\t3. Shuchu zifu chang\n");
printf("\t\t\t4. fu zifu shuzu\n");
printf("\t\t\t5. Lixu shuchu shuzhu\n");
printf("\t\t\t6. Nothing\n");
printf("\t\t\t0. Exit\n");
do{printf("\n\t\t\t Enter 0-6 select:");
c=getchar();
n=c-48;
}while((n<0)||(n>6));
return(n);
}

void create()
{int b[MAX],r[MAX];
void creat_randnum();
int range1,i,k=MAX;
clear();
printf("Jianli suijishu hanshu(press any key start):\n\n\n\t\t");
printf("\n\t\t shuru suijishu de fanwei range1=\n\t");
scanf("%4d",&range1);
creat_randnum(b,range1,k);
for(i=1;i<=MAX;i++)
r[i]=b[i];
}
void creat_randnum1(a)
int a[MAX];
{int n,range;
int i;
clear();
printf("chansheng suiji zhengshu chengxu\n\n");
printf("\n\t\t Shuru suijishu de geshu(n<=200):");
scanf("%d",&n);
printf("\n\t\t Shuru suijishu de fanwei range=");
scanf("%d",&range);
for(i=1;i<=n;i++)
a[i]=random(range)+1;
printf("\n\n\t\t Shuchu suiji zhengshu:\n\n\t\t");
for(i=1;i<=n;i++)
{printf("%6d",a);
if(i%5==0)printf("\n\t\t");
}
printf("\n");
getchar();
getchar();
}
void fun1(char*ch)

{ printf("Input a string:\n");
scanf("%s",ch);
printf("%d\n",length(ch));
}
void fun2(char a[],char b[])
{
int n, m;
printf("Input string a:\n");
scanf("%s",a);
n=strlen(a);
printf("Input the insert position:\n");
scanf("%d",&m);
(a,b,n,m);
printf("Now b string is:\n%s\n",b);
}
void fun3()
{ int N[1000];
int n,i;
printf("Input the length of the array\n");
scanf("%d",&n);
printf("Input the the array\n");
for(i=0;i<n;i++)
scanf("%d",&N[i]);
printf("After inverse,the array is:\n");
Inv(N,n);
for(i=0;i<n;i++)
printf("%d ",N[i]);
printf("\n");

}
main()
{int a[MAX],b[MAX],kk;
int range=999,n=MAX;
char ch[1000],ac[1000],bc[1000];
do
{kk=menu_select();
switch(kk)
{case 1:{creat_randnum(a,range,n);break;}
case 2:{print_randnum(a,n);break;}
case 3:{fun1(ch);break;}
case 4:{fun2(ac,bc);break;}
case 5:{fun3();break;}
case 6:{break;}
case 0:{good_bye();exit(0);}
}
getchar();
getchar();
}while(kk!=0);
}

4. 在c语言中,菜单函数中如何写才好返回上一个菜单啊

菜单函数用一个while循环套一个switch.里面再用一个while套switch就行了.
再简单一点的话直接用goto

5. C语言编写菜单

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//值传递
voidfun1(chara)
{
a='b';
}
//地址传递
charfun2(char*a)
{
*a='a';
return*a;
}
//动态分配数组
voidfun3(char*&a)
{
a=(char*)malloc(sizeof(char));
}
charcaidan()
{
charchoose[5];
printf(" *************************************** ");
printf("┌──────┐ ");
printf("│菜单│ ");
printf("__________________________________ ");
printf("│1,按值传递| ");
printf("│2,按地址传递| ");
printf("│3,动态数组演示| ");
printf("│4,退出| ");
printf("└────────────────┙ ");
printf("************************************** ");
do
{
printf("请输入您的选择(1-4):");
scanf("%s",choose);
}while(strcmp(choose,"1")&&strcmp(choose,"2")&&strcmp(choose,"3")&&strcmp(choose,"4"));
//返回选择的菜单,注意如果输入太长这里会异常,因为choose[5],只申请了5个字节。
returnchoose[0];
}
voidmain()
{
//执行菜单的选择
while(1)
{
switch(caidan())
{
case'1':
{
chara='a';
fun1(a);
//按值传递内容不变
break;
}
case'2':
{
charb='b';
chara=fun2(&b);
//按地址传递内容会变
break;
}
case'3':
{
char*p=NULL;
fun3(p);
//动态数组分配成功
break;
}
case'4':exit(0);
}
}

}

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

我写了一个完整程序给你参考,你可以在这个基础上增加你的功能。
源代码如下(vc++6.0下编译通过):
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>

void func1()
{
printf("func1 ... \n");getch();
//coding here ...
}

void func2()
{
printf("func2 ... \n");getch();
//coding here ...
}

//any other func coding here ..

void menu() //主菜单
{
system("cls"); //清屏
printf("\n\t\t\t 菜单\n");
printf("\t\t\t#***********************#\n");
printf("\t\t\t# 1.xxxx #\n");
printf("\t\t\t# 2.xxxxxxx #\n");
printf("\t\t\t# //any other.... #\n");
printf("\t\t\t# 9.退出 #\n");
printf("\t\t\t#***********************#\n");
printf("\t\t\t 请选择(1-9): ");
}
void main()
{
char select;
while(1)
{
menu();
system("COLOR 9f");
fflush(stdin);
scanf("%c",&select);

getchar(); //读入回车符
if(!isdigit(select)) //如果不是数字字符
{
printf("\n\7Your select may be wrong, must enter the digit!\n");
getch();
}
else
{
switch (select)
{
case '1':
func1();
break;
case '2':
func2();
break;

//any other coding here ...

case '9':
exit(-1);//直接退出
default:
printf("\n\7\7Your selected digit may be wrong, select again!\n");
getch();
break;
}
}
}
}

希望对你有帮助。

7. c语言函数调用自己定义的函数里面加菜单使用自己的函数!

voidFunctionChoice()
{
intindex=0,flag=0;
intx,y,z;

while(flag!=1)
{
system("cls");
printf("------Menu------ ");
printf("0.Exit ");
printf("1.jiafa ");
printf("2.jiafa ");
//morefunction...
printf(" Enterxandy:");
scanf("%d%d",&x,&y);
printf(" Choosefunction:");
scanf("%d",&index);

switch(index)
{
case0:
flag=1;
break;
case1:
z=jia(x,y);
break;
case2:
z=jian(x,y);
break;
//more...
}
printf(" z=%d ",z);
getchar();
}
}

8. C语言中如何实现选项菜单的功能

#include<stdio.h>
#include<stdlib.h>

voidhello()
{
printf("helloworld ");
}

intmain()
{

intx;
while(1)
{
printf("-------------操作选项----------- ");
printf("1:返回菜单 ");
printf("2:退出程序 ");
printf("3:执行操作 ");
printf("-------------------------------- ");


printf("按数字键选择要执行的操作:");
scanf("%d",&x);
printf(" ");

//输入2跳出循环,退出程序
if(x==2)
break;

switch(x)
{
case1:break;//输入1,跳出switch语句,进入下一次循环
case3:hello();break;
default://数字输入错误,跳出siwtch语句,进入下一次循环
printf("输入的数字不正确 ");
break;
}
}
return0;
}

说明:有3个选项,1是用返回菜单,2是用于退出程序,3是用于执行相关的操作,这里只是一个示例,所以将要执行的操作,编写成了一个输出hello world的函数。

9. 用c语言写一个简单的菜单程序,一个主函数至少四个子函数急求!!就像这样的。

分析:问题库(QAS)用外部的配置文件保存,每次运行前先载入库中已经建立的问题。然后再进入操作选择。完整代码如下:/*1.暂时不考虑汉字;2.可以用链表优化;3.将每一种操作封装成一个函数;*/#include#include#include#include////////////////////////////////////////////////////////////////////////////字符串最大长度#defineMAX_STR_LEN2048//题库上限#defineMAX_QAS_LEN1024//配置文件路径#defineQAS_FILE_PATH"d:\\qasconfig.txt"////////////////////////////////////////////////////////////////////////////问题结点typedefstructtagQASNode{charQuestion[MAX_STR_LEN];charAnswer[MAX_STR_LEN];doubleScore;boolIsAnswered;}QASNode;//问题库QASNode*g_QASLib[MAX_QAS_LEN];intg_QASIndex=0;////////////////////////////////////////////////////////////////////////////添加boolInsertToLib(char*pQuestion,char*pAnswer,doublescore){if(pQuestion==NULL||strcmp(pQuestion,"")==0||pAnswer==NULL)returnfalse;QASNode*pNewNode=(QASNode*)malloc(sizeof(QASNode));memset(pNewNode,0L,sizeof(QASNode));strcpy_s(pNewNode->Question,pQuestion);strcpy_s(pNewNode->Answer,pAnswer);pNewNode->Score=score;g_QASLib[g_QASIndex++]=pNewNode;returntrue;}//随机一个不重复的序号intGetQuestionIndex(){intretVal=-1;inttryCnt=0;while(tryCnt++IsAnswered){retVal=randVal;break;}}returnretVal;}//////////////////////////////////////////////////////////////////////////intmain(){//打开配置文件FILE*pStream=NULL;if(fopen_s(&pStream,QAS_FILE_PATH,"a+")!=0){printf_s("Opentheconfigfilefailed.\n");return-1;}//加载已有的QASfseek(pStream,0L,SEEK_END);intfileSize=ftell(pStream);fseek(pStream,0L,SEEK_SET);while(!feof(pStream)&&fileSize){if(g_QASIndexQuestion);printf_s("Inputanswer:");chartempA[MAX_STR_LEN]={0};fflush(stdin);gets_s(tempA,MAX_STR_LEN);if(strcmp(tempA,g_QASLib[currentIndex]->Answer)==0){printf("Right!\n");totalSocore+=g_QASLib[currentIndex]->Score;g_QASLib[currentIndex]->IsAnswered=true;}else{printf("Wrong!\n");}}else{printf("你已经答对了所有的问题!\n");}}break;case2:{if(currentIndex!=-1){printf("Quest:%s\nScore=%.2f\n",g_QASLib[currentIndex]->Question,g_QASLib[currentIndex]->Score);}else{printf("请先选择\"回答问题\"!\n");}}break;case3:{//一次只添加一个问题if(g_QASIndexQuestion,g_QASLib[i]->Answer,g_QASLib[i]->Score);}}break;default:break;}}printf("\n");return0;}运行起来后先建立问题库!