C语言结构体实验报告.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
C语言结构体实验报告 本实验报告主要围绕C语言结构体的概念、定义、使用和初始化等方面进行实验和实践。实验目的包括了解结构体的基本概念、掌握结构体类型的定义、结构体变量的定义和使用、掌握结构体变量的初始化等。 一、结构体的基本概念 结构体是一种复杂的数据类型,它可以由多个基本数据类型组成。结构体可以用来描述一个实体的多个属性,例如学生的姓名、学号、年龄、性别、成绩等。 二、结构体的定义 结构体的定义使用struct关键字,例如: ```c struct student { char name[20]; char num[20]; int age; char sex; int score; }; ``` 这定义了一个名为student的结构体,它包含五个成员变量:name、num、age、sex和score。 三、结构体变量的定义和初始化 结构体变量可以使用struct关键字定义,例如: ```c struct student stu1, stu2; ``` 这定义了两个名为stu1和stu2的结构体变量。 结构体变量可以在定义时进行初始化,例如: ```c struct stu { char name[20]; char num[20]; int age; char sex; int score; } a = { "Miao ", "01", 20, 'm', 90 }; ``` 这定义了一个名为a的结构体变量,并对其进行了初始化。 四、结构体变量的引用和赋值 结构体变量可以使用点运算符(.)来访问其成员变量,例如: ```c struct stu stu1, stu2; stu1.name = "zhang"; stu1.num = "01"; stu1.age = 20; stu1.sex = 'm'; stu1.score = 90; ``` 这对stu1的成员变量进行了赋值。 五、实验内容 1. 分析以下程序: ```c #include "stdio.h" #include "string.h" struct student { long num; char name[8]; float score; } stu1, stu2; main() { int i, j; stu1.num = 303111; strcpy(stu1.name, "zhang"); stu1.score = 88.5; stu2 = stu1; printf("%ld ,%s, %.2f", stu2.num, stu2.name, stu2.score); } ``` 这个程序定义了一个名为student的结构体,包含三个成员变量:num、name和score。然后,程序对stu1进行了初始化,并将其赋值给stu2。程序输出stu2的信息。 2. 找出以下程序的错误,并改正。 ```c #include<stdio.h> main() { struct student { int num; char name[10]; char sex; } stu, *p; student.name = 120; stu.name = "Lily "; scanf("%s", stu.name); scanf("%c", stu.sex); p = &stu.sex; p = stu.name; p = stu; } ``` 这个程序存在多个错误: * 结构体定义时忘记加分号。 * 结构体定义时只能跟一个结构体名。 * 应该是结构体变量名.成员名。 * scanf里面要加&。 改正后的程序: ```c #include<stdio.h> struct student { int num; char name[10]; char sex; } stu, *p; main() { stu.name = "Lily "; scanf("%s", &stu.name); scanf("%c", &stu.sex); p = &stu; printf("%s, %c", stu.name, stu.sex); } ``` 3. 程序设计 (1)定义一个结构体变量(包括年月日),计算该日是本年中的第几天?注意闰年问题。 ```c #include<stdio.h> struct data { int year; int month; int day; }; void main() { struct data date; printf("请输入年,月,日: "); scanf("%d,%d,%d", &date.year, &date.month, &date.day); int i, t = 0; int run[13] = {0, 31, 29, 31, 30, 31, 31, 31, 31, 30, 31, 30, 31}; int ping[13] = {0, 31, 28, 31, 30, 31, 31, 31, 31, 30, 31, 30, 31}; if ((date.year % 400 == 0) || (date.year % 100 != 0 && date.year % 4 == 0)) for (i = 0; i < date.month; i++) t = t + run[i]; else for (i = 0; i < date.month; i++) t = t + ping[i]; t = t + date.day; printf("%d", t); } ``` (2)写一个函数days,实现上面的计算,由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。 ```c #include<stdio.h> struct data { int year; int month; int day; }; int days(struct data date) { int i, t = 0; int run[13] = {0, 31, 29, 31, 30, 31, 31, 31, 31, 30, 31, 30, 31}; int ping[13] = {0, 31, 28, 31, 30, 31, 31, 31, 31, 30, 31, 30, 31}; if ((date.year % 400 == 0) || (date.year % 100 != 0 && date.year % 4 == 0)) for (i = 0; i < date.month; i++) t = t + run[i]; else for (i = 0; i < date.month; i++) t = t + ping[i]; t = t + date.day; return t; } int main() { struct data date; printf("请输入年,月,日: "); scanf("%d,%d,%d", &date.year, &date.month, &date.day); int result = days(date); printf("%d", result); return 0; } ```
- 粉丝: 18
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助