(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();//显示数组

程序分析:

程序的思路: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;
}

时间: 2024-11-15 01:40:38

(c语言)函数间的调用,switch case的相关文章

CASE函数用法:相当于switch..case:,能够实现等值判断,也可以做范围判断 相当于if...else

--CASE函数用法:--1.相当于switch..case:,能够实现等值判断--语法:--case 字段/表达式 --判断指定折字段或者表达式的值,它不能判断null值,因为null不是一个具体的值-- when 值 then '自定义值'-- when 值 then '自定义值'-- else '前面都不满足的情况'--end--特点:-- 1.会生成一个新列-- 2.then后面的值的类型需要一致select StudentNo,StudentName,case ClassId when

C语言函数的递归调用

一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数.执行递归函数将反复调用其自身,每调用一次就进入新的一层. [示例]用递归计算 n!.阶乘 n! 的计算公式如下: 根据公式编程: long factorial(int n){ long result; if(n==0 || n==1){ result = 1; }else{ result = factorial(n-1) * n; // 递归调用 } return result; } 这是一个典型的递归函数.调用factoria

如何在switch case中定义变量(不用花括号)

这个周末有幸见到了几位神交已久的库友(天天/迪迪/丁丁),大家一起扯了些有的没的,很开森! 天天考了我一个问题,在C语言里面,如何在switch case中定义一个变量?要求是不用花括号. 这个问题是背景是,下面的代码是编译不过的,因为在case后面不能直接定义变量. switch (v) {    case 1:       int a;       get_value_of_xx(&a);       set_yy(a);       break;    case 2:       //do

C语言switch/case圈复杂度优化重构

软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度量指标之一. C语言开发的项目中,switch/case代码块是一个很容易造成圈复杂度超标的语言特性,所以本文主要介绍下降低switch代码段的重构手段(如下图).switch圈复杂度优化重构可分为两部分:程序块的重构和case的重构.程序块重构是对代码的局部优化,而case重构是对代码的整体设计,

Linux汇编GAS调用C语言函数实例

Blum的书上只讲了C语言调用汇编,没讲汇编调用C语言.我自己尝试了下. 最终试验成功了,在此写出与大家分享.期间历经无数错误,无数异常,我不是醉了,而是跪了...好在最后好了. 程序实现一个换值功能,在main.s里定义a=10,b=20,然后调用C语言函数把a,b换值. 新建两个文件分别为main.s的汇编文件,还有pro.c的C语言函数文件. main.s的代码如下: .section .data a: .int 10 b: .int 20 .section .text .globl ma

从linux0.11中起动部分代码看汇编调用c语言函数

上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一段代码(linux0.11的启动分析部分会在另一部分中再分析,由于此文仅涉及c与汇编代码的问题,). after_page_tables: pushl $0 # These are the parameters to main :-) pushl $0 pushl $0 pushl $L6 # re

借助动态代码生成技术在基于Webkit引擎的HTML5网页JS内调用易语言函数

作者:庄晓立(Liigo) 日期:2015年3月3日夜 原创链接:http://blog.csdn.net/liigo/article/details/44045177 版权所有,转载请注明出处:http://blog.csdn.net/liigo 前两天我协助解决了一个技术问题,在此稍作记录和总结. 具体来说,就是在使用基于Webkit引擎的封装组件wke的过程中,需要把一个易语言函数注册给JavaScript引擎,让它可以在网页里被调用(就像在网页里调用普通JavaScript函数一样).如

c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数据类型, 还有BOO数据类型, 以及一些其它的数据类型, 如自定义的结构体数据类型 BOOL数据类型是一种表示非真即假的数据类型, 布尔类型的变量只有YES和NO两个值. YES表示表达式结构为真, 反之, NO表示表达式结果为假(在c语言中, 认为非0即为真), BOOL类型主要用与分支结构或循环

【ASP.NET】如何使用类创建公共函数,在不同ASP.NET页面间重复调用

为了减少代码冗余,应将公共函数写在类中,供不同ASP.NET页面调用. 1,先新建一个类,并在类中添加函数逻辑 namespace public_function_demo { public class MyFunction { public static string tbName(string tbNo) { if (tbNo == "510101") { return "3GPP 51.010-1"; } else { return "3GPP 51