写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友。
目录函数
1.调用有参函数2.调用无参函数3.函数的嵌套4.函数的递归
函数 1.调用有参函数
例1
//常规思路 #includeint main() { float a[4]; int i; float t,u,v; for (i = 0; i <= 3; i++) { printf("请输入第%d个数字:", i + 1); scanf_s("%f", &a[i]); } if (a[0] < a[1]) t = a[1]; else t = a[0]; if (a[2] < a[3]) u = a[3]; else u = a[2]; if (t < u) v = u; else v= t; printf("前两个数中的最大数为%fn",t); printf("后两个数中的最大数为%fn",u); printf("四个数中的最大数为%fn", v); return 0; }
//调用有参函数max() #includeint main() { float max(float x, float y); //开头:声明max函数 float a[4]; int i; float t, u, v; for (i = 0; i <= 3; i++) { printf("请输入第%d个数字:", i + 1); scanf_s("%f", &a[i]); } t = max(a[0], a[1]); u = max(a[2], a[3]); v = max(t, u); printf("前两个数中的最大数为%fn", t); printf("后两个数中的最大数为%fn", u); printf("四个数中的最大数为%fn", v); return 0; } float max(float x, float y) //结尾定义max函数 { float zuidashu; if (x > y) zuidashu = x; else zuidashu = y; return(zuidashu); //切记不能忘记return语句 }
// 结尾声明函数
//第一种写法:
float max(float x, float y) //结尾定义max函数
{
float zuidashu;
if (x > y)
zuidashu = x;
else
zuidashu = y;
return(zuidashu); //切记不能忘记return语句
}
//第二种写法:
float max(float x, float y)
{
if (x > y)
return(x);
else
return(y);
}
//第三种写法:
float max(float x, float y)
{
return(x > y ? x : y);
}
练习
#include2.调用无参函数int main() { float aver(float a[], int n); //开头:声明aver函数 float zu1[5],zu2[10]; int i; printf("请输入第1组的学生成绩:n"); for (i = 0; i <= 4; i++) scanf_s("%f", &zu1[i]); printf("请输入第2组的学生成绩:n"); for (i = 0; i <= 9; i++) scanf_s("%f", &zu2[i]); printf("第1组的平均分是%fn", aver(zu1,5)); printf("第2组的平均分是%fn", aver(zu2, 10)); return 0; } float aver(float a[], int n) //结尾定义aver函数 { float sum = a[0], pingjunshu; int i; for (i = 1; i < n; i++) sum = sum + a[i]; pingjunshu = sum / n; return(pingjunshu); }
例2
#includeint main() { printf("1234567n"); printf("猴博士是大帅逼n"); printf("7654321n"); printf("猴博士是大帅逼n"); printf("7654321n"); printf("猴博士是大帅逼n"); return 0; }
//调用无参函数 #includeint main() { void a(); void b(); void c(); a(); b(); c(); b(); c(); b(); return 0; } void a() { printf("1234567n"); } void b() { printf("猴博士是大帅逼n"); } void c() { printf("7654321n"); }
练习
#includeint main() { void paixu(int a[], int n); int a[10],i; printf("请输入10个整数:n"); for (i = 0; i <= 9; i++) scanf_s("%d", &a[i]); paixu(a, 10); printf("排序后的整数依次是:n"); for (i = 0; i <=10; i++) //一共10个整数从小到大排序,所以这应该为 i<10;或者 i<=9; printf("%dt", a[i]); printf("n"); return 0; } void paixu(int a[], int n) //函数比大小 { int i, j, t; for (i = 0; i < n - 1; i++) for (j = i+1; j < n; j++) if (a[i] > a[j]) { t = a[i]; a[i] = a[j]; a[j] = t; } }
修改后的程序:
#include3.函数的嵌套int main() { void paixu(int a[], int n); int a[10],i; printf("请输入10个整数:n"); for (i = 0; i <= 9; i++) scanf_s("%d", &a[i]); paixu(a, 10); printf("排序后的整数依次是:n"); for (i = 0; i <= 9; i++) //或 for (i = 0; i <10;i++) printf("%dt", a[i]); printf("n"); return 0; } void paixu(int a[], int n) //函数比大小 { int i, j, t; for (i = 0; i < n - 1; i++) for (j = i+1; j < n; j++) if (a[i] > a[j]) { t = a[i]; a[i] = a[j]; a[j] = t; } }
例3
#include4.函数的递归int main() { int max4(int a, int b, int c,int d); int a,b,c,d,zuidashu; printf("请输入4个整数:n"); scanf_s("%d %d %d %d", &a,&b,&c,&d); zuidashu=max4(a,b,c,d); printf("最大数为%dn",zuidashu); return 0; } int max4(int a, int b, int c, int d) //函数的嵌套 { int max2(int a, int b); return(max2(max2(max2(a, b), c), d)); } int max2(int a, int b) //基本函数 { return(a > b ? a : b); }
例4
#includeint main() { int age(int n); printf("第5个学生的年龄%dn",age(5)); return 0; } int age(int n) { int nianling; if (n == 1) nianling = 10; else nianling = age(n - 1) + 2; return(nianling); }
练习
#includeint main() { int jiecheng(int n); //声明 n!函数 int n; printf("请输入一个整数:"); scanf_s("%d", &n); printf("%d!=%dn",n,jiecheng(n)); return 0; } int jiecheng(int n) //解释 n!函数 { int jieguo; if (n==0 ||n==1) jieguo = 1; else jieguo= jiecheng(n - 1) *n; //n!=(n-1)!*n; return(jieguo); }
运用函数递归的时候,要注意: 1.写清楚初始状态的值:n==0,n==1; 2.相邻之间的关系是什么:n!=(n-1)!*n;
n!中的n不能为负数
修改后的程序:
#includeint main() { int jiecheng(int n); int n; printf("请输入一个整数:"); scanf_s("%d", &n); printf("%d!=%dn",n,jiecheng(n)); return 0; } int jiecheng(int n) { int jieguo; if(n<0) //添加判断n<0,不符合条件 printf("n<0,数字输入得不对!"); else if (n==0 ||n==1) jieguo = 1; else jieguo= jiecheng(n - 1) *n; return(jieguo); }
以上是自己通过学习整理所得,大家有相关问题,可以留言,一起交流学习!
转载或者引用本文内容请注明来源及原作者
参考
《C语言》4小时不挂科【猴博士爱讲课】——第4~7课



