C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx

上传人:b****3 文档编号:1172458 上传时间:2022-10-18 格式:DOCX 页数:16 大小:19.42KB
下载 相关 举报
C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx_第1页
第1页 / 共16页
C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx_第2页
第2页 / 共16页
C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx_第3页
第3页 / 共16页
C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx_第4页
第4页 / 共16页
C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx

《C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx(16页珍藏版)》请在冰豆网上搜索。

C语言程序设计第3版何钦铭 颜 晖 第9章结构.docx

C语言程序设计第3版何钦铭颜晖第9章结构

第9章结构

【练习9-1】定义一个能够表示复数的结构类型,一个复数包括实数与虚数两个部分。

解答:

structcomplex{

floatreal;

floatimaginary;

};

【练习9-2】人的出生日期由年、月、日组成,请在例9-1中的通讯录结构中增加一个成员:

出生日期,用嵌套定义的方式重新定义该结构类型。

解答:

structdate{

intyear;

intmonth;

intday;

};

structstudent{

intnum;

charname[10];

structdatebirthday;

intcomputer,english,math;

doubleaverage;

};

【练习9-3】例9-1中,如果要计算的是三门课程的课程平均成绩,应该如何改写程序?

解答:

#include

structstudent{

intnum;

charname[10];

intcomputer,english,math;

doubleaverage;

};

intmain(void)

{

inti,n;

doublemath_sum,english_sum,computer_sum;

structstudents1;

printf("Inputn:

");

scanf("%d",&n);

printf("Inputthestudent'snumber,nameandcoursescores:

\n");

math_sum=english_sum=computer_sum=0;

for(i=1;i<=n;i++){

printf("No.%d:

",i);scanf("%d%s%d%d%d",&s1.num,s1.name,&s1.math,&s1.english,&puter);

math_sum+=s1.math;

english_sum+=s1.english;

computer_sum+=puter;

}

printf("math_ave:

%.2lf\nenglish_ave:

%.2lf\ncomputer_ave:

%.2lf\n",math_sum/n,english_sum/n,computer_sum/n);

return0;

}

【练习9-4】定义一个包含5名学生信息的结构数组,并对该结构数组的所有元素进行初始化。

解答:

structstudent{

intnum;

charname[10];

intcomputer,english,math;

};

structstudents[5]={{30101,"张一",69,75,84},{30132,"李二",80,85,90},{40231,"王三",71,91,74},{40754,"赵四",65,76,87},{50426,"刘五",81,92,73}};

【练习9-5】参考例9-2,输入并保存10个学生的成绩信息,分别输出平均成绩最高和最低的学生信息。

解答:

#include

structstudent{

intnum;

charname[10];

intcomputer,english,math;

doubleaverage;

};

intmain(void)

{

inti,n,max,min;

structstudentstudents[50];

printf("Inputn:

");

scanf("%d",&n);

for(i=0;i

printf("InputtheinfoofNo.%d:

\n",i+1);

printf("number:

");

scanf("%d",&students[i].num);

printf("name:

");

scanf("%s",&students[i].name);

printf("mathscore:

");

scanf("%d",&students[i].math);

printf("englishscore:

");

scanf("%d",&students[i].english);

printf("computerscore:

");

scanf("%d",&students[i].computer);

students[i].average=(students[i].math+students[i].english+students[i].computer)/3.0;

}

max=min=0;

for(i=1;i

if(students[max].average

if(students[min].average>students[i].average)min=i;

}

printf("max_average_infortmation:

\n");

printf("number:

%d,name:

%s,math:

%d,english:

%d,computer:

%d,average:

%.2lf\n",students[max].num,students[max].name,students[max].math,students[max].english,students[max].computer,students[max].average);

printf("min_average_information:

\n");

printf("number:

%d,name:

%s,math:

%d,english:

%d,computer:

%d,average:

%.2lf\n",students[min].num,students[min].name,students[min].math,students[min].english,students[min].computer,students[min].average);

return0;

}

【练习9-6】定义一个structstudent类型的结构指针,用其实现一个学生信息的输入和输出。

解答:

structstudent{/*学生信息结构定义*/

intnum;/*学号*/

charname[10];/*姓名*/

intcomputer,english,math;/*三门课程成绩*/

doubleaverage;/*个人平均成绩*/

}s,*p;

p=&s;

scanf("%d%s%d%d%d",&p->num,p->name,&p->math,&p->english,&p->computer);

【练习9-7】改写例9-3中的函数update_score(),将第一个形参改为结构数组形式。

解答:

intupdate_score(structstudents[],intn,intnum,intcourse,intscore)

{

inti,pos;

for(i=0;i

if(s[i].num==num)

break;

if(i

switch(course){

case1:

s[i].math=score;break;

case2:

s[i].english=score;break;

case3:

s[i].computer=score;break;

}

pos=i;

}

else

pos=-1;

returnpos;

}

习题9

一、选择题

1.下面定义结构变量的语句中错误的是D。

A.structstudent{intnum;charname[20];}s;

B.struct{intnum;charname[20];}s;

C.structstudent{intnum;charname[20];};structstudents;

D.structstudent{intnum;charname[20];};students;

2.如果有定义语句:

struct{

intx,y;}s[2]={{1,3},{2,7}};

则语句:

printf(“%d\n”,s[0].y/s[1].x);输出结果为B。

A.0B.1C.2D.3

3.根据下面的定义,能打印出字母M的语句是C。

structperson{

charname[10];

intage;

}c[10]={“John”,17,“Paul”,19,“Mary”,18,“Adam”,16};

A.printf(“%c”,c[3].name);B.printf(“%c”,c[3].name[1]);

C.printf(“%c”,c[2].name[0]);D.printf(“%c”,c[2].name[1]);

4.设有如下定义,则对data中的a成员的正确引用是B。

structsk{inta;floatb;}data,*p=&data;

A.(*p).data.aB.(*p).a

C.p->data.aD.p.data.a

5.对于以下结构定义,(*p)->str++中的++加在D。

struct{intlen;char*str;}*p;

A.指针str上B.指针p上

C.str指向的内容上D.语法错误

二、填空题

1.“.”称为成员_(分量)_运算符,“->”称为_指向_运算符。

2.完成下列程序,该程序计算10名学生的平均成绩。

#include

#include

structstudent{

intnum;

charname[20];

intscore;

};

structstudentstud[10];

intmain(void)

{

inti,sum=0;

for(i=0;i<10;i++){

scanf("%d%s%d",&stud[i].num,_stud[i].name_,&stud[i].score);

sum+=stud[i].score;

}

printf("aver=%d\n",sum/10);

return0;

}

3.下列程序读入时间数值,将其加1秒后输出,时间格式为:

hh:

mm:

ss,即小时:

分钟:

秒,当小时等于24小时,置为0。

#include

struct{

inthour,minute,second;

}time;

intmain(void)

{

scanf("%d:

%d:

%d",_&time.hour,&time.minute,&

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1