*声明:文中给出的代码 往往 并非最佳解决方案,源于个人学习,仅供学习交流、抛砖引玉之用,请读者宽容看待,多多思考、多多突破。
*注:如遇安全性错误C4996可添加此行代码于文件头:#pragma warning(disable :4996)
一、介绍 参考(相关权益归原作者所有):
二、案例解决方案代码分享:
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;
}
总结:
灵活运用函数可以便利错误的查找和代码维护,提高程序的可读性。灵活定义函数,掌握好参数的传递规则将帮助我们更好地编写程序。感谢阅读。