版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1复 习考试范围:教材中的内容,打*号的不作教学要求,另外: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:0010.10.69.99
2、 2c为字符变量,存储小写英文字符,将其按ab、bc、yz、za对应转换,写出赋值语句 _。 答案:c=c=z?a:c+1; c为字符串,其长度可以用函数求得y=strlen(c);也可用for(_);求得。 答案:y=0;cy!=0;y+ 3下列程序的输出结果是_。 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)的宏定义_。 4数据类型:对某些具有共
3、同特点的数据集合的总称数据类型指针类型空类型数组结构联合枚举单精度型双精度整型实型字符基本类型构造类型各种数据在内存的存储方式(书写形式)、数的表示范围一、数据类型51、基本类型基本类型指整型、实型和字符型(主要是int, float, double, char;还包括long, unsigned, short)(1) 常量整型:不带小数点的数 十进制 同平时习惯 八进制 以0开始 十六进制 以0 x开始各进制的互换(包括二进制)各类型所占的字节 int 2字节 long 4字节 各类型的取值范围long类型常数后缀l或Lunsigned类型常数后缀u或U常用符号常量的含义 (如NULL=0、
4、EOF=-1)6整型常数正确表示以下选项中不正确的整型常量是_。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答案:C1610-10162310-278答案:B十进制-n进制:除n取余n进制-十进制:7实型:带小数点的数 基本型: 同习惯 指数型:科学记数法 10E各类型所占的字节 float 4字节 double 8字节 各类型的取值范围101010103838308308各类型的有效位 67 位 1516位实型常数正确表示以
5、下选项中不正确的实型常量是_。A0.23E01 B2.3e-1 C1E3.2 D2.3e0 答案:C实型有效位 下列程序段执行后d值为_. void main()int b=0 x12345678; printf(%xn,b); 输出456788字符型:单个字符 或转义符 单个字符或数字 定义变量 char 占1字节字符与字符串的区别 字符数据与整数数据互换运算大小写字母转换 大小 c1+a-A ; 小大 c1-(a-A)字符数字与数值数字转换 字符数值 字符-0;反之 数值+0以下选项中不正确的字符常量是_。An B1 Ca D101答案:C用下列for循环将数字字符逆序输出即从(9到0),
6、其语句为 for(i=0;I10;i+) _;putchar(9-i)或printf(“%c”,9-i); 字符常数正确表示字符ASCII码表示9变量定义 类型说明符 标识符;标识符:字母、数字符和底划线组成 第一个字符必须是字母或底划线 字母大小有区别 不允许用保留字 合法的用户自定义标识符是_ 。 Ab-b Bfloat C D _isw 变量初值和赋初值不能将一个数值连续同时赋初值于多个变量变量未赋初值是随机值,使用了static时数值变量为0,字符变量为NULL把x、y定义成float变量,并赋值同一初值3.14是_。A. float x,y=3.14; B. float x,y=2*
7、3.14;C. float x=3.14,y=3.14; D. float x=y=3.14;答案:D答案:C(2) 变量102、构造类型构造类型包括数组和结构(1) 数组数组元素的下标 0n-1数组元素在内存的排序:按行排序数组赋初值: 类型说明符 数组名常量表达式=常量表达式序列; 类型说明符 数组名常量表达式1常量表达式2 =常量表1,常量表2,.,常量表n ; 数组元素的引用数组长度数组定义为int a1111,则数组a 有_个数组元素 。 A、12 B、144 C、100 D、121答案 D11数组赋初值对数组a 正确初始化的是_ 。 A、int a23=1,2,2,3,5.6; B
8、、 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数组元素内存的排序12若输入 3 1 2 3 , 则以下程序的输出结果是_。 #include stdio.h void main() int i, j, n, a10; scanf(%d, &n); for (i=0; in; i+) scanf(%d,&ai); for (i=0; in; i+) for (j=0;
9、jn; j+) printf(%d, , a(i+j)%n); 答案:1, 2, 3, 2, 3, 1, 3, 1, 2, a0=1,a1=2,a2=3i=0j= 0 1 2(0+j)%3 0 1 2 a 1 2 3i=1j= 0 1 2(1+j)%3 1 2 3 a 2 3 1i=2j= 0 1 2(2+j)%3 2 0 1 a 3 1 2数组元素下标为表达式13(2)字符数组 字符串的结束符 0 字符数组长度 字符串的长度 strlen( )与sizeof( )测试长度字符串赋初值 char c10=china; 自动加0 char c10=c, h, i, n, a; 自动加0 char
10、 c=“china”; 自动加0 char c5=c, h, i, n, a; 不加0 char c=c, h, i, n, a; 不加0字符串函数: puts,gets, strcat, strcpy, strncpy, strcmp,strlengets( )读入一个字符串,包括空格有语句printf(%s,s);输出abc。则正确对s赋值的为_。 A.char s=“abc”; B. char s3;s=“abc”; C. char s=a,b,c; D.char s3;s0=a,s1=b,s2=c; 字符串赋初值 答案 A14下列程序段的输出结果是_void main()char a=
11、abcxyz0 xFF; int n,m; n=sizeof(a); m=strlen(a); printf(n=%d,m=%dn, n,m);答案 n=10,m=7字符串长度 表达式strcmp(“box”, “boss”) 的值是一个_。 A、 正数 B、 负数 C、 0 D、 不确定的数 答案 A使用字符串函数 下列程序段的输出结果是_ void main() char s120=Char,s220=for,s10; if(strcmp(s1,s2)printf(%sn,strcat(s2,s1); else printf(%sn,strlen(s2,s1);答案: forChar15(
12、3) 结构结构体类型的定义 struct 结构体类型名 成员表列;结构体变量的定义 struct 结构体类型名 变量1,变量2,.结构体变量使用 结构变量名.成员名结构体变量的存储字节数结构体变量初始化结构数组嵌套结构设有结构定义如下:struct student int num; char name30; float score; stud1;则标准的ANSI C(如TC)下,计算sizeof(stud1)的值为_。 A、9 B、16 C、25 D、36 答案 D16输入10个点的坐标(设坐标为整数值), 输出距原点最远的点(设唯一)的坐标及该点距原点的距离.#include #includ
13、e 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;k10;k+) scanf(%d%d,&pointk.x,&pointk.y); length( ); for(k=1; kpointsub.length 答案:173、指针指针和地址的概念指针变量的定义和初始化指针引用各种指针的定义指针变量 类型名 *变量名;结构指针 struct 结构体类型
14、*结构体指针变量名;指针数组 类型名 *变量名常量表达式;指向指针的指针 类型名 *变量名;指向二维数组的行指针 类型名 (*变量名)常量表达式;返回指针值的函数 类型名 *函数名(形参表)18 对于如下说明,则有意义的正确表达式是: int p3,*a3; A) p=a B) p0=a C) p0=*a D) a0*=2p=a 数组的指针不能赋值p0=a p0是数组元素,a是指针,不能赋值p0=*a *a是a0指针指向的变量值,可以赋值a0*=2 a0=a0*2 地址值*2无意义答案 C指针概念下列程序在运行时可能会出错,原因是_。 # include void main( ) char *
15、s; gets(s); puts(s); 答案 s无指向19指针与变量的关系 int a,*p; p=&a; p 为a的内存地址 *p 为a的值 k:1j:2p(*p=&k)q(q=&j)答案 2 1下列程序的输出结果是_。Int k=1,j=2,*p,*q,*t;p=&k;q=&j;t=p;p=q;q=t;printf(“%d,%d”,*p,k);若变量已正确定义并且指针p已经指向某个变量x,则+(*p)相当于 _。 A、*+p B、+*x C、 *(+p) D、+x答案 D20指向结构体的指针使用 (*指针名).成员名 或 指针名-成员名对于以下的变
16、量定义,表达式_不符合C语言语法。struct node int len; char *pk; x = 2, right, *p = &x;A、p-pk B、*p.pk C、*p-pk D、*x.pk 答案 B. - 运算级优先于*p.pk*(p.pk)p是指针,因此错误21下列程序的输出结果是_。 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);结构的指针指向结构数组
17、答案 10,41,70p+-x: p-x;p+p-y: +(p-y)22指针与一维数组的关系 int a100,*p; p=a; 元素地址 &ai p+i 元素值 ai *(p+i) pi指针与数组函数void f(char s , char t )int k=0; 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=&a5; for(i=0;i4;i+) printf(%d ,pi);答案
18、6 7 8 9特别注意:a=1,2,3,4,5,6,7,8,9,10p023若有定义“int a34,*p=&a00;”,则对数组元素aij(0=i3,0=j4) 正确的引用是( )。Ap=aB*(*(p+i)+j) C*(p+i*4+j)D. *(*(a+i)+j)指针与二维数组的关系 设 int amn,*p=a; 数组 数组的指针 指向元素指针 行元素 ai a+i *(a+i) -元素地址 &aij ai+j *(a+i)+j p+i*n+j pi*n+j元素值 aij *(ai+j) *(*(a+i)+j) *(p+i*n+j) *pi*n+j答案 D24行指针与二维
19、数组的关系 int a34,(*p)4; p=a; 数组 数组元素 数组的指针 指向数组的行元素指针行元素 ai a+i pi p+i 元素地址 &aij ai+j *(a+i)+j pi+j *(p+i)+j 元素值 aij *(ai+j) *(*(a+i)+j) *(pi+j) *(*(p+i)+j) pij若有以下定义和语句,则对w数组元素的错误引用是( )。 int w23, (*pw)3; pw=w; A*(w0+2)B*pw2Cpw00 D*(*pw+2)答案 B25指向字符指针(1)指向数值数组的指针变量的操作规定均适合于指向字符串的指 针变量操作(2)继承了对字符串的整
20、体操作(赋数值、输入/输出)(3)增加了在语句中可以直接对指针变量字符串的赋值下面各语句中,能正确进行赋字符串操作的语句是( )。 Achar s5=”ABCDE”; Bchar s5=A, B, C, D, E;Cchar *s; s=”ABCDE”; Dchar *s; scanf(“%s”,&s);答案 C26二级指针与指针数组下列程序段的输出是_。void main()int a=2,4,6,8,10; *pt=&a0,&a1,&a2,&a3,&a4; int *p,i; for(i=0;itt-1-s答案 wo, s二级指针、指针数组与
21、字符串onetwothreeonetwothreeonetwothree*p+1p+: 设 char *pt4,*p;p=pt; 并设指针数组pt的每个元素指向各自的字符串二级指针 p+i &pti一级指针(字符串) *(p+i)+j pi+j pti+j *(pt+i) +j 字符 *(*(p+i)+j) *(pi+j) *(pti+j) *(*(pt+i)+j)28下列程序的输出结果是_。#include char *f(char *str)return str= two;void main()char *str= one; printf(%s,%cn,f(str)+1,*f(st
22、r)+1);twof(str)twof(str)+1*f(str)-tt+1-u答案 wo,u函数返回指针29二、 运算及流程控制1、基本运算运算符的功能运算符的优先级、结合性和目数特别注意 /、 % 、复合赋值、自增自减若变量已定义并赋值,表达式_不符合语法。A. A*b/c B. 3.14%2 C. 2,b D. a/b/c答案:B下列运算符中,优先级最高是_。 A- B+ C& D= 答案:A302、表达式 各类表达式的组成规则和计算过程 (算术表达式、赋值表达式、关系表达式、逻辑表达式、逗号表达式) 表达式混合运算的类型转换 数据类型的强行转换 (类型名) 数据整/整执行下列程
23、序段 int i,j; 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答案:A31表达式A+B的类型为( ) Achar B int Cdouble Dvoid高 double float long unsigned unsigned short 低 int char,short32两个关系符之间要用逻辑符连接表示“xyz”的C表达式是_。 答案:xy&yz对于char c;判别c不是大写字母的表达式为:答案:cZ| cA?1:0 逻辑表达式的等价
24、于int i,j; 表达式!i|j等价于_ A) !(i&j) B) !(i&!j) C) !(i|j) D)!(i|!j)i j !i|j A)!(i&j) B)!(i&!j) C) !(i|j) D)!(i|!j)0 0 1 1 1 1 00 1 1 1 1 0 11 0 0 1 0 0 01 1 1 0 1 0 0答案:B33 a,b为整型变量,两者不同时为0,以下关系表达式中恒成立的是_ 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,ab的4中情况 ,并注意 整数/整数=整数ab A
25、) 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=aab当ab 设a=mb+n m1的整数,nb的整数 a/b*b+a%b=(mb+n)b/b+(mb+n)b%b=mb+n=a答案:D34逻辑表达式从左到右的顺序计算运算符两侧的操作数,一旦已经能明确答案了,剩余计算就不再做了已知int i=1,j;char a=a;执行j=!a&i+后,i和j的值分别是( ) A. i=1,j=1 B.i=2,j=1 C.i=1,j=0 D.i=2,j=0答案:C复
26、合赋值运算符 int a=12;a+=a-=a*a;printf(a=%d,a);a+=(a=a-a*a)a+=(a=12-144)a+=(a=-132)a=a+(-132)=-132-132a=-264答案:a=-264353、语句 表达式语句、空语句、复合语句; 简单控制语句 break、continue、return 选择控制语句 if、switch 重复控制语句 for、while、dowhile 函数语句(1)条件语句 if(表达式) 语句1 else 语句2 表达式是任意表达式,但 0 xy 是无意义 ifelse的匹配原则:按近者匹配条件语句与条件表达式 表达式1?表达式2:表达
27、式3 互换36当int a=1,b=2,c=4,d=3时,执行下面一段程序后,x为_。if(ab) if(cd) x=1;else if (ac) if(bd)x=2; else x=3; else x=6;else x=7; A、 1 B、 2 C、3 D、6 if(ab) if(cd) x=1; else if (ac)if(b0)y=y+1;else y=y+y; A. 20 B. 11 C. 9 D. 0答案:Aa=0 表示:对a充0表达式的值为037将下段程序用赋值语句等价表示_.if(x0) y=1; else if (x=0) y=0; else y=1;条件表达式 与 if 语
28、句互换答案 y=x0) ?-1:(x=0?0:1)38(2)switch语句 switch(表达式),表达式是可以整型表达式、字符表达式、枚举数据 case 后是常数,选择某分支执行,只要不遇到break一直到结束 与条件语句的互换下列程序段的输出结果是 。 int k=1, s=0;switch (k) case 1: s+=10; case 2: s+=20; break; default: s+=30; printf(“%d”,s); 答案:3039(3)循环语句 while、dowhile、for 的各自意义、区别、互换 break、continue出现在循环体的意义 循环嵌套 for
29、循环for(s=0,i=0;i10;,s+=i,i+); 语句,请用while循环等价表示 _。 答案:s=0,i=0;while(i10)s+=i;i+; 循环语法 int i=0,s=0,a10; while (i10) s+=ai+; 等价于 int i,s,a10; for (_);答案:i=0,s=0;i10;s+=ai+40 下列程序段执行后s值为_. int i=1,s=0; doif (!(i%2) continue ; s+=i;while (+i10);A) 0 B) 45 C) 25 D) 以上均不是 i !(i%2) continue s=s+i (i=i+1)10 1
30、 0 s=0+1 i=210 1 2 1 i=310 1 3 0 s=1+3 i=410 1 4 1 i=50a:从02550 共循环256次所以共做b+; 256次 b=25742下列程序的输出结果是_。# 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 32767x=12x=12+2=14x=14+2=16.x=32766+2=-32768(32766+1=01111111 11111111
31、 32767+1=10000000 00000000-32768的补码=10000000 00000000)x=-32768+2=-32766.x=-2+2=0则k的值即为循环次数计算x正值循环次数:(32766-12)/2=16377x负值循环次数:32768/2=16384x=32766到x=-32768 1次k=16377+16384+1=3276243 用for循环打印 0 1 2 0 1 2 0 1 2; for(i=1; i=9;i+) printf(%2d,_);循环打印i 输出1 02 13 2(i-1)%3 将26个英文字母按aAbBcCzZ依次打印; for(i=0; i2
32、6;i+) printf(%c%c,_);a+i,A+i44循环控制 int i, s,a10; for(i=0, s=0; i10; s+=ai+) if (ai0) break; 等价于 int i=0, s=0,a10; while(_) s+=ai+; 答案 i=045四、数据的输入和输出 putchar( )、getchar( ) printf(输出格式控制,输出表列); scanf(输入格式控制,地址表列) 输入/输出格式控制注 (1) 格式控制中的普通符 printf()照原样输出,而scanf()作为输入数据的分割符 (2) %c 将空格分割符作为符号输入 %s 将空格作为分割
33、符处理(3)一般格式说明与输出表列的个数、类型必须一一对应 若格式符的个数输出对象的个数,多余格式符按零值输出 若格式符的个数输出对象的个数,多余输出对象无用46设变量定义为“int a,b;”,执行下列语句时,输入_,则a和b的值都是10。 scanf(a=%d, b=%d,&a, &b);A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10 答案:D答案:D若a是基本整型变量,c是单精度实型变量,输入语句_是错误的。 A、scanf(”%d,%f”, &a, &c); B、scanf(”d=%d, c=%f”, &a,
34、&c); C、scanf(”%d%f”, &a, &c); D、scanf(”%d%f”, a, c); 输入数据的分割符 输入对象是地址 47对于int i;char c,s20;当输入序列为123ab45efg时,执行语句scanf(%d%*c%c%s,&i,&c,s);123,b,45efg B. 123,a,b45efg A. C. 12, 3, ab45efg D. scanf语句有错执行语句 printf( _, A); 将得到出错信息。 A%d B%o C%x D%f 输出对象与格式控制符类型匹配 答案:D答案:A48输出打印结果_ voi
35、d main() int a=1; long b=a*0 x12345678; printf(%xn,b); 在TC(ANSI C)为2个字节,只能表示4位16进制数 所以%x输出4位16进制数,故输出低字节的4位5678 %lx 输出4位16进制数,改用%lx ,输出12345678 长整型(%ld)可以输出整型数,反之有问题输出5678若格式符的个数输出对象的个数,多余输出对象无用输出打印结果_char a5=ABCD,1234,BOMB; printf(%s,%c,*a+1,*a2+1);491、函数函数的定义 类型名 函数名(形式参数表) 形式参数说明 说明部分 语句部分 函数的类型缺
36、省为整型 类型名 函数名(类型名 形式参数) 说明部分 语句部分 函数返回值 return(表达式)函数调用虚实结合 形参与实参的个数、位置、类型一致数据传递 变量 值传递 数组、指针地址传递递归函数的阅读 递归函数与循环的互换常用库函数使用五、函数与程序结构返回指针值的函数 类型名 *函数名(形参表)50在C语言程序中,若对函数类型未加显式说明,则函数类型为:A、void B、double C、char D、int要调用数学函数时,在#include命令行中应包含_。 A、 ”stdio.h” B、 ”string.h” C、 ”math.h” D、 ”ctype.h” 函数类型库函数引用答
37、案 D答案 C51下列程序的输出结果是_。 #include int c;void p(int *x,int y) +*x;y-; c=*x+y;void main() int x=3;c=3; p(&x, c); printf(%d,%d,x, c); 答案 4,6 函数定义为 int calc(int n; int a5) .; 并有变量定义 int *p,(*q)5,a5,n; p=&n;q=a; 下列哪个调用语句为正确_ A) calc(*p, q); B) y=calc(p,*q); C) calc(n,&a); D) 以上均不行虚实结合 答案 A52对于以下
38、递归函数f,调用 f (3) 的返回值是_。f (int n) return (n=0) ? n:f(n-1)+f(n-2) ); f(3) f(2) +f(1) f(1)+f(0)f(0)+f(-1)-10 -1-1-10-2答案:-2 函数递归53输入一个字符串,要求递归逆向输出该字符串#include 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 *pf
39、(“12345”)f(“12345”)f(“12345”)f(“12345”)f(“12345”)f(0)5432154下列程序的输出结果是_。#include char *f(char *str)return str= two;void main()char *str= one; printf(%s,%cn,f(str)+1,*f(str)+1);twof(str)twof(str)+1*f(str)-tt+1-u答案 wo,u函数返回指针552、变量、函数的作用域变量作用域局部变量函数内部定义的变量,在本函数范围内有效全局变量函数外部定义的变量,其有效域为从定义变量的位置起到本源程序文件结
40、束。当外部变量与内部变量同名时,在局部变量的有效域内外部变量不起作用。函数作用域 函数从定义点起到源程序结束。 若使用超出函数作用域须声明 extern 类型名 函数名( ) 被调用的函数类型是int类型可以缺省声明存储类别 auto 、static 、register 、extern带static与不带static变量赋值的区别56 C语言中,形参的缺省的存储类说明是_。 A、 auto B、static C、 register D、extern 答案 A变量的存储类以下程序的输出结果是_。 #include int z; void p(int *x, int y) +*x; y-; z=*
41、x+y+z; printf(%d, %d, %d#, *x, y, z);void main() int x=1, y=5, z=9; p(&x, y); printf(%d, %d, %d#, x, y, z); 变量的作用域p(&x, y); 1 5+*x;-x=2 y-;-y=4z=*x+y+z;-z=2+4+0=6printf(%d, %d, %d#, *x, y, z);-2,4,6#printf(%d, %d, %d#, x, y, z);-2,5,9#注: z全局变量初值为0全局局部57 执行完下列语句段后,其输出为:# include int f(int m)
42、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变量58下列程序的输出结果是 _.#include int s;int f(int m) static int k=0; for(; k=m; k+) s+; return s;void mai
43、n( ) s=f(2)+f(2); printf(%d#%d#, s, f(20);答案 24#24#f(2)k=0,s=1k=1,s=2k=2,s=3k=3返回3f(2)k=3s=3返回3s=f(2)+f(2)=6f(20)k=3,4,20循环18次s=6+18=24注意:函数参数计算次序:从右到左593、程序结构 C程序三种基本结构是顺序结构、选择结构和_结构。 A递归 B转移 C循环 D嵌套 C程序中可以对程序进行注释,注释部分需用_括起来。 A、 和 B、和 C、“/*”和”*/” D、“*/”和”/*” C语言源程序文件经过编译连接之后生成一个后缀为_的文件。 A”.c” B“.ob
44、j” C“.exe” D“.bas”答案 C答案 C答案 C C语言从源程序到能运行,要按序进行_。 A连接、编译、编辑 B连接、编辑、编译 C编辑、编译、连接 D编译、编辑、连接 答案 C60六、 命令行传递参数格式 命令名 参数1,参数2,.,参数nmain(int argc, char *argv) 其中 argc 存放命令行的字符串个数,包括命令名 n+1 argv0 存放命令名,包括路径 argv1 存放参数1 argv2 存放参数2 . argvn 存放参数n指针作为函数参数,返回数据61将程序prog.c编译后运行:prog nla hello world 则 *(*(argv+
45、2) 是_。A、p B、- C、h D、w 答案 C 下列程序编译后生成 t.exe, 运行 t input output zoo oil 的输出结果是_。void main(int argc, char * argv ) int k; char *p=argv1; for(k=2; k0) p=argvk; printf(%sn, p); inputpp与output zoo oil比较取大值存于p大值为zoo62七、宏定义宏展开是字符串替换,带参的再替换参数。下列程序段的输出是_。#define f(a, b, x) a*x+b printf(%d, %dn, f(3,2,1), f(6,
46、 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)63执行以下代码后,将输出_。 #define FOR while(x-); int x=3,y=0; FOR y+; printf(x=%d, y=%d,x,y); 宏定义引起语句结构变换宏替换后 int x
47、=3,y=0; while(x-); /*注意最后的;*/y+; printf(x=%d, y=%d,x,y); 答案 x=-1,y=164下列程序的输出是_.#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 10; x += 50) P2(x, 9.15*x+32);答案:a=1 a=489P2(x, 9.15*x+32) P(a);P1(b); P(x);P1(9.15*x+
48、32);P(x);printf(a=%dn, (int)(a); printf(a=%dn, (int)(x); P1(9.15*x+32); P(a);putchar(n);printf(a=%dn, (int)(a); putchar(n);printf(a=%dn, (int)(9.15*x+32); putchar(n);最后printf(a=%dn, (int)(x); printf(a=%dn, (int)(9.15*x+32); putchar(n);要点:1句宏便3个语句 循环体只有1个语句x=51x=165八、typedef定义类型typedef 原类型名 新类型名表用typ
49、edef定义一个10个元素的整型指针数组类型ARR,再用ARR定义一个10个元素的整型指针数组a。 。 特殊 typedef int NUM100; NUM是整数数组类型 NUM n; n为数组变量n100 typedef char *STRING; STRING是字符指针类型 STRING p,s10; p为指针变量,s为指针数组 typedef int (*POINTER)( ); POINTER是指针函数类型 POINTER p1,p2; p1,p2为指针函数变量答案 typedef int *ARR10; ARR a;用typedef定义一个文件指针FP。 答案 typedef FIL
50、E *FP;66九、位运算 记住各种位运算符 按位取反 字位右移 & 按位与 | 按位或 按位加 负数为补码运算,补码=反码+1 若有以下说明与语句,则以下的输出结果为:char a=010,b=10; printf(%dn,a(b2);b2 10=128 =10102 10102=102a=0108=10002100010=10102=10答案:10表达式(42)的值是_答案:-174=1002 1002=10000 10000=11101111 最高位为1是补码反码=补码-1=11101111-1=11101110 11101110=10010001=-1710 67下列程序用于实
51、现从键盘上输入一个正整数,左移三位,并将移位后的数以二进制数输出。# include void main() int m,n.i=0,j; int bb16; scanf(“%d”,&n); m=_; while(m0)bbi=m%2; _;i+;printf(“%binary number is:”);for (_) printf(“%d”,bbi);答案:n=0;j-68十、文件 文件指针定义 FILE *文件指针名 标准输入 stdin 键盘 标准输出 stdout 显示屏 标准出错输出 stderr 显示屏打开文件 FILE open(路径与文件名,文件类型) 成功返回文件柄,
52、失败返回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(文件指针,格式字符串,输入表列);69文件结束标记 EOF= -1文件结束判断 int feof(FI
53、LE *stream) 结束位置,函数返回值非0,否则返回0。EOF不是结束位置文件关闭 close(FILE *stream)文件数据的读写必须使用函数,不能用文件指针直接操作while(!feof(fp)c=fgetc(fp); ch=fgetc(fp);while(ch!=EOF) ch=fgetc(fp);70 下面的程序把文本文件test.txt中的*过滤后输出 #include main() int c;FILE *fp; if (_) printf(“Can not open filen”);exit(0); while(_) if (c!=*) putchar(c); fclo
54、se(fp) 答案: (fp=fopen(“test.txt”,”r”)=NULL (c=fgetc(fp)!=EOF printf(“%s”,a); 请用fprintf文件输出函数等价表示_。 答案: fprintf(stdout,”%s”,a); 71十一、自增自减对操作的变量在运算前或后使其值加(自增)或减(自减) 11.变量与自增自减下列程序段的输出结果_int a=0,b=0;if(+a0&+b0)+a;printf(a=%d,b=%d,a,b);if(+a0&+b0)+a; 1 0 1 0 1 a=1+1=2 答案 a=2,b=1若变量已正确定义并赋值,表达式 -k+ 等价于_。 A-(k+) B(-k)+ C-(k+1) D-(+k)答案 A722.逗号表达式与自增自减下列程序段的输出结果_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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届内蒙古乌兰察布市名校物理九上期末教学质量检测模拟试题含解析
- 2026中国汽车MCU芯片短缺背景下供应链重构策略
- 2026石榴粥行业市场供需分析及投资评估规划分析研究报告
- 2026中国网球行业市场分析供需及投资评估规划分析研究报告
- 2026中国工业软件云化转型与制造业数字孪生系统实施路径报告
- 2027届山东省曲阜市昌平中学九年级化学第一学期期末联考试题含解析
- 2026生产行业市场深度调研与发展规划与投资战略研究报告
- 2026生物医药行业市场动态分析及发展方向与投资管理策略研究报告
- 2026江西吉安市中医院面向社会招聘聘用制医师3人考前冲刺密卷及答案详解(各地真题)
- 2026年福建省漳州开发区公开招聘编内教师18人笔试题库带答案详解(夺分金卷)
- 校外培训机构风险分级分类管控方案
- 2026湖北黄石市阳新县事业单位统一招聘107人笔试备考题库及答案详解
- 2026下半年上海杨浦区卫健系统事业单位公开招聘93名专业技术人员笔试参考题库及答案详解
- 2026下半年四川成都市大邑县教育系统招聘编外教师教师146人笔试题库附答案详解(轻巧夺冠)
- ×××信息化项目验收报告
- 宁德市福安市2026学年数学三年级下学期期末综合测试试题(含答案)
- GA/T 1043-2025智能交通管理系统前端设备运行维护规范
- 2026年北京市海淀区八年级政治下册期末考试试卷及答案
- 2025年中国陶粒支撑剂市场调查研究报告
- 2026-2030中国无缝钛管行业现状规模与前景趋势研究报告
- 2026贵州航天医院助理全科医生(西医)培训招录25人备考题库及答案详解(基础+提升)
评论
0/150
提交评论