A. 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);
}
在結構那一章還有一個課程設計的菜單,太長了,感興趣找書看看吧

B. 在c語言中,一個菜單套著一個菜單,如何從二級菜單跳回一級菜單

1、首先在打開的C語言編程軟體中,編寫這個【homePage】函數。

C. c語言如何返回菜單

1、如果只是想返回已經寫好的主菜單頁面的話 可以直接在當前函數中結束位置調用主菜單所在的函數,如果想輸入某值返回的話 就加個輸入提示 比如 在其他函數頁面加上「輸入0返回主菜單」就可以在任意時候 輸入0來返回 當然實現的時候也是輸入語句加判斷語句 加調用主菜單所在函數,調用前先調用清屏函數。

2、常式:

#include<stdio.h>
intmenu()
{intrt;
charstr[256];
printf("1**** ");
printf("2**** ");
printf("3**** ");
printf("4**** ");
printf("5退出程序 ");
printf("請選擇,輸入選項前面的數字後回車:");scanf("%s",str);
if(str[0]>='1'&&str[0]<='5')rt=str[0]-'0';elsert=0;
returnrt;
}
voidf1(){}
voidf2(){}
voidf3(){}
voidf4(){}
voidmain()
{ints,loop=1;
while(loop)
{s=menu();
switch(s)
{case1:f1();break;
case2:f2();break;
case3:f3();break;
case4:f4();break;
case5:loop=0;break;
default:break;
}
}
}

D. c語言中,怎樣實現子菜單向主菜單回退

1、如果只是想返回已經寫好的主菜單頁面的話 可以直接在當前函數中結束位置調用主菜單所在的函數,如果想輸入某值返回的話 就加個輸入提示 比如 在其他函數頁面加上「輸入0返回主菜單」就可以在任意時候 輸入0來返回 當然實現的時候也是輸入語句加判斷語句 加調用主菜單所在函數,調用前先調用清屏函數。
2、常式:

#include<stdio.h>int menu(){ int rt; char str[256]; printf("1 ****\n"); printf("2 ****\n"); printf("3 ****\n"); printf("4 ****\n"); printf("5 退出程序\n"); printf("請選擇,輸入選項前面的數字後回車: "); scanf("%s",str); if ( str[0]>='1' && str[0]<='5' ) rt=str[0]-'0'; else rt=0; return rt;}void f1() {}void f2() {}void f3() {}void f4() {}void main(){ int s,loop=1; while ( loop ) { s=menu(); switch ( s ) { case 1: f1(); break; case 2: f2(); break; case 3: f3(); break; case 4: f4(); break; case 5: loop=0; break; default: break; } }}

E. 怎樣用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("感謝使用 ");
    }

F. C語言 編寫菜單

#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;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]!='\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");
}

樓主,終於幫你寫完了,完美測試成功,第一功能因為學藝未精寫了兩個小時,艾,呵呵,不過我還是很開心,如果你有什麼不懂可以HI我,我會幫你解答,呵呵,真的好開心,終於寫出來了
哈哈。。。。

G. 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的函數。

H. 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;i<n;i++)
{
scanf("%f",(p+i));
}
}
void Output(float *q,int n)
{
int i;
printf("Output the score:\n");
for(i=0;i<n;i++)
{
printf("%f\n",*(q+i));
}
}
void FMax(float score[], int n,float *maxs,int *maxn )
{
int i;
*maxs=score[0];
for(i=1;i<n;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;i<n;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;j<5;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;i<10;i++)
{
for(j=0;j<5;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;i<len;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; j<4; 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; j<4; 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;i<n;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&p[i*4+j]);
}
}
printf("是100分制請輸入100,150分制請輸入150:");
scanf("%d",&x);
switch(x)
{
case 100:
i=0;//從第一個開始擦找
while (i<n+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 (!p&&count==0)//如果沒有
{
printf("沒有成績不及格的同學\n");
}
break;
case 150:
i=0;//從第一個開始擦找
while (i<n+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 (!p&&count==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);
}

I. 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);
}
}

}