c语言程序实验————实验报告十三
- 实验项目名称: 实验报告十三 结构体运用程序设计
- 实验项目类型:验证性
- 实验日期:2024 年 5 月 30 日
一、实验目的
1.掌握结构体类型变量的定义和使用
2.掌握结构体类型数组的概念和应用
3.掌握结构体类型指针的概念和应用
4.掌握共用体的概念和使用
二、实验硬、软件环境
Windows计算机、Dev c 6.0
实验内容:
1.编写一个C程序,定义一个有关日期的结构体类型变量(包括年、月、日),要求从
键盘为该变量中的各成员输入数据,然后再将输入的日期显示输出。
2.有4名学生,每个学生包括学号、姓名、成绩、编写一个C程序,要求按学生成绩
由高到低进行排序。
3.对候选人得票的统计程序,每次输入一个得票候选人的名字,最后输出每个候选人的
得票结果。
三、实验步骤:
项目一
解题思路
输入时间的结构struct dat,输入成员int month;int day;int year;输入赋值dat1={6,6,2024};printf输出月,日,年,dat1.month,dat1.day,dat1.year。
核心代码
#include<stdio.h>
int main()
{
struct dat
{
int month;
int day;
int year;
} dat1={6,6,2024};
printf("月:%d,日:%d,年:%d\n",dat1.month,dat1.day,dat1.year);
printf("31韩翔-项目1");
}
实验截图
项目二
解题思路
输入学生体结构struct student,输入成员 int num; 学号 char name[20]; 姓名 float score; 成绩,输入主函数,定义结构体变量且赋值struct student stu[5]={{10010,"Tom",78},{10011,"Jon",98.5},{10012,"Lisi",100},{10013,"zhangsan",99},{10014,"wangwu",10}};struct student t;定义整型变量 int i,j,k; for函数定义(i=0;i<4;i++)外层循环,把i的值赋给k,k=i;for函数定义(j=i+1;j<5;j++)//内层f循环, if函数定义(stu[j].score>stu[k].score)挑出分数高的,k=j;把相应的j赋值给k, t=stu[k]; stu[k]=stu[i];stu[i]=t;把成绩高的放到前面,for函数定义(i=0;i<5;i++)循环输出5个人的成绩, printf输出结果stu[i].num,stu[i].name,stu[i].score。
核心代码
#include<stdio.h>
struct student
{
int num;
char name[20];
float score;
} ;
int main()
{
struct student stu[5]={{10010,"Tom",78},{10011,"Jon",98.5},{10012,"Lisi",100},{10014,"wangwu",10}};
struct student t;
int i,j,k;
printf("成绩由大到小排序:\n");
for(i=0;i<3;i++)
{
k=i;
for(j=i+1;j<4;j++)
{
if(stu[j].score>stu[k].score)
{
k=j;
}
}
t=stu[k];
stu[k]=stu[i];
stu[i]=t;
}
for(i=0;i<4;i++)
{
printf("%d,%10s,%6.2f分\n",stu[i].num,stu[i].name,stu[i].score);
}
printf("31韩翔-项目2");
}
实验截图
项目三
解题思路
输入头函数#include<string.h>,输入struct person结构体,输入成员char name[20];int count;输入赋值leader[3]={"li",0,"zhang",0,"fun",0};输入主函数int声明整型变量i,j;char声明数组leader_name[20];for函数定义(i=1;i<=10;i++)循环,scanf调用leader_name,for定义(j=0;j<3;j++)循环,if函数定义(strcmp(leader_name,leader[j].name)0),输入leader[j].count++;for定义(j=0;j<3;j++)循环,printf输出leader[j].name,leader[j].count)。
核心代码
#include<string.h>
#include<stdio.h>
struct person
{
char name[20];
int count;
}leader[3]={"li",0,"zhang",0,"fun",0};
int main()
{int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)0)
leader[j].count++;
}
printf("\n");
for(j=0;j<3;j++)
printf("%5s:%d\n",leader[j].name,leader[j].count);
printf("31韩翔-项目3");
}
实验截图
实验结果及分析
在项目1中,少输入了一个花括号 } 导致运行不了,后改正
在项目2中,scanf处没加分号,后改正
在项目3中,printf处少加一个%,后改正