码迷,mamicode.com
首页 > 编程语言 > 详细

(c语言)函数间的调用,switch case

时间:2015-05-05 21:59:27      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:c语言   函数的调用   switch   select   数组   

问题描述:

        编写以下四个函数:

init();//设计函数初始化数组为 1 2 3 4 5 6 7 8 9 10

sort();//设计排序函数,实现数组的降序排列:10 9 8 7 6 5 4 3 2 1
empty();//清空数组,全为0

show();//显示数组

程序分析:

      程序的思路:a.先将程序的头和尾写好,在主函数中将要被处理的两个参数(一个数组arr,和数组的长度len)。b.再封装那几个函数,额外加上一个menu函数。c.在主函数中用switch case语句调用这几个函数。

代码如下:

/**
init();//设计函数初始化数组为 1 2 3 4 5 6 7 8 9 10
sort();//设计排序函数,实现数组的降序排列:10 9 8 7 6 5 4 3 2 1
empty();//清空数组,全为0
show();//显示数组**/
#include<stdio.h>
#define LENGTH 10	  //宏定义数组的大小
/***初始化数组****/
void init(int arr[],int n)
{
	int i = 0;
/**给数组中的每个元素赋值**/	
	for(i = 0;i < n;i++)
	{
		arr[i] = i+1;
	}
}
/***选择排序****/
void selection_sort(int arr[],int n)
{
	int i = 0;     //用下标i表示数组中当前元素
	int j = 0;	   //用下标j表示这次循环中找到的最大元素的下标
	int k;		   //用下标k存放每次循环中最大元素的下标
	int temp;	   //定义中间变量,用于下面的交换
	for(i = 0;i<n;i++)
	{
		k = i;	//假设每次循环中的最大值就是循环中的第一个值的值
		for(j = i+1;j < n;j++) //从每次循环中的第二个开始与假设的最大值比较
		{
			if(arr[j] > arr[k])	//当找到比假设值大的时候,将最大值下标赋给k
			{
				k = j;
			}
		}
		if(k != i)	//查找后如果循环中最大值不是假设值
		{
			temp = arr[i];	 //交换,使k下标对应的值为每次循环中的最大值
			arr[i] = arr[k];
			arr[k] = temp;
		}	
	}
}
/***冒泡排序****/
void bubble_sort(int arr[],int n)
{
	int i = 0;	 //定义外层循环变量i,并且初始化为0
	int j = 0;	 //定义内层循环变量j,并且初始化为0
	int temp;	  //定义中间变量,用于后面的交换
	for(i = 0;i<n-1;i++)   //外层循环,总共进行n-1趟相邻的两两比较
	{
		for(j = 0;j < n-1-i;j++)//内层循环,每趟循环比较n-1-i次
		{
			if(arr[j+1]>arr[j])	 //当相邻的两两比较中,后者大于前者,进行交换
			{
				temp = arr[j+1];
				arr[j+1] = arr[j];
				arr[j] = temp;
			}	
		}
	}	

}
/***清空数组****/
void empty(int arr[],int n)	//这个函数时将数组中的所有元素置为0
{
	int i = 0;
	for(i = 0;i < n;i++)
	{
		arr[i] = 0;
	}
}
/***打印显示数组****/
void show(int arr[],int n) //这个函数主要用打印的方式,显示每次调用其他函数后的结果
{
	int i = 0; 
	for(i = 0;i < n;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");

}
/***设置菜单****/
void menu()   //编写menu给用户提供如何使用的信息
{
	printf("*******初始化--->1********\n");
	printf("*******冒泡排序--->2******\n");
	printf("*******选择排序--->3******\n");
	printf("********清空--->4*********\n");
	printf("********打印--->5*********\n");
}

int main()
{
	int j = 0;
	int a[10];	  //定义一个大小为10*sizeof(int)的数组
	int len = sizeof(a)/sizeof(a[0]);  //数组的大小
	
	int select;	  //定义select作为switch函数的参数
	int i = 1;	  //定义并初始化循环变量
	
	while(i)
	{	 
		menu();	   //调用menu函数
		printf("请输入功能序号:\n") ;
		scanf("%d",&select);

		switch(select)	 //编写switch函数
		{
		case 1:
			init(a,len);
			break;
		case 2:
			bubble_sort(a,len);
			break;
		case 3:
			selection_sort(a,len);
			break;
		case 4:
			empty(a,len);
			break;
		case 5:
			show(a,len);
			break;
		default:
			break;
		}
	}
	return 0;
}

技术分享

技术分享

技术分享

(c语言)函数间的调用,switch case

标签:c语言   函数的调用   switch   select   数组   

原文地址:http://blog.csdn.net/live_wyq/article/details/45506849

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!