C语⾔----结构体---结构体与函数
结构作为参数的函数
1. 整个结构可以作为参数传⼊函数
2. 这时是在函数中新建了⼀个结构变量,并复制调⽤这个结构的值(重点,只是把值传⼊函数,⽽函数外⾯真正的变量并没有改变,与
数组不同)
3. 函数也可以返回⼀个结构
直接来个简单的例⼦吧:
问题:⽤户输⼊今天的⽇期,输出明天的⽇期。
提⽰:闰年,每个⽉最后⼀天,
代码:
#include <stdio.h>
#include <stdbool.h>
/* 根据今天的⽇期算出明天的⽇期。*/
//结构体放在函数外侧,相当于⼀个全局变量,所有的函数都能使⽤。
struct date
{
int month;
int day;
int year;
}; //记住这个分号
bool is_leap(struct date d); //判断是否为闰年
int numbersofdays(struct date d); //给出这个⽉的天数
int main(int argc, char const *argv[])
{
struct date today; //定义两个结构体变量
struct date tomorrow;
int days;
int flag=1; //实现输⼊控制
printf("请输⼊今天的⽇期(9-24-2012):");
scanf("%i-%i-%i",&h,&today.day,&ar);
days = numbersofdays(today);
tomorrow = today; //可以像⼀般变量⼀样赋值
if(today.day<days && h <=12){
tomorrow.day = today.day + 1;
}else if(today.day == days && h <12){
tomorrow.day = 1;
h +=1;
}else if(today.day == days && h == 12){
tomorrow.day =1;
h =1;
ar+=1;
}else{
flag = 0;
printf("输⼊有误!");
}
if(flag){
printf("明天的⽇期是:");
printf("%i-%i-%i\n",h,tomorrow.ar); }
return 0;
}
bool is_leap(struct date d)
怎么用printf输出bool函数值{
bool is = false;
if((d.year%4==0 && d.year%100!=0) || d.year%400==0)
is = true;
return is;
}
int numbersofdays(struct date d)
{
int days;
int dayspermonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
h==2 && is_leap(d))
{
days = 29;
}
else
{
days = h-1];
}
return days;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论