//void test(){
// printf("hello!");
// test();
//}
//函数递归调用(允许函数体里再次调用函数本身)
//使用递归一定要有出口
long fact(int n){
if (n == 1) {
return n;
}
return n * fact(n - 1);
}
//定义一个新的数据类型
struct myPoint
{
float x;//结构体类型的成员变量
float y;
};
//结构体类型所占用的内存空间是最大数据类型的整数倍。因为结构体类型的变量在分配内存时有内存对齐
struct Student
{
char name[20];
char sex;
int age;
float score;
};
int main(int argc, const char * argv[]) {
// test();
long sum = fact(5);
printf("sum = %ld\n",sum);
//类型 变量名
struct myPoint p1 = {10.0,15.0};
p1.x = 12;
printf("x = %.1f,y = %.1f\n",p1.x,p1.y);
struct myPoint p2 = {10.0,34.0};
printf("x = %.1f,y = %.1f\n",p2.x,p2.y);
printf("%lu\n",sizeof(p1));
struct Student stu1 = {"xiaoming",'m',20,60};
printf("%s,%c,%d,%.1f",stu1.name,stu1.sex,stu1.age,stu1.score);
printf("\n");
struct Student stu2 = {"wangwu",'m',22,79};
struct Student stu3 = {"lisi",'f',21,98};
printf("%s,%c,%d,%.1f",stu2.name,stu2.sex,stu2.age,stu2.score);
printf("\n");
printf("%s,%c,%d,%.1f",stu3.name,stu3.sex,stu3.age,stu3.score);
printf("\n");
printf("%lu\n",sizeof(stu1));
// 数组不可以直接赋值,但是结构体类型的变量可以。
struct Student maxScoreStudent = stu1.score>stu2.score ? stu1 : stu2;
maxScoreStudent = maxScoreStudent . score > stu3 . score ? maxScoreStudent : stu3;
printf("%s,%c,%d,%.1f\n",maxScoreStudent.name,maxScoreStudent.sex,maxScoreStudent.age,maxScoreStudent.score);
return 0;
}