考试范围教材中的内容.ppt_第1页
考试范围教材中的内容.ppt_第2页
考试范围教材中的内容.ppt_第3页
考试范围教材中的内容.ppt_第4页
考试范围教材中的内容.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

复 习 考试范围:教材中的内容,打*号的不作教学要求,另外:11.3、 12.4、12.3.6(除feof和rewind函数以外)不作教学要求。 笔试题型 单选题 概念语法 填空题 概念语法,写出表达式或语句 程序阅读题 重点语法,算法编程 程序填空题 重点语法,算法编程 注:1.做填空题时,要对表达式与语句区分 2.题目要看清楚,要用题目定义的变量 3.该打印的打印,不该打印的不打印 4.语法无定义符号不要写 笔试时间 2009年06月21日(14:00-16:00) 教室: 答疑时间: 6月20日 9:0017:00地点: 模拟考教室东2-104 时间6月9日晚 6:308:00 10.10.69.99 1 c为字符变量,存储小写英文字符,将其按ab、 bc、yz、za对应转换,写出赋值语 句 _。 答案: c=c=z?a:c+1; c为字符串,其长度可以用函数求得y=strlen(c);也可用 for(_);求得。 答案: y=0;cy!=0;y+ 2 下列程序的输出结果是_。 int f(int n) if(n) return f(n-1)+n;else return n; void main() printf(“f=%d”,f(4); 答案: f=10 #define cirfer(r) 2*r* 要写成 3.1415926 写出计算半径为r的圆周长cirfer(r)的宏定义_。 3 数据类型:对某些具有共同特点的数据集合的总称 数据类型 指针类型 空类型 数组 结构 联合 枚举 单精度型 双精度 整型 实型 字符 基本类型 构造类型 各种数据在内存的存储方式(书写形式)、数的表示范围 一、数据类型 4 1、基本类型 基本类型指整型、实型和字符型 (主要是int, float, double, char;还包括long, unsigned, short) (1) 常量 整型:不带小数点的数 十进制 同平时习惯 八进制 以0开始 十六进制 以0x开始 各进制的互换(包括二进制) 各类型所占的字节 int 2字节 long 4字节 各类型的取值范围 long类型常数后缀l或L unsigned类型常数后缀u或U 常用符号常量的含义 (如NULL=0、EOF=-1) 5 整型常数正确表示 以下选项中不正确的整型常量是_。 A 12L B -10 C 1,900 D 123U 各进制的互换 如果 int i=16,j=23;执行printf(“%x-%o“,i,j)后输出为 A. 10-23 B. 10-27 C. 16-23 D.16-27 答案:C 161010162310278答案:B 十进制n进制:除n取余 n进制十进制: 6 实型:带小数点的数 基本型: 同习惯 指数型:科学记数法 10E 各类型所占的字节 float 4字节 double 8字节 各类型的取值范围 各类型的有效位 67 位 1516位 实型常数正确表示 以下选项中不正确的实型常量是_。 A0.23E01 B2.3e-1 C1E3.2 D2.3e0 答案:C 实型有效位 下列程序段执行后d值为_. void main() int b=0x12345678; printf(“%xn“,b); 输出45678 7 字符型:单个字符 或转义符 单个字符或数字 定义变量 char 占1字节 字符与字符串的区别 字符数据与整数数据互换运算 大小写字母转换 大小 c1+a-A ; 小大 c1-(a-A) 字符数字与数值数字转换 字符数值 字符-0;反之 数值+0 以下选项中不正确的字符常量是_。 An B1 C“a“ D101 答案:C 用下列for循环将数字字符逆序输出即从(9到0),其语句为 for(i=0;I D _isw 变量初值和赋初值 不能将一个数值连续同时赋初值于多个变量 变量未赋初值是随机值,使用了static时数值变量为0,字 符变量为NULL 把x、y定义成float变量,并赋值同一初值3.14是_。 A. float x,y=3.14; B. float x,y=2*3.14; C. float x=3.14,y=3.14; D. float x=y=3.14; 答案:D 答案:C (2) 变量 9 2、构造类型 构造类型包括数组和结构 (1) 数组 数组元素的下标 0n-1 数组元素在内存的排序:按行排序 数组赋初值: 类型说明符 数组名常量表达式=常量表达式序列; 类型说明符 数组名常量表达式1常量表达式2 =常量表1,常量表2,.,常量表n ; 数组元素的引用 数组长度 数组定义为int a1111,则数组a 有_个数组元素 。 A、12 B、144 C、100 D、121 答案 D 10 数组赋初值 对数组a 正确初始化的是_ 。 A、int a23=1,2,2,3,5.6; B、 int a3=1,2,3,4,5,6; C、 int a2=1,2,3,4,5,6; D、 int a23=1,2,3,4,5,6; 答案 B 下列程序段的输出结果是_。 int a32=1, 2, 3, 4, 5, 6 printf(“%d“,a12); 答案 5 数组元素内存的排序 11 若输入 3 1 2 3 , 则以下程序的输出结果是_。 #include “stdio.h“ void main() int i, j, n, a10; scanf(“%d“, for (i=0; i #include void length(int x1,int y1,int x2,int y2,float *len) *len=sqrt(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1); void main() struct point10; int k,sub=0; for(k=0;kpointsub.length 答案: 16 3、指针 指针和地址的概念 指针变量的定义和初始化 指针引用 各种指针的定义 指针变量 类型名 *变量名; 结构指针 struct 结构体类型 *结构体指针变量名; 指针数组 类型名 *变量名常量表达式; 指向指针的指针 类型名 *变量名; 指向二维数组的行指针 类型名 (*变量名)常量表达式; 返回指针值的函数 类型名 *函数名(形参表) 17 对于如下说明,则有意义的正确表达式是: int p3,*a3; A) p=a B) p0=a C) p0=*a D) a0*=2 p=a 数组的指针不能赋值 p0=a p0是数组元素,a是指针,不能赋值 p0=*a *a是a0指针指向的变量值,可以赋值 a0*=2 a0=a0*2 地址值*2无意义 答案 C 指针概念 下列程序在运行时可能会出错,原因是_。 # include void main( ) char *s; gets(s); puts(s); 答案 s无指向 18 指针与变量的关系 int a,*p; p= p 为a的内存地址 *p 为a的值 k:1 j:2 p(*p= p=q= t=p;p=q;q=t; printf(“%d,%d”,*p,k); 若变量已正确定义并且指针p已经指向某个变量x,则+(*p) 相当于 _。 A、*+p B、+*x C、 *(+p) D、+x 答案 D 19 指向结构体的指针使用 (*指针名).成员名 或 指针名-成员名 对于以下的变量定义,表达式_不符合C语言语法。 struct node int len; char *pk; x = 2, “right“, *p = A、p-pk B、*p.pk C、*p-pk D、*x.pk 答案 B . - 运算级优先于* *p.pk*(p.pk)p是指针,因此错误 20 下列程序的输出结果是_。 void main( ) struct st int x, y; a4=10,20,30,40,50,60,70,80; struct st *p=a; printf(“%d,“, p+-x); printf(“%d,“, +p-y); printf(“%dn“, (a+3)-x); 结构的指针指向结构数组 答案 10,41,70 p+-x: p-x;p+ +p-y: +(p-y) 21 指针与一维数组的关系 int a100,*p; p=a; 元素地址 while(skk=tk)k+; 等价于void(char *s,char *t) while(_); 答案 *s+=*t+ 下列程序运行后,将输出 _。 int a=1,2,3,4,5,6,7,8,9,10,*p; main() int i; p= for(i=0;it t-1s 答案 wo, s 二级指针、指针数组与字符串 onetwothreeonetwothree onetwothree *p+1 p+: 设 char *pt4,*p;p=pt; 并设指针数组pt的每个元素指向各自的字符串 二级指针 p+i void main() char *str= “one“; printf(“%s,%cn“,f(str)+1,*f(str)+1); “two“ f(str) “two“ f(str)+1 *f(str)t t+1u 答案 wo,u 函数返回指针 28 二、 运算及流程控制 1、基本运算 运算符的功能 运算符的优先级、结合性和目数 特别注意 /、 % 、复合赋值、自增自减 若变量已定义并赋值,表达式_不符合语法。 A. A*b/c B. 3.14%2 C. 2,b D. a/b/c 答案:B 下列运算符中,优先级最高是_。 A- B+ C i=3/2+7/2=5; j=45%11+(78)?14:21)=14); 后变量i,j的值为_。 A. i=0 j=1 B. i=1 j=1 C. i=0 j=2 D.i=1 j=2 答案:A 30 表达式A+B的类型为( ) Achar B int Cdouble Dvoid 高 double float long unsigned unsigned short 低 int char,short 31 两个关系符之间要用逻辑符连接 表示“xyz”的C表达式是_。 答案:xy判别c不是大写字母的表达式为: 答案:cZ| cb的4中情况 ,并注意 整数/整数=整数 ab A) a*b/a*b=1 B) a/b*b/a=1 C) a/b*b=a D) a/b*b+a%b=a a=b a*a/a*a=a2 a/a*a/a=1 a/a*a=a a/a*a+a%a=a ab 当ab 设a=mb+n m1的整数,n0)y=y+1;else y=y+y; A. 20 B. 11 C. 9 D. 0 答案:A a=0 表示: 对a充0 表达式的值为0 36 将下段程序用赋值语句等价表示_. if(x0 a:从02550 共循环256次 所以共做b+; 256次 b=257 41 下列程序的输出结果是_。 # include void main( ) int x,k; x=12; for(k=0;x!=0;x=x+2)+k; printf(“k=%d,x=%dn”,k,x); 答案k=32762,x=0 按ANSI C int为4字节32位, 取值范围-32768 32767 x=12 x=12+2=14 x=14+2=16 x=32766+2=-32768 (32766+1=01111111 11111111 32767+1=10000000 00000000 -32768的补码=10000000 00000000) x=-32768+2=-32766 . x=-2+2=0 则k的值即为循环次数计算 x正值循环次数: (32766-12)/2=16377 x负值循环次数: 32768/2=16384 x=32766到x=-32768 1次 k=16377+16384+1=32762 42 用for循环打印 0 1 2 0 1 2 0 1 2; for(i=1; i=0 44 四、数据的输入和输出 putchar( )、getchar( ) printf(输出格式控制,输出表列); scanf(输入格式控制,地址表列) 输入/输出格式控制 注 (1) 格式控制中的普通符 printf()照原样输出,而scanf()作为输入数据的分割符 (2) %c 将空格分割符作为符号输入 %s 将空格作为分割符处理 (3)一般格式说明与输出表列的个数、类型必须一一对应 若格式符的个数输出对象的个数,多余格式符按零值输出 若格式符的个数 int c; void p(int *x,int y) +*x;y-; c=*x+y; void main() int x=3;c=3; p( printf(“%d,%d“,x, c); 答案 4,6 函数定义为 int calc(int n; int a5) ; 并有变量定义 int *p,(*q)5,a5,n; p=q=a; 下列哪个调用语句为正确_ A) calc(*p, q); B) y=calc(p,*q); C) calc(n, D) 以上均不行 虚实结合 答案 A 51 对于以下递归函数f, 调用 f (3) 的返回值是_。 f (int n) return (n void f(char *p) main() char s80,c;int i=0; while(c=getchar()!=n)s_=c; si=0; f(_); void f(char *p) if(_) return; f(_); putchar(_); 答案:i+ s *p=0 p+1 *p f(“12345”)f(“12345”)f(“12345”)f(“12345”)f(“12345”)f(0) 54321 53 下列程序的输出结果是_。 #include char *f(char *str) return str= “two“; void main() char *str= “one“; printf(“%s,%cn“,f(str)+1,*f(str)+1); “two“ f(str) “two“ f(str)+1 *f(str)t t+1u 答案 wo,u 函数返回指针 54 2、变量、函数的作用域 变量作用域 局部变量函数内部定义的变量,在本函数范围内有效 全局变量函数外部定义的变量,其有效域为从定义变量的位置 起到本源程序文件结束。 当外部变量与内部变量同名时,在局部变量的有效域内外部 变量不起作用。 函数作用域 函数从定义点起到源程序结束。 若使用超出函数作用域须声明 extern 类型名 函数名( ) 被调用的函数类型是int类型可以缺省声明 存储类别 auto 、static 、register 、extern 带static与不带static变量赋值的区别 55 C语言中,形参的缺省的存储类说明是_。 A、 auto B、static C、 register D、extern 答案 A 变量的存储类 以下程序的输出结果是_。 #include int z; void p(int *x, int y) +*x; y-; z=*x+y+z; printf(“%d, %d, %d#“, *x, y, z); void main() int x=1, y=5, z=9; p( printf(“%d, %d, %d#“, x, y, z); 变量的作用域 p( 1 5 +*x;x=2 y-;y=4 z=*x+y+z;-z=2+4+0=6 printf(“%d, %d, %d#“, *x, y, z); -2,4,6# printf(“%d, %d, %d#“, x, y, z); -2,5,9# 注: z全局变量初值为0 全局 局部 56 执行完下列语句段后,其输出为: # include int f(int m) static int k=3; k+; return k+m; void main( ) int s; s=f(3); printf(“%d, %dn“, s, f(s); int k- static变量 s=f(3) : k=4 return(k+m)=7 此时 k=4(static变量) f(s)=f(7): k=5 return(k+m)=12 此时 k=5(static变量) 答案:7,12 static变量 57 下列程序的输出结果是 _. #include int s; int f(int m) static int k=0; for(; k0) p=argvk; printf(“%sn“, p); input p p与output zoo oil比较 取大值存于p 大值为zoo 61 七、宏定义 宏展开是字符串替换,带参的再替换参数。 下列程序段的输出是_。 #define f(a, b, x) a*x+b printf(“%d, %dn“, f(3,2,1), f(6, 5, f(3, 2, 1); 答案: f(3,2,1) 3*1+2=5 f(6, 5, f(3, 2, 1)6* 3*1+2+5=25 下列语句先定义一个宏MAX2用于求两个数的最大值,然后 应用该宏将a,b,c三个数的最大值输出。 int a,b,c; #define MAX2(x,y) _ printf(“%dn”,_); 答案: (xy?x:y) MAX2(MAX2(a,b),c) 62 执行以下代码后,将输出_。 #define FOR while(x-); int x=3,y=0; FOR y+; printf(“x=%d, y=%d“,x,y); 宏定义引起语句结构变换 宏替换后 int x=3,y=0; while(x-); /*注意最后的“;“*/ y+; printf(“x=%d, y=%d“,x,y); 答案 x=-1,y=1 63 下列程序的输出是_. #include #define P(a) printf(“a=%dn“, (int)(a) #define P1(a) P(a);putchar(n); #define P2(a, b) P(a);P1(b); void main() int x = 1; for (; x 字位右移 printf(“%dn“,a(b2); b2 10=128 =10102 10102=102 a=0108=10002 100010=10102=10 答案:10 表达式(4 void main() int m,n.i=0,j; int bb16; scanf(“%d”, m=_; while(m0) bbi=m%2; _; i+; printf(“%binary number is:”); for (_) printf(“%d”,bbi); 答案: n=0;j- 67 十、文件 文件指针定义 FILE *文件指针名 标准输入 stdin 键盘 标准输出 stdout 显示屏 标准出错输出 stderr 显示屏 打开文件 FILE open(路径与文件名,文件类型) 成功返回文件柄,失败返回NULL(即0) if(fp=fopen(“file1.dat“,“r“)=NULL) printf(“Cannot open this filen“);exit(0); 读写文件函数 : int fgetc(FILE *文件指针) int fputc(int ch,FILE * 文件指针) int fputs(char *s, FILE *文件指针); char *fgets(char *s, int n,FILE *文件指针); fprintf(文件指针,格式字符串,输出表列); fscanf(文件指针,格式字符串,输入表列); 68 文件结束标记 EOF= -1 文件结束判断 int feof(FILE *stream) 结束位置,函数返回值非0,否则返回0。EOF不是结束位置 文件关闭 close(FILE *stream) 文件数据的读写必须使用函数,不能用文件指针直接操作 while(!feof(fp) c=fgetc(fp); ch=fgetc(fp); while(ch!=EOF) ch=fgetc(fp); 69 下面的程序把文本文件test.txt中的*过滤后输出 #include main() int c;FILE *fp; if (_) printf(“Can not open filen”);exit(0); while(_) if (c!=*) putchar(c); fclose(fp) 答案: (fp=fopen(“test.txt”,”r”)=NULL (c=fgetc(fp)!=EOF printf(“%s”,a); 请用fprintf文件输出函数等价表示_。 答案: fprintf(stdout,”%s”,a); 70 十一、自增自减 对操作的变量在运算前或后使其值加(自增)或减(自减) 1 1.变量与自增自减 下列程序段的输出结果_ int a=0,b=0; if(+a0 printf(“a=%d,b=%d“,a,b); if(+a0 1 0 1 0 1 a=1+1=2 答案 a=2,b=1 若变量已正确定义并赋值,表达式 -k+ 等价于_。 A-(k+) B(-k)+ C-(k+1) D-(+k) 答案 A 71 2.逗号表达式与自增自减 下列程序段的输出结果_ int a=0,b=0; int i,j=0; i=(j+,j+); printf(“i=%d,j=%dn“,i,j); 答案 i=1,j=2 注:第一个j+先做 第二个j+在整个式子之后再做 3.条件表达式与自增自减 下列程序段的输出结果_ int a,b; a=15;b=12; b=(a-=b+)?a/5:a+%5; printf(“a=%d,b=%dn“,a,b); 答案 a=15,b=4 注:a-和b+在(a=b)? 完成后就做 a+在整个式子之后再做 72 4.结构体与自增自减 对于以下结构定义: struct int len; char *str; *p; +p-str中的+加在 A) 指针str上 B) 指针p上 C) str所指的内容上 D) 表达式语法有错 答案 A 运算优先+(p-str) 5.指针与自增自减 若变量已正确定义并且指针p已经指向某个变量x,则(*p)+ 相当于_。 A、p+ B、x+ C、*(p+) D、 that = 0; for(i=0;ithat) that = this; return that; void main() int a=4,-3,5,-2,-1,2,6,-2; printf(“%dn”,f(a,8); 11 算法: this=0; i=0,1,2,n-1 for(j=i;jthat) that = this; i=0,数组a0an-1,累加取大值 i=1,数组a1an-1,累加取大值 i=n-1数组a

温馨提示

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

评论

0/150

提交评论