fndurwa073

博客园 首页 新随笔 联系 订阅 管理

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

*注:如遇安全性错误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;
}

总结:

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

posted on 2023-07-28 19:49  fudnixe27  阅读(11)  评论(0编辑  收藏  举报  来源