C语言:结构体成员能够做形参吗?

写一个函数days:计算该日在本年中是第几天?由主函数将年月日传递给函数,计算后将日子输出传回主函数输出悬赏分:0-离问题结束还有1天10小时下面的程序是我写的,但是有错... 写一个函数days:计算该日在本年中是第几天?由主函数将年月日传递给函数,计算后将日子输出传回主函数输出
悬赏分:0 - 离问题结束还有 1 天 10 小时
下面的程序是我写的,但是有错误,就是void days(int judge.year,int judge.month,int judge.day)/*这句有错误,结构体成员作形参怎样初始化啊?*/
大家帮我看看还有什么地方错了,谢谢。

struct student{int year,month,day;}judge;
/*计算日期位于该年的第几天*/
void days(int judge.year,int judge.month,int judge.day)
{
int i,num=0;
int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(judge.year%4==0)
{
for(i=1;i<judge.month;i++)
{
if(judge.month>2)
{
num++;
}
num+=monthday[i];
}
num+=judge.day;
}
else
{
for(i=1;i<judge.month;i++)
num+=monthday[i];
num+=judge.day;
}
printf("NO:%d",num);
}

main()
{
int a,b,c;
printf("请输入日期:");
scanf("%d %d %d",&a,&b,&c);
days(a,b,c);
展开
 我来答
yyjie999
推荐于2018-03-04 · TA获得超过199个赞
知道小有建树答主
回答量:197
采纳率:100%
帮助的人:181万
展开全部
这样写是不可以的。
应该这么声明:
void days(struct student * judget)
{
//省略
}

struct student s;
s.year = year;
s.month = month;
s.day = day;
days(&s);//这么使用

但是我不明白为什么结构体的名称是student啊,这个和学生没有关系,应该起个相关的名称,如time之类的,呵呵
freeeeeewind
推荐于2016-04-17 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1353万
展开全部

结构体可以作为函数的形参。例如

#include <stdio.h>

/* 定义Student 结构类型 */
typedef struct {
    char  *name;
    int   age;
} Student;

/* printStudent 函数的参数类型为 Student */
void printStudent(Student stu) {
    printf("Student's Name:%s; Student's Age:%d\n",
        stu.Name, stu.Age);
    return;
}    

void main() {
    /* 定义Student类型变量 s*/
    Student s;
    /* 赋初值 */
    s.Name = "ZhangSan";
    s.Age = 20;
    /*调用 printStudent函数,函数的参数为Student结构变量s*/
    prirntStudent(s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dd1865dc2e77
2015-08-20 · TA获得超过195个赞
知道答主
回答量:226
采纳率:0%
帮助的人:70.7万
展开全部
如果函数定义中需要使用某中聚集型数据类型中的多个元素,一般用此聚集型数据类型作形参(数组用指针,结构体可以用指针也可以用其本身)

如果函数定义中只需要使用某中聚集型数据类型中的某一个元素,一般用此元素的数据类型作形参
#include <iostream>
using namespace std;

struct Date
{
int year;
int month;
int day;
};

void ShowDate(Date &d)
{
cout<<"引用传参!"<<endl;
cout<<"年份:"<<d.year<<endl
<<"月份:"<<d.month<<endl
<<"天数:"<<d.day<<endl;
}

void ShowDate(Date *d)
{
cout<<"指针传参!"<<endl;
cout<<"年份:"<<d->year<<endl
<<"月份:"<<d->month<<endl
<<"天数:"<<d->day<<endl;
}

//个人觉得,形参就是体现实参的类型和个数而已。
//如果要数组元素做形参,直接定义个和数组元素
//同类型的形参不就行了吗?不是很明白这句话。
void ShowDate(int year,int month,int day)
{
cout<<"结构体成员传参!"<<endl;
cout<<"年份:"<<year<<endl
<<"月份:"<<month<<endl
<<"天数:"<<day<<endl;
}

int main()
{
Date date={2013,11,18};
ShowDate(date);
ShowDate(&date);
ShowDate(date.year,date.month,date.day);
return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式