C语言中结构体和共用体的示例分析
这篇文章给大家分享的是有关C语言中结构体和共用体的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、实验目的
掌握结构体类型变量的定义和使用;
掌握结构体类型数组的概念和应用;
掌握链表的概念,初步学会对链表进行操作;
掌握共用体的概念与使用;
掌握指向结构体变量的指针。
掌握指向结构体数组的指针的应用。
二、实验内容
编写下列程序,然后上机调试运行。
对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。
建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(选作)
三、实验记录
3.1 候选人选票统计
(1)源代码
# include <stdio.h>typedef struct node{char name;int cnt;}candt;int main(void){candt A,B,C;char vote;A.name='A',A.cnt=0;B.name='B',B.cnt=0;C.name='C',C.cnt=0;while(vote!='#'){printf("Please enter the candidate:\n");scanf("%c",&vote);getchar();switch(vote){case 'A':A.cnt++;break;case 'B':B.cnt++;break;case 'C':C.cnt++;break;default:printf("Input error!\n");}}printf("A'note:%d\n",A.cnt);printf("B'note:%d\n",B.cnt);printf("C'note:%d\n",C.cnt);return 0;}
(2)运行结果截图
3.2 print函数
(一)源代码
# include <stdio.h># define N 5struct student{char num[6];char name[10];int score[4];}stu[N];void print(struct student stu[6]);int main(void){int i,j;for(i=0;i<N;i++){printf("\nInput data of student:\n");printf("NO.: ");scanf("%s",stu[i].num);printf("name: ");scanf("%s",stu[i].name);for(j=0;j<3;j++){printf("score %d:",j+1);scanf("%d",&stu[i].score[j]);}}print(stu);return 0;}void print(struct student stu[6]){int i,j;printf(" NO. name score1 score2 score3\n");for(i=0;i<N;i++){printf("%5s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%9d",stu[i].score[j]);printf("\n");}}
(2)运行结果截图
3.3 链表
(1)源代码
# include <stdio.h># include <malloc.h>//定义了一个链表节点的数据类型struct student{char num[10];char name[6];char sex[2];int age;//数据域struct student *next; //指针域}stu[10];int main(void){struct student *p,*pt,*head;int i,length,iage,flag=1;int find=0;while(flag==1){printf("Please enter the length of the list(<10):");scanf("%d",&length);if(length<10)flag=0;}//建立链表for(i=0;i<length;i++){p=(struct student *)malloc(sizeof(struct student));if(i==0)head=pt=p;elsept->next=p;pt=p;printf("NO.:");scanf("%s",&p->num);printf("name:");scanf("%s",&p->name);printf("sex:");scanf("%s",&p->sex);printf("age:");scanf("%d",&p->age);}p->next=NULL;p=head;printf("\nNO. name sex age\n");while(p!=NULL){printf("%4s%8s%6s%6d\n",p->num,p->name,p->sex,p->age);p=p->next;}//删除结点printf("Input age:");scanf("%d",&iage);pt=head;p=pt;if(pt->age==iage){p=pt->next;head=pt=p;find=1;}elsept=pt->next;while(pt!=NULL){if(pt->age==iage){p->next=pt->next;find=1;}elsep=pt;pt=pt->next;}if(!find)printf("Not found%d.\n",iage);p=head;printf("\nNO. name sex age\n");while(p!=NULL){printf("%4s%8s",p->num,p->name);printf("%6s%6d\n",p->sex,p->age);p=p->next;}return 0;}
(2)运行结果截图
感谢各位的阅读!关于“C语言中结构体和共用体的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341