实验十结构体程序设计(一)
一.实验目的
1.掌握结构体的基本概念与定义方法;
2.掌握结构体的程序设计。
二.实验环境
1.硬件:PII以上计算机;
2.软件:Windows、Visual C++ 6.0;
3.其它:一张软盘或者U盘等可移动的存储设备。
三.实验内容
练习1.编写一个程序,功能如下:
⑴输入若干人员的姓名及电话号码(8位),以字符“#”结束输入;
⑵当输入姓名时,能查找出该人的电话号码(如果没有此人,则显示未找到该记录)。
运行结果示例:
练习2.编写一个程序,功能为读入一组正整数(以-1作为结束标志),将它们存储在一个动态链表中。再读入一个数m,在链表中搜索值为m的结点,输出从该结点开始直至链表结束的所有数据。此功能为可重复多次的,直至用户输入'N'结束程序。要求:程序包含2个子函数,各函数要求如下:
l子函数1:功能为创建包括n个结点的链表并读入数据;
形式为:struct LNode *creat(void);
l子函数2:功能为输出链表中的从m值开始的所有结点;
形式为:void print(struct LNode *head,int m);
提示:程序可根据需要设置一个全程变量n,用于计结点个数;
运行结果示例:
练习3.有4个学生,每个学生的数据包括学号、姓名、三门课的成绩,要求:
⑴从键盘输入4个学生的数据;
⑵求出每门课的平均成绩;
⑶求出每个学生的平均成绩。
运行结果示例:
程序主框架:
#include"iostream.h"
#include"string.h"
#define N 4
structstudent
{
int num;
char name[20];
int score[3];
};
voidinput(struct student stu[])
{
}
voiddanke(struct student *p)
{
}
voideveryone(struct student *p)
{
}
void main()
{
struct student stu[N];
input(stu);
danke(stu);
everyone(stu);
}
练习一:
#include"iostream.h"
#include"stdio.h"
#include"string.h"
void main()
{
structperson
{charname[20];
char num[8];
}person[80];
inti=0;
chars[20];
printf("输入姓名及电话号码(以#结束):\n");
cin>>person[i].name>>person[i].num;
for(i=1;strcmp(person[i-1].name,"#")!=0;i++)
cin>>person[i].name>>person[i].num;
printf("输入要查找电话人的姓名:");
cin>>s;
for(i=0;strcmp(person[i].name,"#")!=0;i++)
if(strcmp(person[i].name,s)==0)break;
if(strcmp(person[i].name,s)==0)
printf("电话号码:%s",person[i].num);
elseprintf("未找到该记录。\n");
}
练习1:
#include
#include
#include
#define N 100
struct person
{char name[20];
char number[10]; 要比输入的电话号码多1,因为要有\0,否则将无法正常断行
}per[N];
void main()
{
chard[20],e[]="#";
intn=0,i;
printf("输入姓名及电话号码(以#结束):\n");
for(i=0;i
{
cin>>per[i].name;
if(strcmp(e,per[i].name))
{
cin>>per[i].number;
n++;
}
elsebreak;
}
printf("输入要查找电话人的姓名:");
cin>>d;
for(i=0;i
{
if(strcmp(d,per[i].name)==0)
{cout
break;}
}
}