77范文网 - 专业文章范例文档资料分享平台

C语言程序设计及实验指导练习及习题参考答案(8--10)(5)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

int main(void) {

int i, n;

double math_ave, english_ave, computer_ave; struct student s1; /* 定义结构变量 */ printf(\scanf(\

printf(\\\n”); math_ave = english_ave = computer_ave = 0; for(i = 1; i <= n; i++){

printf(\

scanf(\math_ave = s1.math; english_ave = s1.english; computer_ave = s1.computer; }

printf(\computer_ave); return 0; }

9-6 定义一个包含5 名学生信息的结构数组,并对该结构数组的所有元素进行则始化。 解答:

struct student{

int num;

char name[10];

int computer, english, math; double average; };

struct student s[5]={{30101, \张一\李二\王三\赵四\刘五\9-7 参考例9-3,输入并保存10 个学生的成绩信息,分别输出平均成绩最高和最低的学生信息。 解答:

#include

struct student{ /*学生信息结构定义*/

int num; /* 学号 */

char name[10]; /* 姓名 */

int computer, english, math ; /* 三门课程成绩 */ double average; /* 个人平均成绩 */ };

struct student students[10]; /* 定义结构数组 */ int main(void) {

int i, max,min;

/* 输入10 个学生的记录*/ for(i = 0; i < 10; i++){

printf(\

scanf(\&students[i].english, &students[i].computer);

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

/* 查找平均成绩最高、最低分学生的数组下标值 */ max=min=0;

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

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

/*输出平均成绩最高和最低的学生信息*/

printf(\最高分学生信息:学号:%d,姓名:%s,数学:%d,英语:%d,计算机:%d,平均分:%.2lf \\n\students[max].computer, students[max].average);

printf(\最低分学生信息:学号:%d,姓名:%s,数学:%d,英语:%d,计算机:%d,平均分:%.2lf \\n\students[min].computer, students[min].average);

return 0; }

9-8 定义一个struct student 类型的结构指针,用其实现一个学生信息的输入和输出。 解答:

struct student{ /*学生信息结构定义*/

int num; /* 学号 */

char name[10]; /* 姓名 */

int computer, english, math ; /* 三门课程成绩 */ double average; /* 个人平均成绩 */ }s, *p; p = &s;

scanf(\9-9 改写例9-4 中的函数update_score(),将第一个形参改为结构数组形式。 解答:

int update_score(struct student s[ ], int n, int num, int course, int score) {

int i,pos;

for(i = 0; i < n; i++) /* 按学号查找 */ if(s[i].num == num)

break;

if(i < n) /* 找到,修改成绩 */ {

switch(course){

case 1: s[i].math = score; break;

case 2: s[i].english = score; break; case 3: s[i].computer = score; break; }

pos = i; /* 被修改学生在数组中的下标 */ }

else /* 无此学号 */

pos = -1; return pos; }

2 习题参考答案

一、选择题

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

A.struct student{ int num; char name[20]; } s; B.struct { int num; char name[20]; } s;

C.struct student{ int num; char name[20]; }; struct student s; D.struct student{ int num; char name[20]; }; student s; 2.如果有定义语句:

struct {int x, y; } s[2] = { { 1, 3 }, { 2, 7 } };

则语句:printf(“%d\\n”, s[0].y/s[1].x ); 输出结果为 B 。 A.0 B.1 C.2 D.3

3.根据下面的定义,能打印出字母M 的语句是 C 。 struct person{ char name[10];

int age; } 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 。 struct sk{ int a; float b; } data, *p=&data; A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a

5.对于以下结构定义,(*p)->str++中的++加在 D 。 struct { int len; char *str; } *p; A.指针str 上 B.指针p 上 C.str 指向的内容上 D.语法错误

二、填空题

1.“.”称为 成员(分量) 运算符,“->”称为 指向 运算符。 2.完成下列程序,该程序计算10 名学生的平均成绩。 #include #include struct student { int num;

char name[20]; int score;

};

struct student stud[10]; int main(void) { int i , sum = 0 ;

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

scanf(\&stud[i].num, stud[i].name , &stud[i].score); sum += stud[i].score; }

printf(\return 0;

}

3.下列程序读入时间数值,将其加1 秒后输出,时间格式为:hh: mm: ss,即小时:分钟: 秒,当小时等于24 小时,置为0。 #include struct {

int hour, minute, second; } time;

int main(void)

{ scanf(\time.second++;

if( time.second == 60){ time.minute++ ; time.second = 0;

if(time.minute == 60){ time.hour++; time.minute = 0; if( time.hour == 24 ) time.hour = 0; } }

printf (\return 0; }

4.写出下面程序的运行结果 1 2 A B struct s1{ char c1, c2; int n; };

struct s2{ int n;

struct s1 m;

} m = {1, {?A?, ?B?, 2} }; int main(void)

{ printf(“%d\\t%d\\t%c\\t%c\\n”, m.n, m.m.n, m.m.c1, m.m.c2);

return 0; }

5.写出下面程序的运行结果 23, wang, 98.5, wang 。 struct abc{ int a; float b; char *c; }; int main(void) {

struct abc x = {23,98.5,\struct abc *px = &x;

printf(\return 0; }

三、程序设计题

1.职工工资项目包括编号、姓名、基本工资、奖金、保险、实发工资,其中:实发工资 = 基

本工资 + 奖金 - 保险。输入10 个职工的前5 项信息,计算并输出其实发工资。 解答:

#include

struct employee{ /* 定义结构类型employee */ int num;

char name[20];

float jbgz, jj, bx, sfgz; };

int main(void) { int i;

struct employee e; /* 定义结构类型变量 e */ for(i = 1; i <= n; i++){

printf(\请输入第%d个职工的信息: \scanf(\

scanf(\e.sfgz = e.jbgz + e.jj - e.bx;

printf(\编号:%d 姓名:%s实发工资:%.2f\\n\}

return 0; }

2.中国有句俗话:“三天打鱼,两天晒网”。某人从1990 年1 月1 日起开始“三天打鱼, 两天晒网”,问这个人在以后的某一天(输入1 个天数)中是在“打鱼”,还是在“晒网”。 要求用结构形式定义日期(年、月、日)。 解答:

提示:先计算出输入的日期与1990 年1 月1 日相差的天数,然后求除5 后的余数,再 将余数对照“三天打鱼,两天晒网”,得出最后结论(注:若余数为0,则为“晒网”)。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言程序设计及实验指导练习及习题参考答案(8--10)(5)在线全文阅读。

C语言程序设计及实验指导练习及习题参考答案(8--10)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/419153.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: