c语言练习4.doc_第1页
c语言练习4.doc_第2页
c语言练习4.doc_第3页
c语言练习4.doc_第4页
c语言练习4.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

练习4一、选择题。1. 以下对编译预处理命令的正确的说法是( ABC )。A、 C语言中的编译预处理命令包含宏定义、文件包含和条件编译B、 C语言中的编译预处理命令以#号开头C、C语言中的编译预处理命令一般位于程序代码的首部D、C语言中的编译预处理命令以分号结束2. 设有不带参的宏定义#define N 20+1,则以下说法不正确的是:( C )。A、 编译预处理阶段,程序代码中所有的宏名N被原样替换为20+1B、 该不带参宏定义中的20+1为宏替换字符串C、 该不带参宏定义中的20+1为整型表达式D、 该不带参宏定义中的宏名N没有数据类型的概念3. 定义一个带参的宏名f(x)计算表达式2*x*(x+1)的值,则以下带参宏定义中正确的定义形式是:( B )。A、#define f(x) 2*x*(x+1) B、#define f(x) (2*(x)*(x)+1)C、#define 2*(x)*(x)+1) f(x) D、#define f 2*x*(x+1)4. 以下对条件编译不正确的说法是( B )。A、 条件编译是指在部分程序代码在满足指定条件的情况下才参与编译,否则不参与编译。B、 无论是否使用条件编译,所有程序代码均要进行编译C、 使用条件编译和使用if语句是有区别的D、 合理使用条件编译可以减少需要参与编译的语句数量,生成的目标程序小,程序执行效率高。5. 文件包含命令#include 和#include“math.h”的区别在于( D )。A、 前者先在编译系统指定的目录下查找文件math.h,如果找不到再到用户当前目录下查找B、 后者先在编译系统指定的目录下查找文件math.h,如果找不到再到用户当前目录下查找C、 两者均是先在编译系统指定的目录下查找文件math.h,如果找不到再到用户当前目录下查找D、 前者仅在编译系统指定的目录下查找文件math.h,后者先在用户当前目录中查找文件,如果找不到再到编译系统指定的目录下查找6. 以下对将C程序的多个源文件连接生成可执行文件的说法中不正确的是( C )。A、 使用工程文件的方式下,每个源文件分别编译生成一个目标文件,然后再进行连接生成可执行文件B、 使用文件包含命令的方式下,通过编译预处理生成一个包含所有源文件代码的新的源文件,将该源文件编译成目标文件,然后再进行连接生成可执行文件。C、 使用文件包含命令的方式下,不必考虑多条文件包含命令的顺序。D、 工程文件的作用是告诉编译系统需要将那些源文件进行编译、连接并生成一个可执行文件7. 当说明一个结构体变量时,系统分配给它的内存是( A )A、结构体中各成员所需内存量的总和 B、结构体中第一个成员所需内存量C、结构体中占内存量最大的成员所需的内存量 D、结构体中最后一个成员所需内存量8. 当说明一个共用体变量时,系统分配给它的内存是( C )A、共用体中各成员所需内存量的总和 B、共用体中第一个成员所需内存量C、共用体中占内存量最大的成员所需的内存量 D、共用体中最后一个成员所需内存量9. 以下关于typedef的叙述不正确的是( B )A、 用typedef可以定义各种类型名,但不能用来定义变量 B、 用typedef可以增加新类型C、 用typedef只是将已存在的类型用一个新的名称来代表 D、 使用typedef便于程序通用10. 下面四个运算符中,优先级最低的是( A ) A、 ( ) B、 C、 - D、+11. 以下关于枚举的叙述不正确的是( D ) A、枚举变量只能取对应的枚举类型的枚举元素表中的元素B、可以在定义枚举类型时对枚举元素进行初始化C、枚举元素表中元素有先后次序,可以进行比较 D、枚举元素的值可以是整数或者字符串。12在下列程序中,枚举变量c1和c2的值分别是( A )和( D ) #include void main( ) enum color red,yellow,blue=4,green,whitec1,c1;c1=yellow;c2=white;printf(%d,%dn,c1,c2); A、 1 B、3 C、 5 D、 613已知有如下定义,若有p=&data,则对data中的成员a的正确引用是( B ) struct sk int a;float b;data,*p;A、 (*p).data.a B、 (*p).a C、p-data.a D、p.data.a14设有以下定义和语句, struct student int num,age;struct student stu3=2001,20,2001,21,2001,19;struct studeng *p=stu;则以下错误的引用是( D ) A、(p+)-num B、p+ C、(*p).num D、p=&stu.age15设有以下说明语句, stuct ex int x; float y; char z;example; 则下面的叙述中不正确的是( B ) A、struct是结构类型的关键字 B、example是用户定义的结构类型名 C、x,y,z都是结构成员名 D、struct ex是用户定义的结构类型16设有以下语句: struct st int n;st *next; ;static st a3=5,&a1,7,&a2,9,NULL,*p;p=&a0;则以下表达式值为6的是( B ) A、p+-n B、+p-n C、(*p).n+ D、p-n+17选择下面程序的运行结果是( B ) #include struct stu int num; char name10; int age; ; void fun(stu *p) printf(%sn,(*p).name); void main() struct stu students3=9801,Zhang,20,9802,Long,21,9803,Xue,19;fun(students+2); A、Zhang B、Xue C、Long D、1818当已存在一个abc.txt文件时,执行fopen(abc.txt,r+)的功能是( D )A、打开abc.txt文件,清除原有的内容 B、打开abc.txt文件,只能写入新的内容C、打开abc.txt文件,只能读取原有内容 D、打开abc.txt文件,可以读取和写入新的内容19若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开的模式是( C )A、ab+ B、wb+ C、rb+ D、ab20若用fopen函数打开一个已经存在的文本文件,保留该文件原有数据且可以读也可以写,则文件操作模式是( C )A、r+ B、w+ C、a+ D、a21使用fseek函数可以实现的操作是( C )A、改变文件的位置指针的当前位置 B、文件的顺序读写C、文件的随机读写 D、以上都不对22fread(buf,64,2,fp)的功能是( D )A、从fp文件流中读出整数64,并存放在buf中;B、从fp文件流中读出整数64和2,并存放在buf中;C、从fp文件流中读出64个字节的字符,并存放在buf中; D、从fp文件流中读出2个64个字节的字符,并存放在buf中;23 以下程序的功能是( B )#includevoid main() FILE *fp; char str=Hello; fp=fopen(PRN,w); fputs(str,fp); fclose(fp);A、在屏幕上显示Hello B、把Hello存入PRN文件中C、在打印机上打印出Hello D、以上都不对24检测fp文件流的文件位置指针在文件头的条件是( B )A、fp=0 B、ftell(fp)=0 C、fseek(fp,0,SEEK_SET) D、feof(fp)25以下程序的功能是( A )#includevoid main() FILE *fp;fp=fopen(abc,r+);while(!feof(fp) if(fgetc(fp)=*) fseek(fp,-1L,SEEK_CUR); fputc($,fp); fseek(fp,ftell(fp),SEEK_SET); fclose(fp);A、将abc文件中所有* 均替换成$ B、查找abc文件中所有*C、查找abc文件中所有$ D、将abc文件中所有字符均替换成$二、填空题1、C语言提供的预处理命令功能主要有三种: 宏定义 , 文件包含 , 条件编译 。且分别用 #define , #include , #if或#endif 来实现。为了与一般的C语句相区别,这些命令以 # 符号开头。2、结构体变量成员的引用方式是使用 成员运算符. 运算符,结构体指针变量成员的引用方式是使用 成员运算符- 运算符。3、设struct student int no;char name12;float score3; sl,* p = &sl;用指针法给sl的成员no赋值1234的语句是_p-no=1234 。4、运算sizeof是求变量或类型的 内存字节数 ,typedef的功能是 类型定义 。5、 C语言可以定义枚举类型,其关键字为 enum 。6、设union student int n;char a100; b; 则sizeof(b)的值是_100_。7、C语言流式文件的两种形式是 ASCII码文件 和 二进制文件 。8、C语言打开文件的函数是 fopen ,关闭文件的函数是 fclose 。9、按指定格式输出数据到文件中的函数是 fprintf ,按指定格式从文件读取数据的函数是 fscanf ,判断文件指针到文件末尾的函数是 EOF 。10、输出一个数据块到文件中的函数是 fwrite ,从文件中输入一个数据块的函数是 fread ;输出一个字符串到文件中的函数是 fputs ,从文件中输入一个字符串的函数是 fgets 。11、feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为 0 ,否则为 1 。12、在C语言中,文件的存取是以 字节 为单位的,这种文件被称作 流式 文件。三、阅读程序,写出运行结果。1#define PI 3#define S PI*r*r#define V 4*S*r/3void main()float r=2; printf(“S=%.2f, V=%.2f”,S,V);答案:S=12.00, V=32.002 #define FX(x) x*(x+2)(x-2)void main( )int a=3,b=2; printf(%dn, FX(2+a+b);答案:953 #define PRT(x) printf(“%dt”,x)#define PRINT(x) PRT(x);printf(“well done!”)void main()int x=3,i;for(i=0;i3;i+) PRINT (x-i);printf(“n”);答案:3 2 1 well done!4 #includestruct two int x, *y ; *p;int a8=1,2,3,4,5,6,7,8;two b4=100,&a1,200,&a3,10,&a5,20,&a7;void main() p=b;printf(%dn,+(p-x);答案:1015#include struct n_c int x; char c; ; void func(struct n_c b) b.x=20; b.c=y; void main( ) struct n_c a=10,x; func(a); printf(%d%c,a.x,a.c); return 0; 答案:10x四、编程题。1、圆柱形体积公式为:v=area*h。其中area=*r*r,圆周率取值为3.14。要求使用不带参宏定义实现计算圆柱体体积功能,r和h的值由用户键盘输入。#include#define PI 3.14#define Area PI*r*r#define V Area*hvoid main() int r,h; printf(请输入圆柱的半径:); scanf(%d,&r); printf(请输入圆柱的高:); scanf(%d,&h); printf(圆柱的体积为%.2f:,V);2、编写一个带参的宏定义,实现通过宏替换求式子f(x)=4x3+3x2-2x+1值的功能,其中x为形参。要求在main函数中通过宏替换求下面两个式子的值,式子中的m由用户键盘输入。#include#define f(x) 4*(x)*(x)*(x)+3*(x)*(x)-2*(x)+1void main() int m,f; printf(请输入一个整数:); scanf(%d,&m); printf(f(x)=%d,f(m);3、编写3个源文件file1.c、file2.c和file3.c,在file2.c中编写函数fun1求两个整数的和,在file3.c中编写函数fun2求两个整数的差,在file1.c中编写main函数调用这两个函数求两个整数的和与差并输出结果。file1.c:#includeint fun1(int a,int b);int fun2(int a,int b);void main() int x,y,sum,Diff; printf(请输入x和y两个整数:); scanf(%d,%d,&x,&y); sum=fun1(x,y); Diff=fun2(x,y); printf(n %d+*%d=%d,x,y,sum); printf(n %d-%d=%d,x,y,Diff);file2.c:int fun1(int a,int b) int c; c=a+b; return c;file3.c:int fun2(int a,int b) int c; c=a-b; return c;4、要求:分别使用工程文件和文件包含命令两种方式将3个源文件连接生成一个可执行文件。答案:见例题。5、有4个学生,每个学生包括学号,姓名,成绩。要求找出成绩最高者的姓名和成绩。#include struct stu int No; char Name10; int Score; int searchMax(struct stu *student,int n) int i,max; max=0; for(i=0;iScoreScore) max=i; return(max);void main() struct stu student4; int i,n; for(i=0;i4;i+) printf(请输入第%d个学生的学号 姓名 成绩:,i+1); scanf(%d%s%d,&studenti.No,studenti.Name,&studenti.Score); n=searchMax(student,4); printf(成绩最高的学生是%s,成绩为:%dn,studentn.Name,studentn.Score);6、编写一个函数day,该函数使用data结构作为参数,函数返回某日是这年的第几天。#include struct data int year; int month; int day; int Day(struct data *y) int t=28,n=0; if(y-year%4=0&y-year%100!=0|y-year%400=0)t=29; switch(y-month) case 12: n+=30; case 11:n+=31; case 10:n+=30; case 9:n+=31; case 8:n+=31; case 7:n+=30; case 6:n+=31; case 5:n+=30; case 4:n+=31; case 3:n+=t; case 2:n+=31; n+=y-day; return(n);void main() struct data

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论