-
函数的嵌套
#include <stdio.h> /* 四个数求最大值,函数嵌套 */ int thebigger(int data1,int data2) { int big; big = data1>data2?data1:data2; return big; } int thebiggest(int data1,int data2,int data3,int data4 ) { int max; max = thebigger(data1,data2); max = thebigger(max,data3); max = thebigger(max,data4); return max; } int main() { int data1; int data2; int data3; int data4; int max; puts("请输入4个数:"); scanf("%d%d%d%d",&data1,&data2,&data3,&data4); max = thebiggest(data1,data2,data3,data4); printf("最大数是%d",max); return 0; }
-
递归
#include <stdio.h> /* 五个学生,第5个比第4个大2岁,第4个比第3个大2岁, 第3个比第2个大2岁,第2个比第1个大2岁, 第一个10岁,求第5个学生的年龄。 */ int getAge(int num) { int age; if(num==1){ age = 10; }else{ age = getAge(num-1) + 2; } return age; } int main() { int age; int num; puts("你想知道第几个学生的年龄:"); scanf("%d",&num); age = getAge(num); printf("第%d个学生的年龄是:%d",num,age); return 0; }
-
阶乘
#include <stdio.h> /* 阶乘 */ int jiecheng(int num) { int ret; if(num==1){ ret=1; }else{ ret= num*jiecheng(num-1); } return ret; } int main() { int num; int result; puts("你想求几的阶乘:"); scanf("%d",&num); result = jiecheng(num); printf("%d的阶乘是%d\n",num,result); return 0; }
-
函数&数组
void printArray(int array[3]) { int i; for(i=0;i<3;i++){ printf("%d ",array[i]); } putchar('\n'); return 0; }
在这个打印数组的函数中,定义的形式参数为数组,但是形式参数中不存在数组的概念,即便[ ]中约定了数组的大小,也无效。实际上传递的是一个地址,是数组的首地址。(还未学习指针)
在OS中一般一个地址占8个字节,32位。
数组名代表数组的首地址,第一个元素的地址也代表数组的首地址。
-
班级平均分
#include <stdio.h> /* 一个班有五个学生,一个班有10个学生,求这两个班的平均分。 */ void initArray(int a,int class[],int len) { printf("请输入第%d班的成绩:\n",a); for(int i=0;i<len;i++){ printf("请输入第%d个学生的成绩:\n",i+1); scanf("%d",&class[i]); } puts("输入完毕!"); } void printArray(int class[],int len) { printf("%d班学生成绩为:"); for(int i = 0;i<len;i++){ printf("%d ",class[i]); } putchar('\n'); } float averScore(int class[],int len) { float averScore; int sum=0; for(int i=0;i<len;i++){ sum = sum + class[i]; } averScore = (float)sum/len; return averScore; } int main() { int classOne [5]; int classTwo [10]; int lenOne = sizeof(classOne)/sizeof(classOne[0]); int lenTwo = sizeof(classTwo)/sizeof(classTwo[0]); float averOne ; float averTwo ; initArray(1,classOne,lenOne); initArray(2,classTwo,lenTwo); printArray(classOne,lenOne); printArray(classTwo,lenTwo); averOne = averScore(classOne,lenOne); averTwo = averScore(classTwo,lenTwo); printf("1班平均分为:%.2f\n",averOne); printf("2班平均分为:%.2f\n",averTwo); return 0; }