好文档 - 专业文书写作范文服务资料分享网站

c语言第七次作业

天下 分享 时间: 加入收藏 我要投稿 点赞

第七次作业:结构体

1. 计算日期的差值

(1)编写一函数,计算两个日期之间的时间差,并将其值返回。 日期以年、月、日表示。 “时间差”以天数表示。

注意考虑日期之间的闰年。

函数的输入参数为日期1和日期2, 函数的返回值为时间差,单位为天数。

(2)编写一程序,在主函数中输入两个日期,调用上述函数计算两个日期之间的时间差,并将结果输出。

为了计算简便,假设用户输入的日期1总是早于日期2。

#include #include struct date

{int day;int month;int year;}date1,date2; int totaldays(struct date *p,struct date *q) { int years,total=0,i; int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31}; years=q->year-p->year; if(years==0) { if(p->month==q->month) total=q->day-p->day; else {for(i=p->month;imonth-1;i++) total+=monthday[i]; total+=monthday[p->month-1]-p->day+q->day;} if(((q->year)%4==0&&(q->year)0!=0)||(q->year)@0==0) if(p->month<=2||q->month>2) total++; } else if(years!=0) { for(i=p->month;i<12;i++)total+=monthday[i]; total+=monthday[p->month-1]-p->day; for(i=0;imonth-1;i++)total+=monthday[i]; total+=q->day; for(i=p->year+1;i<(q->year);i++) { total+=365; if((i%4==0&&i0!=0)||i@0==0)

total++; } if(((p->year%4==0&&p->year0!=0)||p->year@0==0)&&p->month<=2)total++; if(((q->year%4==0&&q->year0!=0)||q->year@0==0)&&q->month>2)total++; } return total; }

void main() { int days; printf(\ scanf(\ printf(\ scanf(\ days=totaldays(&date1,&date2); printf(\}

2. 结构体数组应用

请定义一个描述学生基本信息的结构,包括姓名,学号,籍贯,身份证号,年龄,家庭住址,性别,联系方式等。并定义一个结构体数组。编程:

a) 编写函数 input() , 输入基本信息(3~5条记录); b) 编写函数 print(),输出全体记录信息;

c) 编写函数 search(), 检索一个指定的学生信息并返回, 由主函数打印到屏幕上; d) 说明,访问结构的时候,什么时候应该用运算符“.”,什么时候应该用运算符“->”。 #include #include struct student

{char name[20];int num;char home[20];char IDnum[20];int age;char addr[50];char sex;char phone[20];}stu[10]; void input(struct student *p) {

scanf(\

um,&p->age,&p->addr,&p->sex,&p->phone); }

void print(struct student *p) {

printf(\

,p->age,p->addr,p->sex,p->phone); }

int search(struct student stu[],int n,char stu_name[20]) {

int i;

for(i=0;i

return n+1;

if(strcmp(stu_name,stu[i].name)==0){return i;break;} else continue;

}

void main() { }

int n,i; char a[20];

printf(\scanf(\

for(i=0;i

printf(\scanf(\i=search(stu,n,a); if(i

else if(i==n+1)printf(\

3. 一元多项式加法

编写一元多项式加法器,输入两个一元稀疏多项 式,然后对它们进行加法操作。 在具体实现上,要求用线性链表形式来存储一个多项式,每个链表的节点包括两个成员

变量,系数和指数(均为整数)。例如

A(x)?75?30x?95x8?50x9 , B(x)?80x?25x7?90x8

可以用下面的链表表示:

750301958509null801257908null

说明:

(1) 每个链表节点都是根据需要动态创建的;

(2) 程序采用多函数形式来实现,至少包括创建链表、打印链表、加法函数等。 (3) 多项式系数可正、可负;指数肯定是非负整数,且按照递增顺序排列 输入格式:第一行是一个整数M,表示第一个多项式的项数。

接下来有M行,每行有两个整数ci和ei,分别表示第i项的系数和指数。 再接下来是输入第二个多项式,方法同第一个多项式输入。

输出格式:输出两个多项式相加的结果。第一行是整数K,表示新多项式的项数。 接下来有K行,每一行为两个整数,分别代表系数和指数。

#include #include

#define LEN sizeof(struct poly) struct poly

{int c;int e;struct poly *next;}poly1[10],poly2[10]; void input(struct poly a[],int m) { for(int i=0;i

struct poly *linkcreate(struct poly a[],int m) { struct poly *head; struct poly *p1,*p2; p1=p2=(struct poly*)malloc(LEN); head=p1=&a[0]; for(int i=0;inext=p2;p1=p2;} p1->next=NULL; return(head);

c语言第七次作业

第七次作业:结构体1.计算日期的差值(1)编写一函数,计算两个日期之间的时间差,并将其值返回。日期以年、月、日表示。“时间差”以天数表示。注意考虑日期之间的闰年。函数的输入参数为日期1和日期2,函数的返回值为时间差,单位为天数。(
推荐度:
点击下载文档文档为doc格式
66eff7syht6vudb8cesq
领取福利

微信扫码领取福利

微信扫码分享