通过使用while的死循环做菜单以及switch ,case的相关操作,实现输入(scanf),输出(printf),求出数组最大值以及冒泡排序

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;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的实现: ```c #include <stdio.h> // 函数声明 void inputArray(int arr[], int len); void outputArray(int arr[], int len); double average(int arr[], int len); int max(int arr[], int len); void sort(int arr[], int len); int search(int arr[], int len, int key); int main() { int arr[100], len, choice, key; printf("请输入数组长度(不超过100):"); scanf("%d", &len); inputArray(arr, len); while (1) { printf("\n请选择要进行的操作:\n"); printf("1. 数组输出\n"); printf("2. 数组元素平均\n"); printf("3. 数组最大\n"); printf("4. 数组排序\n"); printf("5. 数组查找\n"); printf("0. 退程序\n"); printf("请选择(0-5):"); scanf("%d", &choice); switch (choice) { case 0: return 0; case 1: outputArray(arr, len); break; case 2: printf("数组元素平均为:%f\n", average(arr, len)); break; case 3: printf("数组最大为:%d\n", max(arr, len)); break; case 4: sort(arr, len); printf("数组排序成功!\n"); break; case 5: printf("请输入要查找的元素:"); scanf("%d", &key); if (search(arr, len, key) == -1) { printf("查找失败!\n"); } else { printf("元素 %d 的下标为 %d。\n", key, search(arr, len, key)); } break; default: printf("输入有误,请重新输入!\n"); } } return 0; } // 输入数组 void inputArray(int arr[], int len) { printf("请输入数组元素:\n"); for (int i = 0; i < len; i++) { scanf("%d", &arr[i]); } } // 输出数组 void outputArray(int arr[], int len) { printf("数组元素为:"); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); } // 计算数组平均 double average(int arr[], int len) { double sum = 0; for (int i = 0; i < len; i++) { sum += arr[i]; } return sum / len; } // 获取数组最大 int max(int arr[], int len) { int max = arr[0]; for (int i = 1; i < len; i++) { if (arr[i] > max) { max = arr[i]; } } return max; } // 数组排序使用冒泡排序) void sort(int arr[], int len) { for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } // 数组查找(返回元素下标,未找到返回 -1) int search(int arr[], int len, int key) { for (int i = 0; i < len; i++) { if (arr[i] == key) { return i; } } return -1; } ``` 这个程序实现了对一维数组的基本操作,包括了数组输入输出平均最大排序和查找。可以根据需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值