信管09认识实习指导书_第1页
信管09认识实习指导书_第2页
信管09认识实习指导书_第3页
免费预览已结束,剩余32页可下载查看

下载本文档

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

文档简介

1、信管 09 认识实习指导书C 语言提高篇)出原、李步升编写1、C语言程序设计初步知识、知识点1、程序的构成c语言程序的格式如下例 1-1:,y是形式参数函数返I川数值是整型n iai n()nt a = 5,b=6,c;:=ad理, ?调用函数('號途、*b是实参胳个函数得到一个数值 就是Add函数的返回数值。z=x+y;return匚*就是这个add函数计算后得到的结呆,就是函数返回给主程序int add ( int 人,int y)调用函数的返回数值。程序是在从上往下顺序执行,当碰到了函数add后,把a, b的数值穿给调用西数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的

2、往下执行说明:程序山函数构成,有且仅有一个主函数,从主函数中读起,在主函数中结朿。2、函数的构成函数由函数名和函数体构成,函数体又由函数声明部分和函数执行部分组成。声明部分就是把已知条件存放到计算机内存中,执行部分就是运算及把运算结果输出来。3、C语言的基本词法C语言的基本词法由三部分组成:符号集、标识符和关键字(保留字)。标识符就是用于标识的字符,由数字、字母和卜-划线构成,不用是数字开头,最好不要超过 8个字符。 关键字主要是数 据类型,语法控制等字符。转义字符:n换行, 一个反斜杠,'单引号,”双引号,t水平制表符4、数据类型数据类型的作用就是给每个数据在内存中分配适当的内存空间

3、。数据类型可以分为三类:基本类型结构类型派生类型整型int字符型char实型(浮点型)float空类型void结构体struct共用体union枚举型enum 用户定义类型typedef数组类型指针类型5、整型数据它乂分为基木类型(int),长整型(Iong int),矩整型和无符号整型。慕木类型在内存中分配两个字节,长整型分配4个字节。C语言中的整型常量有三种表示形式:十进制、八进制(以数字 0开头)和十六进制(以 Ox开 头)。6、 字符型:单个字符用单引号括起来,字符串用双引号括起来,分配1个字节。7、实型数据:分为单精度 float ( 4个字节)和双粕度 double (8个字节)。

4、实型常量可以采用指数形式表示,如123.2可以表示为1.232e2或1.232E2,e前有数,e后为整。8、C 语言运算符C语言运算符冇五类:算术运算符、逻辑运算符、关系运算符、赋值运算符和条件运算符。(1) 算术运算符: +、? 、*、/ 、% (两个整数相除值为整,求余运算的数值必须为整数)(2) 关系运算符: V、 >、 <=> >=、 =、!=( 两个数运算后的结果要么为真,要么为假,真用 1 表示,假用 0表示 )(3) 逻辑运算:逻辑与 &&,逻辑或 II, 逻辑非 !&&:两者为真则为真,有一者为假则为假II :有一者为真则

5、为真!: 非零的数就为假, 0 为真说明:多个 &&运算时,只有前面的为真才需要去计算后面的,如(a=3)&&(b=0)&&(c=6), 此 时 c=6 的运算并不发生 ; 多个逻辑或运算则相反。(4) 赋值运算符: =, 复合赋值运算符 +=, -=,*=,/=,%= 的运算可以先把等号右边的数值用括号 括起 来,然后运算,如 aa+b 等价于 a=a*(a+b)(5) 条件运算符:表达式 1?表达式 2:表达式 3,表达式 1 成立,整个表达式就取表达式 2 的值, 否则取表达式 3 的值。(6) 逗号运算符:用逗号相隔的多个表达式取最后一个

6、表达式的值当作整个表达式的值。说明:各类运算符的优先级为“非算关与或赋逗”。9、不同类型数据间的转换和运算 存储空间小的数据可以往大的转换,即字符型可以转换为整型,整型可以转换为实型。 强制类型转换: ( 数据类型 ) 数据,如 (int) (a+b) 。二、习题精选1. 一个 C 程序可以包含任意多个不同名的两数,但有且仅有一个 (B), 个 C 程序 总是从 (B) 开始执行。(A) 过程(B)主函数(C)函数 (D)include2. C源程序是由(A)构成的(A)函数(B)函数和过程(C)超文木过程(D) 了程序3. 下列字符串是标识符的是 (A)(A) _HJ(B) 9_studen

7、t (C) long4. C 语言提供的合法关键李是 (A)(A)break(B)print (C)funition (D)end5. C 语言屮不能用來表示整常数的进制是 (D)(A)十进制(B)十六进制(C)八进制(D)二进制6. 在 C 语言小,反斜杠字符是 (D)(A) n (B) t (C) v (D)7. 下列常数中,不合法的 C 常量是 (B)(A)-0x3bl(B)123e+2.3(C)''(D)6e+7&写出下面程序的输出结果 (A)main()int x,y,z;x=y=1;z=x+-l;printf("%d,%df',x,z);

8、z+=-x+(+yll+z);printf("%d,%cT,x,z);(A)2,0 3,-1 (B)2,l 3,0 (C)2,0 2,1 (D)2,l 0,19.写出下面程序的输出结果 (A)main()int I,j ;1= 16; j 二(l+)+l;pri ntf( % d",“;I=15;printfC%d %d",+I,I);(A)32 16 15 (B)33 15 15 (C)34 15 16 (D)34 16 1510. 写出下面程序的输出结果 (D)main()int x=40,y=4,z=4;x = y = =z;pi*intf("%d

9、'',x);x = x = = (y-z);printf( “%d",x);(A)4 0 (B)4 1 (C)l 1 (D)l 011?为表示关系x>=y>=z,应使用C语言表达式(A)(D)(x>=y)&(y>=z)(A)(yv=x)&&(y>=z) (B)(x>=y)AND(y>=z)(C)(x>=y>=z)12.用C语言描述下列命题(1) a小于b或小于c(2) (a<b)ll(a<c)(3) a和b都大于c(4) (a>b)&&(a>c)(5)

10、 a或b中冇一个小于c(6) (a<c) ll(b<c)(7) a是奇数(8) a%2!=0都是普通字符。(2) 格式字符%c:输出一个字符; %d:输出一个整型数; %ld: 输出一个长鉴型数;%f:输出一个实数;%lf:输出一个双精度的实数;(3) 附加说明%后有+或号:加号表示右对齐项表一个字制来着的字符齐五前空一1. main() 以下程序的输出结果是 (9 1117)2、顺序结构、知识点1、c 语言语句的分类: 表达式语旬、控制语句、函数调用语旬、空语旬和复合语句。表达式语句:如a=3;ca+b等控制语句:如:if(a>b) c=a; for语句和while语句和s

11、witch语句等 函数调用语句:函数名 (实参表 ) ; 空语句: ; 这条语句的含义是什么也不做。复合语句:语句1;语句2;,其功能上和当于一条语句。2、数据的输入和输出(1) 输入函数scanf ()函数,格式为 scanf ( 格式控制 , 输入项表 ), 如 scanf ("%d,%f',&a,&b);该函数的运行过程是人首先根据双引号内的格式输入数据,然后电脑把这些数据存放到输入 屮的地址屮去。Gctchar ()函数,该函数为无参函数,即括号内没冇参数,其作用是要求人在键盘上输入 符。(2) 输出函数Printf ()函数, 格式为 printf

12、( 格式控制,输入项表 ), 如 printf( u%d,%f,a,b);该函数的运行过程是计算机从输入项表屮去获取要输岀的数据,然示根据双引号中的格式控 输出。Putchar ()函数,如putchar (a);其作用就是车刖入变量a的字符数据。3、格式控制说明(1)格式控制包含两部分:一是普通字符,这部分内容被简单的复制到显示;二是后跟为格式字符。如:printf ("a=%d, b=%f,'” b);这条语句中“a=” ;"和“b="%e:以指数形式输岀一个实数;%s:输出一个字符串,直到遇到 “0”%p:输出变量的内存地址 %:输出一个减号表示左对

13、齐,默认为加号;%后有数字:如 5.2 化其含义为小数点示保留两位,当位数不够五位时,在前面加空格凑位,超过吋按实际大小输岀,小数点算一位。如:printf( %5.2化a=1.4);输出吋先在数字格, 然后输出 1.40、习题精选int 1=011,j=ll,k=0xll;printf ( “d,%d,%drT,I,j,k);2. 以下程序的输出结果是 (6 0 6 102)main()char cl='6', c2 二'0'('6'二 54<0=48)printf(“c,%c,%d,%clrT,c 1 ,c2,c 1 -c2,c 1 +

14、c2);3. 以下程序的输出结果是 (1 0 3)main()int a = -1 ,b = 4, k;k = ( +a <= 0) && !(b - <= 0);printf ( “d %d %diT,kab);4. 若有定义:int x,y; chnr a,b,c;并有以下输入数据(此处,vcr>代表换行符)1 2<cr>A B C<cr>则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序 段是:C(A) scanfC'x=%dy=%d,&x,&y);a=gctchar();b

15、=gctchar();c=gctchar();(B) scanf("%dy%cT,&x,&y);a=getchar();b=getchar();c=getchar();(C) scanff<%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);(D) scanf( “d%d%c%c%c=&x,&y,&a,&b,&c);5. 在scanf函数的格式控制中,格式说明的类型与输入项的类型应该一一对应匹配。如果类型不匹配,系统将(B)o(

16、A)不予接收(B)并不给岀出错信息,但不可能得到正确数据(C)能接收到正确输入(D)给出出错信息,不予接收输入三、实验题1. 从键盘输入一个人写字母,要求改用小写字母输出 ;2. #include“stdio.h"3. main()4. char x;5. scanf( “c'',&x);6. x+=32;7. printf("%c ”,x);8. 9. 编写程序,判断某一年是否闰年;# include<stdio.h> main() int a;Scanf(“d”,&a)If(a%4= = 0&&a%100!=

17、0|a%400= = 0) &&a%100!= 0)Printf(4<%d is runnian");ElsePrintf(u%d is not runnian'')10. 求方程ax2 + bx + c的解x的程序;# include<stdio.h># include<math.h>void main()float xl,x2,m,a,b,c; printf (” 请输入:”);scanf(H%fx*x+%fx+%f',&a,&b,&c);if(a=0)x 1 =x2=-c/b,prin

18、tf("%f,%f",x 1 ,x2);else if(m=b*b-4*a*c)<0)printf("bu cun zai");elsex 1 =(-b+sqrt(b*b-4*a*c)/2*a); x2=(-b-sqrt(b*b-4*a*c)/2*a); printf( H%f,%fxl,x2);3、选择结构、知识点1、用if语句来实现选择结构两种形式:形式1:讦(表达式)语句;形式2: if (表达式)语句1 ;else语句2;运行的过程:如果表达式成立,就运行具后的语句。否则跳过,运行后面的语句。说明:else总是跟前面最近不带else的if

19、了旬相结合。例如:void mai n()float score;clrscr();scnn f( ” f',& scow);if(scorc>=90)printfCExcellent!0);else if(score>=80)2、用switch语句实现多分支选择结构 格式为:Switch (表达式)case常量表达式1 :语句1:case常量表达式2:语句2;printf( uVery Good!"); else if(score>=70); prin tf(HGood!");else if(score>=60); printf(u

20、Not Bad!");elseprin tf( ,Bad!H);default:语句 n;运行过程:首先去求解switch ()里的表达式的值,然后用这个值跟case后面常量表达式的值进行匹配,当值相等时运行具后的语句,如果都不匹配则运行default后的语句。例如:void mai n()switch(y)int x=l,y=0;case O:printf("x=l y=0n ”);break;clrscr();Hcase l:printf("y=ln );break;switch(x)case 2:pri ntf("x=2nM);case 1:3、选

21、择结构的缺套If语句和switch ()语句都可以嵌套使用。二、习题精选1. 能正确表示x的収值范围在 0,100和卜10,-5内的表达式是(x>=0&&x<=100) (x>=-10&&x<=-5) o2. 以下程序的运行结果是(2 11)。Mai n()in t c,x,y;x= 1; y= 1; c=0;c=x+ II y+ ;printfC'n%d %d %drT,x,y,c);3. 以下程序的运行结果是(100)oMai n()in t c,x,y;x=0; y=0; c=0;c=x+ && y+;pri

22、ntf(un%d %d %drf: x,y,c);4?两次运行下面的程序,如果从键盘上分别输入6和4, 则输出结果是(75)oMai n()int x;scanf( % &', &x);if(x+>5) printf ( “else printf(u%dn,x);火対写出下而程序的运行结果(1 70)Mai n() int x= 1, y= 1 ,z=0;if(z<0)if(y>0) x=3;else x=5;prin tf( u%dt,x);if(z=y<0) x=3; else if(y= = 0)x=5;else x=7;printf( u

23、%dt,x);printfC*%dt 5,z);6以卜?程序段的运行结來是(10 2)oint x=l ,y=0;switch(x)case 1:switch(y)case 0: prin tfC'x=l y=On ,);break;case 1:pri ntfC'x=ln”);break;case '2':pri ntf("x=2nJ;二、实验题1. 编写一程序,要求由键盘输入三个数,计算以这三个数为边长的三角形面积。2. 输入圆的半径和一个整型数k,当k=l时,计算圆的面积;当k=2时,计算圆的 周长;当k = 3时,既要求出圆的面积也要求出圆的周

24、长。编程实现以上功能。3. 根据以下if语句写出鸟其功能相同的switch语旬。(x的值在0-100之间)讦语句:if(x<60) m=l;else if(x<70) m=2;else if(x<80) m=3;else if(x<90) m=4;else if(x<100) m=5;#in clude "stdio.h",mai n()int x;sea nf("%cT', &x); switch(x/10) case 10:case9:pri ntf( Hm=5H);break;case 8:pri ntf( um

25、=4n);brcak;case7:pri ntf( Mm=3n);break;case6:printf( m=2H);break; default:printf("m=r,);4、循环结构、知识点1、for循环语旬格式为:for (表达式1;表达式2;表达式3)语句;运行流程为:首先运行表达式 1,然后运行表达式2,当表达式2成立吋,运行后血的语句,运行完后 运行表达式3,然后运行表达式2,如果此时表达式2 乂成立,则运行后面的语句,然示再运行表达式 3,依次运行下去,直至表达式 2不成立就不在运行该循环语句。例如 main() int n;clrscr();for(n=100; n

26、<=2(X); n+)if(n %3=0) con ti nue; prin tf(H%5d,n);2、while语句和do-while语句 While语句格式 为:表达式1;While (表达式2)语句;表达式3;例如:void mai n()int i;float sum,a; clrscr(); sum=();a=l;void mai n() int x=3;clrscr();Do-while语句格式为:表达式1;Do表达式3;while (表达式 2);while (!(a<0.0001)sum+=a; a*=? 1/2.0;printf( Hsum=%f",su

27、m);doprintf( H%3dH,x-=2);whilc( x);While 和 do-while 的区别就是当表达式 1的值一开始就不满足表达式 2时,他们的运行结果 不一 样。3、总结:三种循环结构的衣现形式只是书写形式的不同,没有太多的差别。4、循环的嵌套 , 他们可以相互嵌套。5人 break 禾口 continue 语句Break语句是强制性的退出循坏语句或switch语句,不再运行,而con ti nue语句是小止一次。二、习题精选1、在do-while循环中,循环山do开始,用while结束;必须注意的是:在 while表达式后面的 (C)不能丢,它表示do-while循环的

28、结束。(A) 0(B) 1(C);(D),2、 for语旬中的表达式可以部分或全部省略,但两个(C)不可省略。但当三个表达式均省略后,因缺少判断条件,循环会无限制地执行下去,形成死循环。(A) 0(B) 1(C);(D),3、程序段如下:int k=0;while(k + <= 2); printfflast = %dn'',k);则正和的执行结東是 last = (4 )4、执行下面的程序后,a的值为(8)main() int a , b;for( a=l , b=l ; a<=100; a+) if(b>=20) break;if(b%3 = = 1) b

29、+=3;conti nue;)b-=5;5、分析下列程序main(D) int n , I,j,k;for(I=0; I<3;I+)nUJ=O;k=2;for(I=0;I<k;l+)for(j=0;j<k;j+)nj=nI+l;printf( <<%dn,nl);(A) 2(B) 1(C) 0(D) 36、下面程序的输出结果是 (A )main() int n = 0;while(n+ <=1)prinlf(“df,n);printf("%dn",n);(A) 1 23(B) 0 1 2(C) 112(D) 1227. 当输入为 ” qu

30、c t 厂时,下面程序的执行结果是 (B)main() char c;c=getchar();while(c=getchar() !='?') putchar(+c); J(A) Quert (B) vfsu (C) quert? (D) rvfsu?&当输入为 ”quc t 厂时,下面程序的执行结果是 (A)main()while(putchar(getchar()!= 9 5);(A) quert (B) Rvfsu (C) quert? (D) rvfsu?三、实验题1. 求 100-200 间的全部素数2. 编一程序,将 2000 年到 3000 年中所有的闰年

31、年份输出并统计出阳年的总年数,要 求每 10 个闰年放在 - ?行输出。3. 球从 200 米高度自由落下,每次落地后反跳回原高度的四分之一,再落下。编程求它第10 次落地吋共经过的路程及第 10 次落地后反弹的高度。分析:该题也是进行多次加操作、求蝕终和的问题。在这里要定义一个变虽(sum)记录小 球反复落地总共经历的高度,还要定义一个变最(high)表示小球每次反弹起来的高度。需要注意的一点是,小球笫一次落地时经历的路程为初始高度,即 sum 初值为 200,在笫一 次落地后, sum 中每次累加 的是两倍的 high 值 ( 弹起和再落下 ) ,这个过程只需再重复九次 即可。正确答案:共

32、经过 333.33 米 , 第 10 次反弹了 0.000191米5、函数、知识点1、函数的定义方法 函数的一般形式为:函数返回值的数据类型函数名(类型名形参1,类型名形参2,)声明部分执行部分说明:1)第一行为函数首部,大括号内的内容为函数体; 2)函数名和形参名都是标识符,必须满足 标识符命名规则;3)在一个函数体内不能再定义一个函数: 4)函数的数据类型缺 省时默认为整型; 5)有些函数没有形参变量。2、 函数定义时,括号内的参数为形参,若被调用时括号内的参数为实参,如下面的程序中main()函数为主调函数,而add()函数则是被调函数,在程序的运行过程屮,实参把值单向的一一对应的传递给

33、形参。niai n()int a = 5,b=6,c;int乙int add (int x, ,in ty) _ 调用函数,形式参数瘟数返冋数值是整型就是这个add函算后数返回给主程序:=adQgQj七调用函数z=x+y;n*intf('诊是实参return匚胳个函数得到一个数值数计就是的返回数值。 程序是在从上往下顺序执行,当碰到了函数add后,把a, b的数值穿给调用西数, 程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行3、函数的调用函数调川时,被调函数一般应该放在主调函数前,如上面的程序,add()函数的定义应该放 在main()函数前,否则应该在主调函数的声明部

34、分对被调函数进行声明,也就是把被调函数的首部加一个分号写在主调函数的声明部分,如上面的程序应该在int a = 5,b=6,c后加上一 句int add (int x, inty);否则程序会报错。4、 函数若需要返回值,必须通过return语句进行返回值。5、 一个函数在定义时,若直接或间接调川到自身,称为函数的递归调丿J。例如:float fac(int n)float f;if(n=0lln=l) f=l ; else f=fac(n-l)*n; return f; main()float y; y=fac(5);)二、习题精选1、以下说法正确的是 C o(A) 用户若需调用标准库两数

35、, 调用前必须重新定义(B) 用户可以重新定义标准库函数 , 若如此,该函数将失去原有含义(C) 系统根本不允许用户重新定义标准库甫数(D) 用八若需调用标准库函数,调用前不必使用预编译命令将该函数所在文 件包括到用户源文件中,系统自动去 调用.2、以下函数形式正确的是 D o(A) double fun(int x,int y) int z=x+y;retum z; (B) fun(int x,y) int z;return z;)(C) fun(x,y) int x,y; double z;z=x+y; return z; (D) double fun(int x,int y); doub

36、le z; z=x+y;retum z; 3、 关于C语言以下说法正确的是 Ao(A) 实参和与其对应的形参各占用独立的存储单元(B) 实参和少其对应的形参共占用一个存储单元(C) 只有当实参和与其对应的形参同名时才共占用存储单元(D) 形参是虚拟的,不占用存储单元4、 若调用一个函数,且此函数中没有return语句,则正确的说法是该函数一D(A) 没有返回值(B) 返冋若干个系统默认值(C) 能返回一个用户所希望的函数值(D) 有返回值,但返回一个不确定的值5、按照 C 语言的规定以下说法不正确的是 B o(A) 形参可以是常最、变量或表达式(B) 实参可以为任意类型(C) 实参可以是常量、

37、变量或表达式,在传递给形参吋,要求实参必须有确定的值(D) 形参与其对应的实参类型要求可以不-?致6、以下程序的输出结果是 &17 o main() int k=4 5m=l 5p; p=func(k,m); printf("%d,",p); p=func(k,m); printf( H%d,p);func(int a,int b)static int m,k=2; k+=m+l; m=k+a+b;retum(m);17、以下程序的输出结杲是 1,6,3,2,3 。main() int i=l,j=3; printf( ,%d; ,i+); int i=(); i+

38、=j*2;prin(f( “d',%d, “ ,i,j); prinnt%f( d,%dnM,i,j); 8、以下程序的输出结杲是 4321 omain() inta : =l,2,3,4),i,x=0;for(i=0; i<4; i+) sub(a,&x); printf( n%d",x); printf( n“°); sub(int*s, int *y) static int t=3;*y=s t ; t-;9、以下程序的输出结杲是 35745 ovoid fun(int *s) static int j=0;do s j +=s j+1;whil

39、e(+j<2);main() int k,a 10 =1,2,3,4,5; for(k=l; k<3; k+) fun(a);for(k=0; k<5; k+) printf( n%dn,a k);1()、以下程序的输出结果是 4 of(int a) int b=();static int c=3; a=c+,b+; return(a); main() int a=2,i,k;for(i=(); i<2; i+) k=f(a+); printf( n%d n” ,k);11、 以下程序的输出结果是 2 oint m=13;int fun2(int x,int y) in

40、t m=3; return(x *y-m); main() int a=7,b=5;printf("%d n",fun2(a,b)/m);12、 以下程序的输出结果是 2,5,1,2,3,-2 omain() int a=3,b=2,c=l;c? =+b; b*=a+c; int b=5,c=12; c/=b*2; a-=c;printf( ”d,%d,%d, ” ,a,b,c); a+=c;printf("%d,%d,%d n",a,b,c);13、以下程序的输出结果是 _2468ovoid fun() static int a;a+=2;printf

41、("%d",a);)main() int cc;for(cc= 1; cc<=4; cc+) fun();printf(" n");14、以下程序的输 Hl 结果是 _ funct result is: 12 。unsigned funct(unsigned num) unsigned int k=l;do k* 二 num% 10; num/=IO; while(num);return k;main() unsigned int n=26;printf("funct result is:%d n",funct(n);15、以下

42、程序的输出结杲是 _function running result is: 9.0 。double sub(double x,double y,double z) y-=1.0; z=z+x; return z; main() double a=2.5,b=9.0;printf("function running result is:%6.1 f n",sub(b-a,a,a);三、实验题1、编写函数,求两个整数的最大公约数和最小公倍数,用主函数调用你所编写的函数,并输出结果,两个整 数由键盘输入。2、编写一函数,判断任一 ?整数是否为素,并输出是否素数的信息。3、写一两数

43、,用來求某矩阵的最小值和最人值以及它所在行和列的位證。( 矩阵可川二维数纽表示 )4、任给四个正数作边长,可构成几个三角形?这些三角形的总而积是多少?分析: 三角形判别准则“三角形两边 Z 和大于第三边, 而任两边 Z 差小于第三边”等价于“三角形半周长必大 于任一边”,故可以利用后者来判定三数能否构成三角形,至于三角形的面积,可借助“用三角形三边求面积”的 海伦公式求得。本题中共有 “4个元素选出 3 个元素的组合数”为 4,需要做“界处同构”的三角形判别与求其总 积的处理,故宜设计一个可捉供所求个数、面积的函数子算法。6、数组、知识点数组的作用是用来表示多个相同数据类型的数据,如100 个

44、学生的名字,可以定义为 charxm100;(一)一维数组的定义、初始化和引用1、一维数组的定义方式为: 类型说明数组名 常量表达式 说明: 1)数组名为标识符; 2)数组是用方括号括起來的常量表达式,不能用圆括号;3)常量表达式是为了说明数组元素的个数,必须是常量,数组的下标从 0 开始。例如 : int a5;那么第一个元素的名字为 n0, 依次类推,最后一个元素的名字就应该是a402、数组的初始化有两种方法1)在定义的同时赋值例如: int a5= 1,2,3 ;此吋 a0=l,al=2,a2=3,a3=0,a4=0 ,也就是说如果只说明了部分元素的值 , 后面的元素 自 动赋值为 0。

45、2) 先定义后赋值例如: int a5;a5=l,2,3,4,5;说明:若在对全部数组元素赋初值时,可以不指定数组长度 , 女 Hint a= 1,2,3 );此时其实等价于 int a3= 1,2,3;3、一维数组的引用方法: C 语言规定不能一次引用整个数组,只能逐个元素引用。如: a0=a5+a7-a2*3;上而这行语句也就是说 a 数组中的第一个元素的值等于第六个元素加上第八个元素再减去第七个元素的值。 二)二维数组的定义、初始化和引用1、二维数组的定义方式为:类型说明数组名 常最表达式 常最表达式 二维数组可以看成是由多个一维数组组成。例如: inta34; 此时我们可以把 a 数组

46、看成是一个三行四列的矩阵,也就是有三行,每行有四个元素组成。2、二维数组的初始化也可以采用在定义时赋初值或先定义后赋值。如: int a34= 1,2,3, 4,4, 0 ;此时数组的第一行元素分别为 1, 2, 3, 4,第二行元素的第一元素为 4, 其余元素为 0,第三行所冇元素为 0。说明: 1)町以将所冇的数据写在一个花括号内,按数组排列的顺序对元素赋值;2)如果对二维数组的全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度必须指定。3、二维数组的引用:二维数组的元素可以表示为:数组名 下标 下标 引用时,必须是单个元索,不能是整个数组。二、习题精选1. 若有语句i

47、nta8J;则卜述对a的描述正确的是(A )。(A) 定义了一个名称为a的一维整型数组,共有 8个元索(B) 定义了一个数组a,数组a共有9个元素( C) 说明数组 a 的第 8 个元索为整型变量( D ) 以上可选答案都不对2. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(C )。( A ) 整型常量( B ) 整型表达式( C) 整型常量或整型表达式(D) 任何类型的表达式3. 下述对 C 语言字符数组的描述正确的是( A )。( A) 任何一维数组的名称都是该数纽存储单元的开始地址,且其每个元索按照顺序连续占用存储空间(B) -?维数组的元索在引用时其下标人小没有限制( C)

48、 任何一个一维数组的元索,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间(D)一维数组的第一个元索是其卜-标为1的元索4. 下述对C语言字符数组的描述屮正确的是(D ) o(A) 任何一个一维数纽的元索在引用时,其卜-标可以是整型、实型或字符型常量(B) 维数组的元素实质上就是一个变量,代表内存中的一个存储单元(C) 如果要引用数组中的每一个元素,则直接使用该数组名称即可(D) 以上都不对5. 以下对一维整型数组a的正确说明是(D )。(A) int a(10); (B)i nt n=l(),a n; (C) int n;(D) #defi ne SIZE 1()seanf(

49、 %d”,&n);int aSIZE;int an;6. 以下能对一维数组a进行正确初始化的语句是(B )(A) inta 10=(0,0,0,0,0); (B) inta1O=; (C) inta=0; (D) inta10=(10*l);7. 若有说明:in “34则对a数组元素的正确引用是(A )(A) a2(4 (B) al,3 (C) al+l0 (D) a(2)(l)&以下能对二维数组a进行正确初始化的语句是(B )(A) inta2=l,0,l,5,2,3; (B) inla"3二1,2,3,4,5,6;(C) in ta24=l,2,3,4,5,6;

50、(D) int a3=1,0,1,1,1;9. 若有说明:int a34=0);则下面正确的叙述是(B )(A)只有元素a00可得到初值0 (B)此说明语句不正确(C) 数组a中各元素都对得到初值,但其值不一定为()(D) 数组a中每个元素均可得到初值()10. 以下各组选项中,均能正确定义二维实型数组a的选项是(C )(A) float a34; float a4; float a3=l,0;(B) float a(3,4); float a34; float aff= () ;();(C) float a34J; static float a4= (),();(D) float a34;

51、float11. 若二维数组a有m列,则计算任一元素aij在数组中位置的公式为(D )(假设a001位于数组的第一个位置上。)(A) i*m+j (B) j*m+i (C) i*m+j-l (D) i*m+j+l12. 对以下说明语句的正确理解是(B )int a10 = 6,7,8,9,10;(A)将5个初值依次赋给a至a5(B)将5个初值依次赋给a0至a4(C)将5个初值依次赋给a6至a10 (D)因为数组长度与初值的个数不相同,语句有错13. 若有说明:int a=1,2,3,4,5,67;则a数组第一维的大小是(B)(A) 2 (B) 3 (C) 4 (D)不确定14. 定义如下变量和

52、数组:int I;int x 3= 123,4,5,6,7,8,9;则下面语句的输出结果是(C )for(I=0;I<3;I+)prin tf( <<%d,xI2-IJ);(A) 1 59 (B) 1 47 (C) 3 5 7 (D) 36915下面程序的运行结果是(C )mai n()int a66,I,j;for(I= 1 ;I<6;I+) for(j=l;j<6;j+) aIj=(I/j) * (j/I) for(I=l;I<6;I+) for(j=l;j<6;j+) printfC<%2d,aIj);priMf( iT);(A) 1111

53、1111111111111111(B) 0 0 0 0 10 0 0 1 00 0 10 00 1 0 0 0(C) 1 0 0 0 0()10() 0()0 1() 0 0 0 0 1 011111 10 0 0 0 ()000 116.下而程序的运行结果是(C ) main()int a6;for(I=l;I<6;I+)al=9*(l-2+4*(l>3)%5;prin tf(<<%2d,aI);(D) 1 0 0 0 10 10 1 00 0 1 0 0()101 0 10 0 0 1(A) -40404 (B) -40403 (C) -40443 (D) -404

54、4 017、 下列语句的执行结果是 (B )static char strflO = “ china ”;printfC t%d,strlen(str);(A) 10 (B) 6 (C) 5 (D) 018、若有以下程序片段:' ”;'printfC t%d,strlen(str);则输出结果是 (D)(A) 3 (B) 4 (C) 6 (D) 12三、实验题1. 编程实现: W 2,4,6,8,10,200 共 100 个数存入定义的数组中,并输出。2. 编程实现:定义二维数组存储矩阵 1 35 , 并将其按行为主序输出,再以列为主序输出。7 9 113. 编一程序,将两个字

55、符串连接起来,不要用 strcat函数。分析:它主要是把第二个串中的字符依次加到第一个串的尾部。若第一个串为a,第二个串为b,则语旬的实现即 为ai = bj o 这里的关键是确定 i、j, 根据题意, i 的初始值应为第一个串的末尾, j 的初始值为第二个串的开始 ( 即 0), j 的结束值应为笫二个串的末尾。应注意的是:笫一个串在定义长度时一定要大于或等于两个串长度之和,另外,两个串连接之后放在第一个串中时,要在串的末尾补一个串结束符'0'。4. 青年歌手参加歌 1111 人奖赛,有 10 个评委对她进行打分,编写程序求这位选手的平均得分( 去掉一个最高分和 个最低分 ) 。分析:此题有两种思路,第一 - 种思路是把这十个数排序,然后第二个数累加到第九个数,空下第一个数和第十个数 不加,累加的和再除以 8,所得的就是去掉最高分和最低分的平均分。笫二种思路是在十个数中找最大值( 最高分 ) 和最小值 ( 最低分 ) ,把十个数的累加和减去最人值和最小值之后再除以&也可得到去掉最高分和最低分之后的平均分。7、指针、知识点1、指针及指针变量的概

温馨提示

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

评论

0/150

提交评论