----------------结构体指针变量-------------
声明:结构体类型名 *结构体指针变量名( Student *pstu; )
访问形式:
-(*结构体指针变量).成员名 ( (*pstu).num; )
-结构体指针变量->成员名 ( pstu->num )
1.学生信息
typedef struct {
int num;
char *name;
char sex;
double score;
}student;
void func1(){
student stu;//声明学生变量类型
student *pstu=&stu;//声明结构体指针指向stu变量
pstu->name ="wangw";//使用结构体指针操作结构体成员
stu.num=10;
stu.sex='m';
stu.score=90;
printf("%d,%s,%c,%.2f\n",(*pstu).num,pstu->name,pstu->sex,pstu->score);
}
int main(int argc, const char * argv[]) {
func1();
printf("--------------------------\n");
return 0;
}
2.求已知两个复数的和
。
<span style="color:#000000;">//整个结构体作为参数
typedef struct{
int real;
int xu;
} complex;
void func2();
complex addCom(complex n1,complex n2);
void func2(){
complex num1={10,3},num2={5,4};
complex reslt=addCom(num1,num2);
printf("运算结果:%d+%di\n",reslt.real,reslt.xu);
}
complex addCom(complex n1,complex n2){
complex result;
result.real=n1.real+n2.real;
result.xu=n1.xu+n2.xu;
return result;
}
<span style="font-size:18px;color:#FF0000;"><span style="color:#000000;"></span></span></span><pre name="code" class="plain">int main(int argc, const char * argv[]) {
func2();
printf("--------------------------\n");
return 0;
}
结构体指针作为参数
<span style="color:#000000;">typedef struct {
int num;
char *name;
char sex;
double score;
}student;
void func3(){
student stu={10,"a",'m',98};//声明结构体函数并赋值
student stu2={10,"b",'m',80};
double max=func3_1(stu.score,stu2.score); //调用func3_1,传入 值
printf("%.2f\n",max);
//student *pstu=&stu2; //定义结构体指针指向stu2
func3_2(&stu2); //调用func3_2,传入stu2结构体变量的地址
printf("%.1f\n",stu2.score);
}
double func3_1(double n1,double n2){ //传入参数值
return n1>n2?n1:n2;
}
void func3_2(student *ps){ //结构体指针作为参数,传入地址
ps->score=100;
}
<span style="font-size:18px;color:#FF0000;"></span></span><pre name="code" class="plain"><span style="color:#000000;"></span><pre name="code" class="plain">int main(int argc, const char * argv[]) {
func3();
printf("--------------------------\n");
return 0;
}
闰年
-------------------第一题-------------------
定义一个结构体(包括年、月、日等成员变量)并初始化。然后计算该日在本年中是第几天?注意闰年问题。
typedef struct{
int year; //年
int month; //月
int day; //日
}date;
int main(int argc, const char * argv[]) {
date d={2016,3,14};
int days=0;
switch (d.month-1) {
case 12:
days+=31;
case 11:
days+=30;
case 10:
days+=31;
case 9:
days+=30;
case 8:
days+=31;
case 7:
days+=31;
case 6:
days+=30;
case 5:
days+=31;
case 4:
days+=30;
case 3:
days+=31;
case 2: //判断是否为闰年
if ((d.year%4==0&&d.year%100!=0)||d.year%400==0) {
days+=29;
}else{
days+=28;
}
case 1:
days+=31;
}
days+=d.day;
printf("%d年%d月%d日是本年的第%d天\n",d.year,d.month,d.day,days);
printf("------------------------\n");
return 0;
}
----------------------------------------------------
----------------第二题-------------------------
2、编写函数days实现上一题目,由主函数将年、月、日传递给days函数,计算后结果返回主函数输出
typedef struct{
int year; //年
int month; //月
int day; //日
}date;
int func2(date *p);
int main(int argc, const char * argv[]) {
date da={2016,3,14};
int days=func2(&da);
printf("%d年%d月%d日是本年的第%d天\n",da.year,da.month,da.day,days);
printf("------------------------\n");
return 0;
}
int func2(date *p){
int days=0;
switch (p->month-1) {
case 12:
days+=31;
case 11:
days+=30;
case 10:
days+=31;
case 9:
days+=30;
case 8:
days+=31;
case 7:
days+=31;
case 6:
days+=30;
case 5:
days+=31;
case 4:
days+=30;
case 3:
days+=31;
case 2: //判断是否为闰年
if ((p->year%4==0&&p->year%100!=0)||(*p).year%400==0) {
days+=29;
}else{
days+=28;
}
case 1:
days+=31;
}
days+=(*p).day;
return days;
}
随堂笔记为个人学习笔记,若有错误,望指出,谢谢!!