您的位置:首页 > 编程语言 > C语言/C++

结构体练习题

2016-07-17 20:40 375 查看
----------------结构体指针变量-------------

声明:结构体类型名 *结构体指针变量名(     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;
}


随堂笔记为个人学习笔记,若有错误,望指出,谢谢!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言