1.首先先做我们的菜单子函数,从主函数中进行调用。
注意:头文件下方使用了一个宏定义,为了方便我们修改输入输出的数的个数,且宏定义只做替换,在以后的代码中我都可以使用宏名(shu)去代替数值(5)。
2.在主函数中我们运用了while的死循环,为了方便菜单做完一项指令之后接着弹出,方便接下来的操作,还有switch,case的相关运用我会具体说明:
2.1 死循环
要知道我们需要循环的是菜单,但是也许做一个跳出死循环的指令,否则菜单会一直弹出,那样大家就只能ctrl c了。
这里我们做了一个判断,当你输出的序号为5的时候,就会跳出死循环。
2.2 switch case的运用
这是我们定义的参数,其中a是我们的菜单选项,str为我们的数组名,这里我用五个数为例去实现我们的相关功能。
2.2.1 scanf 和printf
我们需要循环输出输入 ,其中用到了一个for循环,每当运行完一个case指令别忘加break结束循环,否则会一直往下执行。运行结果如下:
2.2.2 数组最大值以及冒泡排序
.
由于我们以五个数为例,所以下标的时候从0开始4结束,通过循环判断输出最大值
冒泡排序我是通过两个for循环,从而数值进行交换
这里定义了一个变量w,用于替换数值,实现两个数值的相互交换。
注意:循环套循环的时候,外循环循环一次内循环循环多次
这里菜单中序号4我只做了排序,我们直接在序号2中输出就可以了。
最后一个小细节加一个换行符接可以了
具体代码如下:
#include<stdio.h>
#define SHU 5
int menu()
{
int a;
printf("1-------输入SHU个数\n");
printf("2-------输出SHU个数\n");
printf("3-------数组最大值\n");
printf("4-------冒泡排序由大到小排序\n");
printf("5-------结束菜单\n");
printf("请输入你选择的序号\n");
scanf("%d",&a);
return a;
}
int main(int argc, const char *argv[])
{
int str[5]={0};
int a;
int b=0,w=0;
int j,k,n=0,m=0;
while(1)
{
a=menu();
switch(a)
{
case 1:
printf("请输入%d个数",SHU);
for(b=0;b<SHU;b++)
{
scanf("%d",&str[b]);
}break;
case 2:
printf("输出的数是:");
for(b=0;b<SHU;b++)
{
printf("%d",str[b]);
}break;
case 3:
for(j=0,k=str[0];j<SHU-1;j++)
{
if(k<str[j+1])
{
k=str[j+1];
}
}
printf("数组的最的数是:%d",k);
case 4:
for(n=0;n<SHU-1;n++)
{
for(m=0;m<SHU-1-n;m++)
if(str[m]<str[m+1])
{
w=str[m];
str[m]=str[m+1];
str[m+1]=w;
}
}
}
printf("\n");
if(a==5)break;
}
return 0;
}