结构体练习题
2016-07-17 20:40
375 查看
----------------结构体指针变量-------------
声明:结构体类型名 *结构体指针变量名( Student *pstu; )
访问形式:
-(*结构体指针变量).成员名 ( (*pstu).num; )
-结构体指针变量->成员名 ( pstu->num )
1.学生信息
结构体指针作为参数
闰年
-------------------第一题-------------------
定义一个结构体(包括年、月、日等成员变量)并初始化。然后计算该日在本年中是第几天?注意闰年问题。
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;
}
随堂笔记为个人学习笔记,若有错误,望指出,谢谢!!
声明:结构体类型名 *结构体指针变量名( 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 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言二进制思想以及数据的存储
- C语言中计算正弦的相关函数总结