文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言中结构体和共用体实例教程

2024-04-02 19:55

关注

一、实验目的

二、实验内容

编写下列程序,然后上机调试运行。

  1. 对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
  2. 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。
  3. 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(选作)

三、实验记录

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 5
struct 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;
		else
			pt->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;
	}
	else
		pt=pt->next;
	while(pt!=NULL)
	{
		if(pt->age==iage)
		{
			p->next=pt->next;
			find=1;
		}
		else
			p=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语言中结构体和共用体的文章就介绍到这了,更多相关C语言结构体和共用体内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯