




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C综合练习4附参考答案 (宏,结构体和文件) C综合练习4 附参考答案(宏,结构体和文件) 0. 较为复杂的宏定义例题(1)定义一个宏,用于判断所给出的年份year是否为闰年:#define LEAP_YEAR(y)解:为闰年的条件是符合下面二者之一:(1)能被4整除,但不能被100整除。(2)能被4整除,能被400整除。#define LEAP_YEAR(y) (y%4=0 & y%100!=0) | (y%400=0 )(2)定义带参数的宏为 #define max(a,b) (a)(b)?(a):(b)对表达式 max(a,max(b,max(c,d) 作宏替换为(用文字描述): 。解: 计算a、b、c、d中的最大值。表达式是调用宏函数,两个参数分别是a,max(b,max(c,d),其第二个参数又是一个调用宏函数,参数分别是b,max(c,d)。(3)定义一个带参数的宏,将两个参数的值交换#define swap(a,b) double t; 解:t=a; a=b; b=t;(4)定义一个带参数的宏,若变量中的字符为大写字母则转换成小写字母。解: #define change(c) c=c=A&cbir-yB.p-bir.yC.stu.bir.y D.5. 若有以下定义struct student int num; char name9; stu2=1,”zhangsan”,2,”lisi”;以下能输出字符串”lisi”的语句是( )。A.printf(“%s”,);B.printf(“%s”,&);C.printf(“%s”, ); D.printf(“%s”,&0);6. 有以下定义语句struct node int n; struct node *next; x,y,*p=&x,*q=&y;则能将y节点链接到x节点之前的语句为( )。A.x.next=pB.x.next=qC.y.next=pD.y.next=q7. 已建立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点,将p2所指节点从链表中删除并释放的语句为( )。A.p1=p2;free(p2);B.p1-next=p2-next;free(p2);C.*p1.next=*p2.next;free(p2); D.p1=p2-next;free(p2);8. 已建立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点;指针变量p指向新申请节点,将p所指节点插入到链表中p1与p2之间的语句为( )。A.p-next=p2;p1-next=p;B.p1-next=p;p-next=p2C.p=p2;p1-next=p; D.p1=p;p-next=p2;2。程序阅读题1. 下列程序的输出结果是 。#include struct st int num; char name10; int age; x3=1,“zhang”,19,2,“li”,20,3,“wang”,21,*p=x; void main() printf(“%s,%dn”,(p+2)-name,(*p).age); 解:wang,192. 下列程序的输出结果是 。#include struct ks int a;int *b;s4,*p; void main() int n=1,i; for(i=1;ia,(p+)-a); 3 程序填空题1【程序说明】从键盘输入一行字符串(小于80个),将其中所有的小写字母改写后依次输出到 c:bb.txt文件(其他字符不输出)。改写规则:a改b,b改c,.x改y ,z改a. # include#includevoid main() FILE *fp;char str81;int i=0;if(fp=fopen( 1 )=NULL) printf(“cant open the file.n”);exit(0);gets(str); while(stri!=0) if(stri=a&strinext != NULL ) q=p ; 8 q-next = NULL ;p-next = h ; 9 return h ; 4. 【程序说明】已建立学生“英语”课程的成绩链表(成绩存于score域中,学号存于num 域中),下列函数用于输出成绩优秀(=85分)学生的学号和成绩及成绩优秀的学生人数。 Void require( struct student *head) struct student *p; 10 ; if(head!=NULL) 11 ; while(p!=NULL) if( 12 ) printf(“%7d %6.1fn”,p-num,p-score);x+; p=p-next; printf(“%dn”,x); 4. 编程题1 有1000个学生,每个学生的数据包挎学号、姓名、三门课的成绩。数据从键盘输入,要求按各个学生的三门课平均成绩从高分到低分打印出这1000个学生的学号、姓名、以及个人平均成绩。2 读一个指定的文本文件 - D:盘根目录下的a.txt文件,显示在屏幕上,如果有大写字母,则改成小写字母在输出,并统计行数输出 (注:一行字符以 n 结尾 )。C综合练习4 (宏,结构体和文件)参考答案1单项选择题 B B B A C C B A2。程序阅读题 1. wang,19 2. 5,1 3. 程序填空题1 “c:bb.txt”,”w” 2 stri=z 3 stri= a 4 stri,fp 5 (fr=fopen(“from.txt”,”r ”)=NULL 6 ch=fgetc(fr) 7 ch9|chnext ; 9 h=p ;10 int x=0 11 p=head 12 p-score=854. 编程题1. #include struct studentint num; /* 学号 */char name8; /* 姓名 */ int score3; /* 成绩 */ float avr; ; /*每人平均成绩*/struct student stud1000; /* 定义1000个记录学生信息的结构数组 */void main() int i, j, p ; struct student t ; /* 工作变量 */* 输入1000个学生的记录,包括学号、姓名和三门课成绩,并计算个人的平均分 */printf(“nInput the students number,name and scores:”);for(i = 0; i 1000; i+) printf(“No %d n”,i+1); /* 提示输入第i个同学的信息 */scanf(“%d,%s,%d,%d,%d”, &studi.num, , &studi.score0,&studi.score1,&studi.score2);stud i .avr = (studi.score 0 + studi.score 1 + studi.score 2 ) /3.0 ;/* 使用选择法排序,按照平均分从低到高排序 */for(i = 0; i 999; +i) p = i; for(j = i + 1; j 1000; j+ ) if(studj.avr = 0; i-) printf(“%d %s %fn”, studi.num, , studi.avr); 2. #include stdio.h #include stdlib.h void main() FILE *fp; char ch; int line=1; if(fp=fopen(“d:/a.txt”,”r ”)=NULL) pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保设施运营试题
- 行业法规标准更新跟踪表
- 体育赛事直播协议
- 员工考勤表格-出勤记录统计
- 移动应用软件开发与服务合作协议
- 朝花夕拾:童年记忆与生活变迁散文集导读教案
- 环境污染治理与社会公众参与的互动机制
- 历史文化遗产的数字化保护与传播途径
- 英语阅读与写作考试试题
- 部编人教版三年级语文下册《九月九日忆山东兄弟》公开课教学课件
- 24年海南生物会考试卷
- DIN32711轴环连接多边形轮廓P3G第2部分计算和定尺寸
- 胸腔镜下三切口切除食管癌的手术配合
- 叉车日常维护保养检查记录表
- 空白个人简历表格
- 年成都远洋太古里案例分析PPT课件
- 吹瓶机工艺培训资料-sidel
- 中考数学二次函数压轴题专题
- 电气焊工理论考试题库
- 海洋生物活性物质-活性多糖
- 饭店出兑合同范本兑店合同范本
评论
0/150
提交评论