结构体(作业)

2026/4/24 19:41:35

专业 序号 姓名 日期

12级信息管理1班 7

苏炎江 唐彩铃 王涵 王潼业 2014/3/2

实验1 结构体

【实验目的】

复习C语言结构体和一些函数的用法

【实验内容】

1. 请举例说明malloc函数和realloc函数的用法 (1)、动态分配内存空间函数malloc 例如:

p=(char*)malloc(100) 表示给p分配100个字节的存储空间 (2)、重新分配内存空间函数realloc 定义:

realloc函数将p指向的对象的长度修改为size个字节. 如果新分配的内存比原来的大,则原来的数据保持不变.增加的空间不进行初始化.如果新分配的内存比原来的内存小,则新的内存空间不被初始化.realloc函数返回指向新分配空间的指针.若无法满足要求则返回NULL 指针.在这种情况下.原指针p指向的单元内容保持不变. 例如:

p =(char*)malloc(100); p=(char*)realloc(200);

2. 对下列程序每行进行注释,并修改程序运行结果和分析相应的时间复杂度,并改写该函

数的输入输出函数

要求:请输入10个以上同学的成绩并计算

#include struct student {int num;

char name[30]; char sex;

float Chinese; float Math; float English;

}stu[4]={{2007480001,\{2007480002,\{2007480003,\void main() {

printf(\全班最好成绩*********\\n\\n\

if ((stu[1].Chinese+stu[1].Math+stu[1].English)>(stu[2].Chinese+stu[2].Math+stu[2].English)) stu[4]=stu[1]; else

stu[4]=stu[2];

if ((stu[0].Chinese+stu[0].Math+stu[0].English)>(stu[4].Chinese+stu[4].Math+stu[4].English))

printf(\第一名是 %s\ else

printf(\第一名是 %s\\n\\n\

printf(\及格情况*********\\n\\n\

int j,c=0,m=0,e=0;

for(int i=0;i<3;i++) { //补充语句 }

printf(\语文不及格的人数有%d个。\\n数学不及格的有%d个。\\n英语不及格的有%d个.\\n\\n\float k,q,p;

k=c/3.0f*100; q=m/3.0f*100; p=e/3.0f*100;

printf(\语文不及格的人数占%f%%。\\n数学不及格的占%f%%。\\n英语不及格的占%f%%.\\n\\n\

printf(\个人成绩数据*********\\n\\n\

printf(\姓名:%s 总分:%f 平均分:%f\\n\3.0);

printf(\姓名:%s 总分:%f 平均分:%f\\n\3.0);

printf(\姓名:%s 总分:%f 平均分:%f\\n\3.0);

}

【结果如下】:

#include #include #include using namespace std;

struct student //创建student类,存储学生信息 {

int num; //学生学号

char name[30]; //存储姓名 char sex; //存储性别

float Chinese; //存储语文成绩 float Math; //存储数学成绩 float English; //存储英语成绩

student (int nu,char *n,char s,float c,float m,float e) //内嵌构造函数 {

num = nu; //将nu的值赋值给num

strcpy(name,n); //复制语句,将字符串n复制给name sex = s; //将s的值赋值给sex Chinese = c; //将c的值赋值给Chinese Math = m; //将m的值赋值给Math English = e; //将e的值赋值给English }

~student() {}; //释放构造函数

void print() //成员函数,输出学生信息 {

cout<<\学号:\

cout<<\姓名:\ cout<<\总

分:\ cout<<\平均

分:\ } };

int main() {

student stu[10]={

student(2007480001,\ student(2007480002,\ student(2007480003,\ student(2007480004,\ student(2007480005,\ student(2007480006,\ student(2007480007,\ student(2007480008,\ student(2007480009,\ student(2007480010,\ }; //输入十个学生的信息,并存储在数组stu中 float max; //定义一个最大值,备用 int i,j=0; //定义j记录最大值的相关信息

max = stu[0].Chinese+stu[0].Math+stu[0].English; //定义一个最大值,备用 cout<<\学生成绩***********\ for (i=0; i<10; i++) {

stu[i].print(); //输出十个学生学号、姓名及各科成绩 if (stu[i].Chinese+stu[i].Math+stu[i].English>max) //判断大小,从而选取最大值 {

max=stu[i].Chinese+stu[i].Math+stu[i].English; //若成立,则把大值赋给max

j = i; //记录条件成立的i,输出需要 } }

cout<<\全班最好成绩*********\

cout<<\第一名是:\输出总分第一名的学生姓名 cout<<\及格情况***********\ int c1=0, m1=0, e1=0;

for (int k=0; k<10; k++) {

if (stu[k].Chinese<60)

c1++; //计算语文不及格人数 if (stu[k].Math<60)

m1++; //计算数学不及格人数 if (stu[k].English<60)

e1++; //计算英语不及格人数

}

cout<<\语文不及格的人数有\个。\ <<\数学不及格的有\个。\

<<\英语不及格的有\个。\ float q,w,r;

q=c1/10.0f*100; //计算语文不及格百分比 w=m1/10.0f*100; //计算数学不及格百分比 r=e1/10.0f*100; //计算英语不及格百分比 cout<<\语文不及格的人数占

\输出各科不及格百分比 <<\。数学不及格的占\ <<\。英语不及格的\。\

return 0; //函数返回值 }

【运行结果如下】:

【结果分析】:

首先说明一点,结构体有以下优点: 一、可以包含不同的数据类型

二、相同结构的结构体变量是可以相互赋值的 三、能够节省内存空间 四、运行结果高效率

基于结构体有以上四个结果,我们分析程序的有穷行、确定性和可行性:

有穷性:在实验的过程中我们多次使用for循环结构,循环的总次数为20次,在一定程度上做到了最少,因此程序在有穷性的原则上还是可以的;

确定性:程序的运行结果中,我们可以得到一个最终值,并且是唯一的,因此该程序同样满足确定性原则;

可行性:程序在满足有穷性和确定性的基础上,本来其在一定的条件下可行性是满足的,但是如果考虑到输入人数的不确定,这时则需要修改输入程序及相关参数,因此本程序存在局

限性,不能很好的推广运用。


结构体(作业).doc 将本文的Word文档下载到电脑
搜索更多关于: 结构体(作业) 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219