1.递归函数 函数体内调用和函数相同的另一个函数
课上练习:
1)计算:s=5!
long value (int x)
{
if(x <
2){
return
1;
}
return x * value(x -
1);
}//递归函数
2).return 类似于break,没有返回值return 结束
void printNum(int x){
if (x < 1)
{
return;
}
printNum(x - 1);//
printf("%d\n",x);
printf("%d\n",x);//顺序
printNum(x - 1);//逆序
}
3).10进制转换2进制
void er(int x){
int n = 0;
n = x
% 2;
x /= 2;
if (x > 0)
{
er(x);
}
printf("%d",n);
}
2.结构体 (是一种类型)
结构体也是构造类型.比数组更灵活,可以放基本数据类型 数组 结构体.
定义:
struct 结构体名
{
类型 成员名;
类型 成员名;
........
};//分号不可少
3.内存占用:结构体所占的空间可以简单的认为是各个成员所占内存空间之和,实际是最大成员变量所占空间的最小整数倍.
字符型数据较特殊 挨着的前面有剩余内存的也用 其它的如果不是正好的不能用
4.typedef 原类型 新类型//类型重定义
1)struct person{
int age;
char
name[20];
char sex;
};
typedef struct person Person;
2)typedef truct person{
int age;
char name[20];
char sex;
}Person;
5.结构体成员调用
per1.age = 99;
strcpy(per1.name,
"longdd");
printPerson(per1);
Person
per3 = per2;
Person min = per1.age < per2.age ? per1 : per2
;
min = min.age < per3.age ? min : per3 ;
6.结构体嵌套 成员的访问
typedef struct myorigin{
float x;
float y;
}MyOrigin;
typedef struct size{
float
width;
float height;
}MySize;
typedef struct
myrect{
MyOrigin origin;
MySize
size;
}MyRect;
int main(int argc, const char * argv[])
{
MyRect rect = {{3,5},{100,100}};
rect.origin.x = 15;
rect.size.width =
150;
return 0;
}
7.结构体数组
struct person{
int age;
char
name[20];
char sex;
};//分号不能少!
typedef struct person
Person;//类型重新定义struct person为Person
void printPerson(Person
per){
printf("%d\n%s\n%c\n",per.age,per.name,per.sex);
}
int main(int argc, const char * argv[])
{
Person per1 =
{26,"ZhaoYunlong",‘f‘};
Person per2 =
{23,"ShenQingjun",‘m‘};
Person per3 =
{26,"LiuChundong",‘f‘};
Person per4 =
{26,"LiXiaolong",‘m‘};
Person per5 =
{29,"YangKun",‘m‘};
Person per[5] =
{{26,"ZhaoYunlong",‘f‘},per2,per3,per4,per5};
Person
maxAge = {0};
for (int i = 0; i < 5; i++)
{
if (maxAge.age < per[i].age)
{
maxAge =
per[i];
}
}
printPerson(maxAge);
for (int i = 0; i < 5 - 1; i++)
{
for (int j = 0; j < 5 - i -
1; j++) {
if (per[j].age < per[j + 1].age)
{
Person temp =
per[j];
per[j] = per[j +
1];
per[j + 1] =
temp;
}
}
}
for (int i = 0; i < 5; i++)
{
printPerson(per[i]);
}
return 0;
}
作业:
1、定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
2、模拟n个人参加选举的过程,四个候选人A、B、C、D。若选举某人直接输入其编号,最后按获得票数从高到低排序并输出候选人编号和票数。
3、某班5个学生,3门课,编写3个函数实现以下功能:
(1)求各门课的平均分
(2)找出三门都不及格的学生,输出其全部信息
(3)找出3门课平均分在80-90之间的学生,输出其信息。
原文:http://www.cnblogs.com/lxllanou/p/3593727.html