实验目的及要求: 熟悉利用结构体类型自定义变量的方法; 使用sizeof关键字计算各种数据类型宽度; 熟练运用动态分配内存函数malloc和free等; 熟悉利用C语言操作单链表的基本方法; |
||||||||||
实验内容: 实验题1:利用结构体类型定义变量 目的:熟悉利用结构体类型自定义变量的方法 内容:定义结构体s1,其中可以存放一个学生的数据,该数据由学号、姓名(姓名长度不超过15个英文字符)、年龄、5科成绩构成。共占64个字节,其中学号占4个字节,姓名占16个字节,年龄占4个字节,每科成绩占8个字节。class1是结构体数组,表示一个班,可以存放50个学生的情况。要完成对结构体中各分量的调用(输入、输出)。 实验题2:使用sizeof关键字计算各种数据类型宽度 目的:熟悉sizeof的使用方法 内容:编写一个程序,直接在主函数中测试整形、字符型、等C语言中基本数据类型宽度,并测量实验1中所定义的结构体类型变量所占字节数。 实验题3:动态分配内存相关函数的调用 目的:熟练运用动态分配内存函数malloc和free 内容:针对各种数据类型,调用在主函数内利用malloc动态分配内 存,在程序结束前利用free释放空间。 实验题4:利用结构体类型构造简单链表 目的:预习第二章将要学习的链表相关结构,熟悉利用C语言操作单链表的基本方法 内容:调试第一章课后习题9,图示出程序所表示链表,标出head变量的内容及其地址,以及表达式head->next->next的内容及其表示的内存地址。 |
||||||||||
实验步骤与程序: 实验题1: #include<stdio.h> //实验一利用结构体类型定义变量 struct student { char name[10]; //名字 int id; //学号 int age; //年龄 float yu_wen; //语文成绩 float shu_xue; //数学成绩 float ying_yu;//英语成绩 float shu_xue_fen_xi; //数学分析成绩 float shu_ju_jie_gou ;//数据结构成绩 }; student s1; int main() { struct student s1[100]; int i,n; printf("你想录入几个学生的信息呢?\n"); scanf("%d",&n); printf("收到!\n"); for (i = 0; i < n; i++) { printf("请输入学生基本信息:\n姓名:"); scanf("%s", &s1[i].name, 50); printf("学号:"); scanf("%d", &s1[i].id); printf("年龄:"); scanf("%d", &s1[i].age); printf("语文成绩:"); scanf("%f", &s1[i]. yu_wen); printf("数学成绩:"); scanf("%f", &s1[i].shu_xue); printf("英语成绩:"); scanf("%f", &s1[i].ying_yu); printf("数学分析成绩:"); scanf("%f", &s1[i].shu_xue_fen_xi); printf("数据结构成绩:"); scanf("%f", &s1[i].shu_ju_jie_gou); printf("该学生信息录入成功\n"); } printf("信息如下:\n"); for (i = 0; i < n; i++) {printf("学号:%d 姓名:%s 年龄:%d\n 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 数学分析成绩:%.2f 成绩:%.2f \n", s1[i].id, s1[i].name, s1[i].age, s1[i].yu_wen,s1[i].shu_xue,s1[i].ying_yu,s1[i].shu_xue_fen_xi,s1[i].shu_ju_jie_gou);} } |
||||||||||
实验题2: #include<stdio.h> //实验一利用结构体类型定义变量 struct student { char name[10]; //名字 int id; //学号 int age; //年龄 float yu_wen; //语文成绩 float shu_xue; //数学成绩 float ying_yu;//英语成绩 float shu_xue_fen_xi; //数学分析成绩 float shu_ju_jie_gou ;//数据结构成绩 }; student s1; int main() { struct student s1[100]; int i,n; printf("你想录入几个学生的信息呢?\n"); scanf("%d",&n); printf("收到!\n"); for (i = 0; i < n; i++) { printf("请输入学生基本信息:\n姓名:"); scanf("%s", &s1[i].name, 50); printf("学号:"); scanf("%d", &s1[i].id); printf("年龄:"); scanf("%d", &s1[i].age); printf("语文成绩:"); scanf("%f", &s1[i]. yu_wen); printf("数学成绩:"); scanf("%f", &s1[i].shu_xue); printf("英语成绩:"); scanf("%f", &s1[i].ying_yu); printf("数学分析成绩:"); scanf("%f", &s1[i].shu_xue_fen_xi); printf("数据结构成绩:"); scanf("%f", &s1[i].shu_ju_jie_gou); printf("该学生信息录入成功\n"); } printf("信息如下:\n"); for (i = 0; i < n; i++) { printf("学号:%d 姓名:%s 年龄:%d\n 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 数学分析成绩:%.2f 成绩:%.2f \n", s1[i].id, s1[i].name, s1[i].age, s1[i].yu_wen,s1[i].shu_xue,s1[i].ying_yu,s1[i].shu_xue_fen_xi,s1[i].shu_ju_jie_gou); } printf("student 结构体类型所占内存空间的大小:%d\n", sizeof(student)); } |
||||||||||
实验题3: #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct s1 {int buf[50]; int size; }s; void func1(s* p) { p = (s*)malloc(sizeof(s)); p->size = 10; return; } s* func2(void) { s* p; p = (s*)malloc(sizeof(s)); p->size = 10; return p; } void func3(s** p) { *p = (s*)malloc(sizeof(s)); (*p)->size = 10; return; } int main(int argc, const char * argv[]) { s *p1 = NULL; s *p2 = NULL; s *p3 = NULL; func1(p1); p2 = func2(); func3(&p3); if (p1 == NULL) { printf("p1=NULL\n");} else {printf("p1->size:%d\n", p1->size);} if (p2 == NULL) {printf("p2=NULL\n");} else {printf("p2->size:%d\n", p2->size);} if (p3 == NULL) {printf("p3=NULL\n");} else {printf("p3->size:%d\n", p3->size);} return 0;} void func_free(s* p) { free(p); return; } |
||||||||||
实验4: #include <iostream> using namespace std; struct Node{ Node(int data) :data(data), next(NULL) {} int data; Node *next; }; int main() { Node *head = new Node(1); head->next = new Node(2); head->next->next = new Node(3); head->next->next->next = new Node(4); Node *p = head; while (p!=NULL) { cout << p->data << "->"; p = p->next; } cout<< endl; system("pause"); return 0; } |
||||||||||
运行结果: 实验题1: 实验题2: 实验题3: 实验题4: |
||||||||||
结果分析与讨论:
|
c语言/c++(数据结构篇) 之 C语言要点回顾实例(1/7)
猜你喜欢
转载自blog.csdn.net/qq_59819866/article/details/131450512
今日推荐
周排行