c语言 实验八 指针与结构体,C语言 实验八 结构体和共用体实验.doc

信息工程 学院 通信 专业 2 班 成绩评定_______

学号 ******** 姓名 *** (合作者____号____)教师签名_____

预习情况

操作情况

考勤情况

数据处理情况

实验 八 题目 结构体和共用体实验 第21周 星期一第6~7节

一、实验目的与要求

1、掌握结构体类型的概念和定义方法以及结构体变量的定义和应用。2、掌握指向结构体变量的指针变量的概念和应用,特别是链表的概念和应用。3、掌握运算符“.”和“->”的应用。

4、掌握共同体的概念和应用。

二、实验内容和步骤

1、程序功能:

输入具体的年、月、日,输出该日期是这一年的第几天。请将空白处填补好。

#include

static int day_tab[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,

0,31,29,31,30,31,30,31,31,30,31,30,31};

struct date{

int day;int month;int year;int yearday;char mon_name[5];

};

day_of_year(struct date *p ){

int i,day,leap;

leap=!(p->year %4!=0);

day=p->day;

for(i=1;imonth;i++)

day+=day_tab[leap][i];

p->yearday=day;

return 0;

}

struct date w;

void main(){

printf("input year_month_day please:\n");

scanf("%4d%2d%2d",&w.year,&w.month,&w.day);

day_of_year(&w);

printf("the yearday is:%d\n",w.yearday);

}

3、下面的程序旨在建立一条单项链表(a1-a2-...-an),然后将此链表逆置成(an-a(n-1)-...-a2-a1)。

程序代码:

#include

#include

reverse(struct node *p);

struct node{

int num;

struct node *next;

}*head;

int a[10]={1,2,3,4,5,6,7,8,9,10};

void main(){

int i;

struct node *p;

head=(struct node*)malloc(sizeof(struct node));

if(head!=NULL){

p=head;

p->num=a[0];

}

else{

printf("\nmemory error?");

exit(1);

}

for(i=2;i<=10;i++){

p->next=(struct node*)malloc(sizeof(struct node));

if(p->next!=NULL){

p= p->next;

p->num=a[i-1];

p->next=NULL;

}

else break;

}

reverse(head);

}

reverse(struct node *p)

{ struct node *ptr1,*ptr2;

ptr1=p->next;

while(ptr1->next!=NULL){

ptr2= ptr1->next;

ptr1->next=p;

p=ptr1 ;

ptr1=ptr2;

}

ptr1->next=p;

head->next=NULL;

head=ptr1;

}

三、比较数组、结构体和共同体之间的联系和区别:

都是数据结构,不过数组只能存放同样类型的数据,而结构体则能够存放不同类型的数据,结构体里面也可以有结构体。

共同体与结构体的定义形式相似。但它们的含义是不同的。共同体变量所占的内存长度等于最长的成员的长度。

共同体类型可以出现在结构体类型定义中,也可以定义共同体数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
指针是一个未指向任何有效内存地址的指针。在C语言中,可以使用NULL常量来表示空指针。当一个指针被赋值为NULL时,它就成为了一个空指针。空指针通常用于表示指针不指向任何有效的对象或内存空间。引用中的代码示例中,使用了一个条件判断`if(!p)`来确保结构体指针不为空指针结构体是一种用户自定义的数据类型,可以将不同类型的数据组合在一起以形成一个结构。结构体可以包含多个成员变量,每个成员变量可以是不同的数据类型,比如整型、字符型、浮点型等。通过结构体能够更好地组织和管理相关的数据。 在C语言中,可以通过定义结构体变量和结构体指针来使用结构体结构体变量是直接存储结构体的实例,而结构体指针则存储了结构体实例的内存地址。引用中的代码示例展示了如何定义和使用结构体以及使用结构体指针修改结构体变量的值。 需要注意的是,在使用结构体指针时,需要确保指针不为空指针,以避免发生错误。可以通过条件判断来判断指针是否为空,如`if(!p)`。 总结来说,C语言的空指针结构体是两个不同的概念。空指针是指向空地址的指针,用于表示指针不指向任何有效的对象或内存空间。而结构体是一种用户自定义的数据类型,用于组合不同类型的数据。结构体可以通过结构体变量和结构体指针来使用,并通过指针来修改结构体变量的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C语言指针结构体详述](https://blog.csdn.net/weixin_44969353/article/details/126185425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C语言结构体指针结构体变量作形参的区别](https://blog.csdn.net/qq_42759112/article/details/119275822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值