- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C综合练习–4附参考解析
C综合练习4 附参考答案(宏,结构体和文件)
较为复杂的宏定义例题
(1)定义一个宏,用于判断所给出的年份year是否为闰年:
#define LEAP_YEAR(y)
解:为闰年的条件是符合下面二者之一:(1)能被4整除,但不能被100整除。(2)能被4整除,能被400整除。
#define LEAP_YEAR(y) (y%4==0 y%100!=0) #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=Ac=Z? c:c+32
单项选择题
1.下面语句的输出结果是________。
#include “stdio.h”
printf(“%d %d %d”,NULL,’\0’,EOF);
A. 0 0 1 B. 0 0 -1 C. NULL EOF D. 1 0 EOF
2.如果二进制文件a.dat已经存在,现要求写入全新的数据,应以________方式打开。
A.“w” B.”wb” C.”w+” D.”wb+”
3.有以下的结构体变量定义语句:
struct student { int num; char name[9]; } stu;
则下列叙述中错误的是 ( )。
A. 结构体类型名为student B. 结构体类型名为stu
C. num是结构体成员名 D. struct是C的关键字
4. 若有以下定义
struct date { int y,m,d; };
struct student
{ int num; char name[9]; struct date bir;}stu,*p=stu;
则以下对结构体变量stu成员的引用中错误的是( )。
A. p-bir-y B. p-bir.y C. stu.bir.y D. stu.name
5. 若有以下定义
struct student { int num; char name[9]; }stu[2]={1,”zhangsan”,2,”lisi”};
以下能输出字符串”lisi”的语句是( )。
A. printf(“%s”,stu[0].name); B. printf(“%s”,stu[1].name);
C. printf(“%s”,stu[1].name ); D. printf(“%s”,stu[1].name[0]);
6. 有以下定义语句
struct node { int n; struct node *next; } x,y,*p=x,*q=y;
则能将y节点链接到x节点之前的语句为( )。
A. x.next=p B. x.next=q C. y.next=p D. y.next=q
7. 已建立一单向链表,指针变量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=p2
C. p=p2;p1-next=p; D. p1=p;p-next=p2;
2。程序阅读题
1. 下列程序的输出结果是 。
#include stdio.h
struct st { int num; char name[10]; int age;
} x[3]={{1,“zhang”,19},{2,“li”,2
文档评论(0)