编写一个C语言程序,显示如下菜单并实现相应的菜单选择功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个C语言程序,显示如下菜单并实现相应的菜单选择功能相关的知识,希望对你有一定的参考价值。

本人是自学的,刚看完函数,不是很明白,麻烦各位回答的详细一点,谢谢了
编写一个C语言程序,显示如下菜单并实现相应的菜单选择功能:
************************************************
1.求整数n的立方
2.求整数n的立方根
3.结束程序
************************************************
要求:
1、菜单所示的1和2两项功能分别由两个函数实现。
2。每项功能执行完之后均回到菜单,直到按3结束程序的运行。
3。用递归法求n!(n!=1*2*3……*n).
请问立方为什么只能用%lf输出呢?

/*本程序没有采用严格的措施防止错误的输入,
所以请在看源程序之后再输入。
运行后会有如下提示:
“请输入你的选择及整数n(用逗号来间隔):”
这时可以输入这样的选择:“1,2”,即求2的立方
“2,125”,即求125的立方根
“3”,退出程序*/

#include<stdio.h>
#include<math.h>

display();
lifang(n);
lifanggen(n);

main()

int choice,number;
display();
printf("请输入你的选择及整数n(用逗号来间隔):\n");
scanf("%d,%d",&choice,&number);
switch(choice)

case 1:
lifang(number);
break;
case 2:
lifanggen(number);
break;
case 3:
break;



display()

printf("************************************************\n");
printf("1.求整数n的立方\n");
printf("2.求整数n的立方根\n");
printf("3.结束程序\n");
printf("************************************************\n");


lifang(n)

double val=n;
int time=3;
printf("%lf\n\n\n",pow(val, time));/*如果将%lf-->%d就不能得出结果*/
main();/*这里是简单的调用主函数来返回初始选择列表,还有其他方法实现*/


lifanggen(n)

double val=n;
double time=0.333333333333333;
/*这里为近似的1/3的值,因为要求
一个数字的立方根需要用到求立方根的算法,这里为求省事没有给出
,百度里边可以搜到*/
printf("%lf\n\n\n",pow(val,time));
main();
参考技术A #include<stdio.h>
#include<windows.h>
//\n1.增加 2.查询 3.删除 4.退出\n");
//声明函数
void addnd();
void searchnd();
void printnd();
void charund();
//含 枚举类型 分支switch
enum mmenu/*定义一个名为mmenu的枚举类型
可以让常量有一定的含义(如实现菜单)*/
addn=1,//默认是0,定义为1后 后面的成员也会自动变换(排序)
searchn,
printn,
quitn
;
void main()
enum mmenu input;
while(1)
printf("菜单\n1.增加 2.查询 3.打印 4.退出\n");
scanf("%d",&input);
sleep(500);
system("cls");
switch(input)//case内的情况 只能是整型或字符型的常量
case addn:printf("选中了1.增加\n");addnd();break;
case searchn:printf("选中了2.查询\n");searchnd();break;
case printn:printf("选中了3.打印\n");printnd();break;
case quitn:printf("选中了4.退出\n");exit(0);break;
default :printf("不在选项内,请重新输入!\n");break;
;

void addnd()//增加
printf("//请自定义addnd()函数代码//\n");

void searchnd()
printf("//请自定义searchnd()函数代码//\n");

void printnd()//打印
printf("//请自定义printnd()函数代码//\n");

void charund()
printf("//请自定义charund函数代码//\n");
参考技术B 把2楼的稍微改了下 加了阶乘功能
#include<stdio.h>
#include<math.h>
void my_jc()

int c=0,i,sum=1;
printf("输入整数N:");
scanf("%d",&c);
for(i=1;i<=c;i++)
sum=sum*i;
printf("%d\n",sum);

void my_LFG()

int b=0;
printf("输入整数N:");
scanf("%d",&b);
printf("立方根为%f\n",pow(b,1.0/3.0)) ;

void my_LF()

int a=0;
printf("输入整数N:");
scanf("%d",&a);
printf("立方为:%d\n",a*a*a);

void main()

int server=0;
while(server!=3)

printf("************************************************ \n");
printf("1.求整数n的立方\n") ;
printf("2.求整数n的立方根\n ") ;
printf("3.求n的阶乘并结束程序\n");
printf("************************************************\n");
printf("请选择服务类型:");
scanf("%d",&server);
switch(server)

case 1:
my_LF();
break;
case 2:
my_LFG();
break;
case 3:
my_jc();break;



参考技术C 把2楼的稍微改了下
加了阶乘功能
#include<stdio.h>
#include<math.h>
void
my_jc()

int
c=0,i,sum=1;
printf("输入整数N:");
scanf("%d",&c);
for(i=1;i<=c;i++)
sum=sum*i;
printf("%d\n",sum);

void
my_LFG()

int
b=0;
printf("输入整数N:");
scanf("%d",&b);
printf("立方根为%f\n",pow(b,1.0/3.0))
;

void
my_LF()

int
a=0;
printf("输入整数N:");
scanf("%d",&a);
printf("立方为:%d\n",a*a*a);

void
main()

int
server=0;
while(server!=3)

printf("************************************************
\n");
printf("1.求整数n的立方\n")
;
printf("2.求整数n的立方根\n
")
;
printf("3.求n的阶乘并结束程序\n");
printf("************************************************\n");
printf("请选择服务类型:");
scanf("%d",&server);
switch(server)

case
1:
my_LF();
break;
case
2:
my_LFG();
break;
case
3:
my_jc();break;


参考技术D #include<stdio.h>
#include<math.h>

void my_LFG()

int b=0;
printf("输入整数N:");
scanf("%d",&b);
printf("立方根为%f\n",pow(b,1.0/3.0)) ;

void my_LF()

int a=0;
printf("输入整数N:");
scanf("%d",&a);
printf("立方为:%d\n",a*a*a);

void main()

int server=0;
while(server!=3)

printf("************************************************ \n");
printf("1.求整数n的立方\n") ;
printf("2.求整数n的立方根\n ") ;
printf("3.结束程序\n");
printf("************************************************\n");
printf("请选择服务类型:");
scanf("%d",&server);
switch(server)

case 1:
my_LF();
break;
case 2:
my_LFG();
break;



vba实现excel二级联动多选功能

要求

二级菜单需要根据一级菜单的不同变换内容

二级菜单为多选框,选择后,以逗号分隔显示在单元格内

实现

先上效果图,如下图图一所示,这里面是excel2013版本

图一效果图

数据源放在了sheet2里面,数据源如下图二所示。这里,使用第一行为第一级即H列的数据源【H列加数据验证为序列,源为sheet2的第一列,度娘有很详细的步骤】;I列根据H列的不同,加载对应列为多选的选项。

图二数据源

在编写代码的时候,一定要记得先加控件,步骤图如下图三所示,图四是控件的属性图,另外,请先确定启用了宏和开发工具【度娘有详细教导】。控件名字为ListBox1,放在I列。右键sheet1--查看代码---在编辑器里面针对它进行了一系列编码,这里也附上了编码,代码是我拼凑过来的,我知道不好看,但是好在实现了,,,,,祝好吧。

 

图三添加控件

图四控件属性

 

小结

  老大是想让我一天实现,但是,臣无能啊~第一天都在看二级联动菜单,发现不需要vba啊,度娘说数据验证就能实现了,第二天反应过来了,需要的是多选框,期间调试代码的时候一脸懵逼,就说我控件未定义,后来,老大来了,一脸黑线的帮我在界面拖出个控件,,,,,我控件都没有,编了一堆代码有何用,,,,,,

 1 Option Explicit
 2     Dim t As String
 3     Dim Reload As Boolean
 4 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 5     ActiveCell.Value = ListBox1.Value
 6     Me.ListBox1.Clear
 7     Me.ListBox1.Visible = False
 8 End Sub
 9 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
10     Dim i As Integer
11     Dim j As Integer
12     Dim Y As Integer
13     Dim Z As Integer
14     Dim arr1 As Variant, arr2 As Variant
15     Dim myStr As String
16     Dim columName As String
17     Dim X As String
18     Me.ListBox1.Clear
19 
20     
21     If Target.Count = 1 Then \'单击一个单元格有效,多选无效
22 
23         With Me.ListBox1
24              If Target.Column = 11 And Target.Row > 2 Then
25                 If Cells(Target.Row, Target.Column - 1) <> "" Then \'上级没有数据,不显示多选框
26               columName = Cells(Target.Row, Target.Column - 1)
27               For Y = 1 To 100
28               If Sheet2.Cells(1, Y) = columName Then \'根据列名得到列号A、B之类的
29                  Z = Y
30                  If Y > 26 Then
31                  X = Mid(Cells(1, Y).Address, 2, 2) \'这是处理AA、AB,即26列以后的情况
32                  Else
33                  X = Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZ", Y, 1)
34                  End If
35               End If
36               Next
37               [B5] = X \'这是当时用来查看结果的,然后忘记删掉了,,,,,,bless
38               With Sheet2 \'加载多选项
39                 arr1 = .Range(X & "2:" & X & .Range(X & "65535").End(xlUp).Row)
40                 If .Range(X & "65535").End(xlUp).Row <> 2 Then
41                 For j = 1 To .Range(X & "65535").End(xlUp).Row - 1
42                   
43                     Me.ListBox1.AddItem arr1(j, 1)
44                    
45                 Next j
46                 Else
47                     Me.ListBox1.AddItem Sheet2.Cells(2, Z)
48                 End If
49               End With
50                 t = ActiveCell.Value
51                 Reload = True
52                 For i = 0 To .ListCount - 1
53                      If InStr(t, .List(i)) Then
54                         .Selected(i) = True
55                      Else
56                         .Selected(i) = False
57                      End If
58                 Next
59                 Reload = False
60                 .Top = ActiveCell.Top + ActiveCell.Height
61                 .Left = ActiveCell.Left
62                 .Width = ActiveCell.Width
63                 .Visible = True
64                 
65                 Else
66                 .Visible = False \'监听到非此列时,隐藏复选框
67                 End If
68             Else
69             .Visible = False
70             End If
71             t = ""
72         End With
73         
74     End If
75 End Sub
76 Private Sub ListBox1_Change()
77     Dim i As Integer
78     Dim flag As Boolean
79     flag = False
80     If Reload Then Exit Sub
81     For i = 0 To Me.ListBox1.ListCount - 1
82         If Me.ListBox1.Selected(i) = True Then
83         t = t & "," & Me.ListBox1.List(i)
84         flag = True
85         End If
86     Next
87     If flag = False Then
88         t = ""
89     End If
90     ActiveCell.Value = ""
91     ActiveCell = Mid(t, 2)
92     t = ""
93 End Sub
代码

 

以上是关于编写一个C语言程序,显示如下菜单并实现相应的菜单选择功能的主要内容,如果未能解决你的问题,请参考以下文章

编写一个shell程序,实现如下所示的菜单。

python菜单程序

突出显示当前所选导航菜单项的背景

用C语言编写一个随机点名程序

WPF 程序中 怎么实现像WinForm中MDI容器的效果?例如:点击A菜单,相应的窗体显示在B中!

vba实现excel二级联动多选功能