[C]函数的定义入门案例

*声明:文中给出的代码 往往 并非最佳解决方案,源于个人学习,仅供学习交流、抛砖引玉之用,请读者宽容看待,多多思考、多多突破。

*注:如遇安全性错误C4996可添加此行代码于文件头:#pragma warning(disable :4996)

一、介绍 参考(相关权益归原作者所有):

C 函数 | 菜鸟教程 (runoob.com)

二、案例解决方案代码分享:

1、求两数的最大公约数和最小公倍数

#include <stdio.h>

//在main函数前定义了函数,可以不做声明
int Calculater(int a, int b, char Judge) //传入原数和用于判断的值
{
	int z;
	if (b < a) { //为a,b排序保证b>a
		z = a;
		a = b;
		b = z;
	}
	if (Judge == 'D') //模式为D则求最大公约数
		for (z = b; a % z != 0 || b % z != 0; z--);
	else //否则求最小公倍数
		for (z = a; z % a != 0 || z % b != 0; z++);
	return z; //传递回结果
}
int main()
{
	int a, b;
	printf("请输入两整数:\n");
	scanf("%d%d", &a, &b);
	printf("它们的最大公约数是  %d  ,最小公倍数是  %d  \n", Calculater(a, b, 'D'), Calculater(a, b, NULL)); //调用函数
	return 0;
}

2、判断一个整数是否是素数

#include <stdio.h>

//在main函数前定义了函数,可以不做声明
int PrimeJudger(int a) //传入要判断的数
{
	int i;
	if (a == 1) //a为1,返回1,是素数
		return 1;
	for (i = a - 1; a % i != 0 && i > 0; i--);
	if (i == 1) //只有1能被整除,返回1,是素数
		return 1;
	return 0; //否则为0,不是素数
}
int main()
{
	int a;
	printf("输入一个整数,看看是不是素数吧?\t");
	scanf("%d", &a);
	if (PrimeJudger(a)) //返回值不是0就进入,是0就进入else
		printf("这个数是素数!\n");
	else
		printf("这个数不是素数!\n");
	return 0;
}

3、冒泡排序

#include <stdio.h>

int NUM = 0; //总个数(在函数外定义,这是个全局变量,程序完全结束才会回收)
//在main函数前定义了函数,可以不做声明
void BubbleSort(int a[])
{
	int z;
	for (int i = 0; i < NUM - 1; i++) //进入冒泡排序
		for (int j = 0; j < NUM - i - 1; j++) {
			if (a[j] > a[j + 1]) {
				z = a[j];
				a[j] = a[j + 1];
				a[j + 1] = z;
			}
		}
	//数组的传递是传递第一个元素的地址,不是值传递,所以最后数组会被改变,不用传回
}
int main()
{
	int a[100];
	char c;
	printf("请输入要排序的内容?(最后不要加空格,不超过100个数字)\n");
	rewind(stdin); //重头开始输入缓冲,抛弃现有缓冲区内容
	do {
		scanf("%d", &a[NUM++]); //读入顺便计数
	} while (getchar() != '\n'); //循环读入到回车停止
	BubbleSort(a); //调用函数
	for (int i = 0; i < NUM; printf("%d\t", a[i++])); //输出结果
	return 0;
}

总结:

灵活运用函数可以便利错误的查找和代码维护,提高程序的可读性。灵活定义函数,掌握好参数的传递规则将帮助我们更好地编写程序。感谢阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值