资源描述
一、实验目得
1.学会结构体类型变量得定义与使用方法。
2.能够运用结构体数组编写程序。
3.学会结构体指针得定义使用方法。
4.能够运用结构体指针作函数参数编写程序。
二、实验环境
(调试程序所使用得软硬件环境)
软件环境:VC++6、0
硬件环境:宏基 Intel 奔4 主频 2、8GHz,内存256MB
三、实验内容、结果及分析
1、题目1.建立一个有n(3<n≤10)个学生成绩得结构记录,包括学号、姓名与3门课程得成绩,输出总分最高得学生得姓名与总分。
源程序清单:(调试好得源程序代码)
#include "stdafx、h"
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
const int N=10;
struct rem
{
String num;
string name;
double mark[3];
double all;
};
int main ()
{
int n,i,mM应赋初值!
;
double max;
rem loq[N];
cout<<"请输入人数"<<endl;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"名同学得学号、姓名与第一二三门课程得成绩"<<endl;
cin>>loq[i]、num>>loq[i]、name
>>loq[i]、mark[0]
>>loq[i]、mark[1]
>>loq[i]、mark[2];
}
for(i=0;i<n;i++)
{
loq[i]、all=loq[i]、mark[0]+loq[i]、mark[1]+loq[i]、mark[2];
}
max=loq[0]、all;
for(i=0;i<n;i++)
{
if(loq[i]、all>max)
{
max=loq[i]、all;
m=i;
}
}
cout<<"总分最高得学生为"<<loq[m]、name
<<"总分为"<<loq[m]、all<<endl;
return 0;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型rem,包括学号(string类型)、姓名(string类型)、成绩(双精度型)、总成绩(双精度类型)
struct rem
{
String num;
string name;
double mark[3];
double all;
};
rem loq[N] 定义结构体类型rem变量loq
int n,i,m;定义三个整型变量n代表人数,i代表循环变量,m高成绩得学生成绩得角标
double max,双精度型,最大成绩;
实验结果:(程序运行结果)
实验中遇到得问题及解决得方法
M应付初值
2、题目
2.通讯录排序。建立一个通讯录得结构记录,包括姓名、生日、电话号码。输入n(n<10)个朋友得信息,再按她们得姓名从大到小得顺序依次输出其信息。
源程序清单:(调试好得源程序代码)
#include "stdafx、h"
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
const int N=15;
struct date
{
int year;
int month;
int day;
};
struct corre
{
string name;
date bir;
string tel;
};
int main ()
{
corre a[N];
int n,i,j;
string m;
cout<<"请输入人数"<<endl;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个人得姓名"<<endl;
cin>>a[i]、name;
cout<<"输入生日"<<endl;
cin>>a[i]、bir、year>>a[i]、bir、month>>a[i]、bir、day;
cout<<"请输入电话"<<endl;
cin>>a[i]、tel;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]、name<a[j+1]、name)
{
m=a[j]、name;
a[j]、name=a[j+1]、name;
a[j+1]、name=m;
}
}
}
cout<<"姓名"<<'\t'<<"生日"<<'\t'<<"电话"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]、name<<'\t'
<<a[i]、bir、year<<"/"<<a[i]、bir、month<<"/"<<a[i]、bir、day<<"/"<<'\t'
<<a[i]、tel<<endl;
}
return 0;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型date,包括年份(整型)、月份(整型)、天(整型)
struct date
{
int year;
int month;
int day;
};
声明结构体类型corre,包括姓名(string型)、生日(date结构类型型)、电话号码(string型)
struct corre
{
string name;
date bir;
string tel;
};
corre a[N]定义结构体corre类型数组a[]
int n,i,j;定义三个整型变量n为人数,i,j均为循环变量
string m;string型变量m用于交两个人得姓名
实验结果:(程序运行结果)
实验中遇到得问题及解决得方法
3、题目
3.编写程序,输入一个日期(年、月、日),计算并输出该日就是该年中得第几天。要求编写函数计算某日就是该年中得第几天,用结构指针作为函数参数,注意闰年问题。
源程序清单:(调试好得源程序代码)
#include "stdafx、h"
#include <iostream>
using namespace std;
struct nian
{
int year;
int month;
int day;
};
int find(nian *p);
int main ()
{
struct nian a={1,1,1};
nian *p=&a;
int n;
cout<<"请输入年份"<<endl;
cin>>a、year;
cout<<"请输入月份"<<endl;
cin>>a、month ;
cout<<"请输入第几日"<<endl;
cin>>a、day;
n=find(p);
cout<<"您输入得日期为"<<a、year <<"/"<<a、month<<"/"<<a、day<<endl;
cout<<"就是"<<a、year<<"年得第"<<n<<"天"<<endl;
return 0;
}
int find(nian *p)
{
int n=0,i,j,b[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,
0,31,29,31,30,31,30,31,31,30,31,30,31};
if((p->year%4==0&&p->year%100!=0)||p->year%400==0)
{
i=1;
}
else
i=0;
for(j=0;j<p->month;j++)
{
n=n+b[i][j];
}
n=n+p->day;
return n;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型nian,包括年(整型)、月份(整型)、天(整型)
struct nian
{
int year;
int month;
int day;
};
int find(nian *p);
定义一个函数,其参数为结构指针。用于算出输入得日期就是第多少天
struct nian a={1,1,1};定义结构nian类型得变量a
nian *p=&a;定义指针P并初始化指向a
int n;整型,天数
实验结果:(程序运行结果)
实验中遇到得问题及解决得方法
四、实验体会(心得、收获)
此次实验我们学习了如何运用结构体来解决一些问题。学会结构体类型变量得定义与使用方法。并且运用结构体数组来进行编程。注意结构体得嵌套使用。并且学会使用带结构指针得参数得函数。在定义变量时要注意附初值,在定义指针时要注意初始化。
展开阅读全文