c语言写菜单的示例

c语言写菜单的示例,第1张

#include <stdioh>

#include <windowsh>

#include <stringh>

#include <stdlibh>

#define MAX 1000

void main1()

{

int a, p;

p = &a;

printf("please input a number:");

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

printf("a=%d\np=%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[i5+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[i4+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);

}

用个 switch语句就可以了,你参考下这个:

#include<stdioh>

void JiShu();

void SuShu();

void menu();

void main(){

menu();

}

void menu(){

printf(" 魔方阵 \n");

printf("\n");

printf(" 1、奇数魔方阵 \n");

printf(" 2、素数魔方阵 \n");

printf(" 0、退出 \n");

printf("\n");

printf(" 请输入选项: \n");

int select;

scanf("%d",&select);

switch(select){

case 1:

JiShu();

break;

case 2:

SuShu();

break;

case 0:

break;

default:

break;

}

}

void JiShu(){

printf(" 我是奇数! \n");

menu();

}

void SuShu(){

printf(" 我是素数! \n");

menu();

}

程序如下:

#include <stdioh>

#include <stringh>

int MENU_Print(int s32QuerNum)

{

switch(s32QuerNum)

{

case 1:

printf("您选择的题目如下:\n");

printf("1、以下可以正确表示标识符的是:()\n");

printf("A、Data, Double\n");

printf("B、case, Big\n");

printf("C、2011A,hi_ok\n");

printf("D、_2011,year-month-data\n");

break;

case 2:

printf("您选择的题目如下:\n");

printf("2、以下运算符优先级最低的是:()\n");

printf("A、:\n");

printf("B、++\n");

printf("C、&&\n");

printf("D、+=\n");

break;

case 3:

printf("您选择的题目如下:\n");

printf("2、以下选项中不能正确赋值的是:()\n");

printf("A、char s[20]; s=\"ABCDE\"\n");

printf("B、char s[]=\"ABCDE\"\n");

printf("C、char s[20]={\"ABCDE\"}\n");

printf("D、char s[20]={'A','B','C'}\n");

break;

default:

break;

}

return 0;

}

int main()

{

int s32ChooseNum = 0;

while(1)

{

printf("\n题号范围为1-3,请输入题号:\n");

scanf("%d", &s32ChooseNum);

if(s32ChooseNum < 1 || s32ChooseNum > 3)

{

printf("题号范围为1-3,您是输入超出的范围,请重新输入\n");

continue;

}

MENU_Print(s32ChooseNum);

}

return 0;

}

运行结果:

我也不知道有没有理解你的意思,你看看是否合适。。。,我没有做选择输入和结果的判断,如果需要的话可以加上去,你可以告诉我你的具体要求

以上

在 C 语言中实现子菜单主菜单回退的常用方法是使用循环和条件语句控制程序流程。

具体实现步骤如下:

在主菜单中使用一个循环(如 while 循环),实现主菜单的重复显示和等待用户输入的功能。

当用户选择进入子菜单时,主菜单中的循环应该退出,进入子菜单的处理逻辑。

在子菜单中,当用户选择回到主菜单时,应该退出子菜单的处理逻辑,返回到主菜单中的循环中。

在主菜单中,当用户选择退出程序时,主菜单的循环应该退出,整个程序结束。

以下是一个简单的示例程序,实现了主菜单和一个子菜单的功能,并实现了子菜单向主菜单回退的功能:

#include <stdioh>

int main() {

int choice = 0;

while (1) {

printf("主菜单:\n");

printf("1 选项一\n");

printf("2 选项二\n");

printf("3 子菜单\n");

printf("4 退出\n");

printf("请输入选项(1-4):");

scanf("%d", &choice);

switch (choice) {

case 1:

printf("您选择了选项一。\n");

break;

case 2:

printf("您选择了选项二。\n");

break;

case 3:

printf("子菜单:\n");

printf("1 子选项一\n");

printf("2 子选项二\n");

printf("3 返回主菜单\n");

printf("请输入选项(1-3):");

scanf("%d", &choice);

switch (choice) {

case 1:

printf("您选择了子选项一。\n");

break;

case 2:

printf("您选择了子选项二。\n");

break;

case 3:

printf("返回主菜单。\n");

// 跳出子菜单的处理逻辑,返回到主菜单的循环中

break;

default:

printf("无效选项,请重新选择。\n");

break;

}

break;

case 4:

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

// 跳出主菜单的循环,结束程序

return 0;

default:

printf("无效选项,请重新选择。\n");

break;

}

}

return 0;

}

在这个示例程序中,主菜单使用了一个 while 循环,不断重复显示和等待用户输入。

当用户选择进入子菜单时,主菜单中的循环退出,进入子菜单的处理逻辑。子菜单也使用了一个 switch 语句,等待用户选择,并执行相应的处理逻辑。

当用户选择返回主菜单时,子菜单的处理逻辑退出

大致代码如下

#include <stdioh>

#include <stdlibh>

void menu()

{

    printf ("\t    主菜单\n");

    printf ("===============================\n");

    printf ("\t1输出学生成绩\n");

    printf ("\t2查询学生成绩\n");

    printf ("\t3打印学生成绩\n");

    printf ("\t0退出系统\n");

    printf ("===============================\n");

}

int main()

{

    int operation;

    menu();

    scanf("%d", &operation);

    switch(operation){

    case 1:

        printf ("请输入\n");

        break;

    case 2:

        printf ("请输入查询学生学号\n");

        break;

    case 3:

        printf ("正在输出\n");

        break;

    case 0:

        printf ("谢谢使用\n");

        break;

    default:

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

        break;

    }

    return 0;

}

以上就是关于c语言写菜单的示例全部的内容,包括:c语言写菜单的示例、C语言设计选择菜单、用c语言编写一个菜单!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9437083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存