您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > C语言考题-知识点(C语言培训课讲义).
19次考题-知识点目录第一部分第二部分一、是非判断题2.3.5.7.二、单项选择题1235一、单项选择题1569二、读程序题123456789三、程序填空题12345文件操作机试技巧一、是非判断题2、DMA:所谓DMA方式就是在进行数据传送时,CPU让出总线的控制权,由硬件中的DMA控制器接管直接控制总线。在DMA控制器的控制下,数据不经CPU而直接在内存和外设之间传送,提高大批量数据交换的速度,从而提高计算机系统的数据传输效率。3、队列有两种存储结构:顺序队和链队。顺序队容易产生“假溢出“(“假队满“)现象,因此往往以循环队作为队列的顺序存储结构。采用“牺牲“一个存储结点的办法,可以简单地表达循环队的队满、队空条件。链队由于不存在“假溢出“问题,使用比较方便。但指针域占用了额外的存储量。返回5、顺序存储方法(主要用于线性表或者数组)链接存储方法:采用指针方式数据下个地址索引存储方式(需要建立单独的索引文件,索引一般形式:关键字、地址)散列存储方式(根据元素的关键字通过事先编制好的散列函数直接给出该单元存储地址)7、基类和派生类关系任何一个类都有可以派生出上个新类,派生类也可以再派生出新类,因此,基类和派生类是相对而言的。一个基类可以是另一个基类的派生类,这样便形成了复杂的继承结构,出现了类的层次。一个基类派生出一个派生类,它又做另一个派生类的基类,则原来基类为该派生类的间接基类。返回二、单项选择题1、插入排序:基本操作是:将一个记录插入到一个有序的子序列中,使得插入这个记录后,所得到的这个序列仍然保持有序。选择排序:首先在所有记录中选出关键字最小的记录,把它与第1个记录交换,然后在其余的记录中再选出关键字次最小的记录与第2个记录交换,以次类推......,直到所有记录排序完成。冒泡排序、快速排序两两比较待排序记录的关键字,并交换不满足顺序要求的两对记录,直到全部满足为止。返回2、栈:栈是限定仅在表尾进行插入或删除操作的线性表。先进后出、后进先出的特性。栈的表尾称为栈顶,表头称为栈底,不含元素的空表称为空栈。3、进程的状态转换:返回5、黑盒测试根据软件产品的功能设计规格,在计算机上进行测试,以证实每个实现了的功能是否符合要求。这种测试方法就是黑盒测试。黑盒测试意味着测试要在软件的接口处进行。就是说,这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求分析规格说明,检查程序的功能是否符合它的功能说明。白盒测试根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。这种测试方法就是白盒测试。白盒测试把测试对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。返回第二部分一、单选#includeiostream.hintFun(intx,inty){returnx+y;}Voidmain(){inti=10;CoutFun(i++,i)endl;}函数参数的结合方向:自右向左返回5、#includestdio.hVoidmain(){intx=0,y=0,z=0;++x||++y||++z;Printf(“%d%d%d”,x,y,z);}逻辑运或运算符(||)左边的表达式为真时逻辑运算符右边的表达式就不再进行运算。返回6、#includestdio.hUnionmyun{struct{intx,y,z}u;intk;}a;Voidmain(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;Printf(“%d%d%d\n”,a.u.x,a.u.y,a.u.z);}共用体是指把几个不同类型的变量存储在同一个地址开始的内存单元中,几个变量的存储字节数不同,但可以相互覆盖,共用体的所有成员共用一段存储区域,共用体变量占有内存的总字节数是其最长成员所占的字节数。a.u.xa.u.ya.u.za.k返回9、#definef(x)1+x+x*x#includestdio.hvoidmain(){inta=2,b=3;Printf(“%d\n”,f(a+b));}1.f(a+b)=1+a+b+a+b*a+b2.f(2+3)=1+2+3+2+3*2+33.17替换为:#definef(x)1+(x)+(x)*(x)返回二、读程序1、#includestdio.hintf(intm){staticintx[3]={2,3,4};inti;for(i=0;i3;i++)x[i]+=x[i]-m;for(i=0;i3;i++)printf(“%d\n”,x[i]);printf(“\n”);return(x[m]);}Voidmain(){inty=1;f(f(y));}第一次调用f函数:m=1X[0]+=x[0]-m-x[0]=3X[1]+=x[1]-m-x[1]=5X[2]+=x[2]-m-x[2]=7f函数返回值为x[1]=5.第二次调用f函数:m=5x[3]={3,5,7}X[0]+=x[0]-m-x[0]=1X[1]+=x[1]-m-x[1]=5X[2]+=x[2]-m-x[2]=9静态局部变量不随其所在函数的调用结束而释放,而会保留本次调用结束时的值,并作为下一次调用的初始值参与运算。返回2.#include“stdio.h”intchange(char*c,intfg){if(*c==‘‘)L1:return1;elseif(fg&&*c=‘z’&&*c=‘a’)*c+=‘A’-’a’;return0;}voidmain(){intflag=1;Charch;do{ch=getchar();flag=change(&ch,flag);putchar(ch);}while(ch!=‘\n’);/*循环结束条件当输入回车结束*/}C语言中以1或一切非零的常数代表“真”,以0代表“假”/*注意:’A’-’a’为-32,‘A’=65,’a’=97*/This_is_a_book!返回3.#include“iostream.h”intsb(int*s,inty){staticinti=3;y=s[i--];returny;}voidmain(){ints[]={1,2,3,4};inti,x=0;for(i=0;i4;i++){x=sb(s,x);coutx‘,’;}coutendl;}main()sb(s,x)i=0i=3s[3]=4i=1i=2s[2]=3i=2i=1s[1]=2i=3i=0s[0]=1静态局部变量不随其所在函数的调用结束而释放,而会保留本次调用结束时的值,并作为下一次调用的初始值参与运算。返回4.#include”iostream.h”voidmain(){char*s=“21342”;inta=0,b=0,c=0,d=0;intk;for(k=0;s[k];k++)switch(s[k]){default:d++;case‘1’:a++;case‘3’:c++;case‘2’:b++;}cout“a=“a“,b=“b“,c=“c“,d=“dendl;}知识点for循环switch(s[k])k=0s[0]=‘2’bk=1s[1]=‘1’a,c,bk=2s[2]=‘3’c,bk=3s[3]=‘1’a,c,bk=4s[4]=‘4’d,a,c,bk=5s[5]=‘2’b++k=6s[6]=‘\0’退出循环有break返回switch后的表达式一般限于整型、字符型和枚举型的表达式;每个case后的常量表达式的值必须互不相同;default分支表示当switch后的表达式之值不与任何一个分支的常量值匹配时,则执行default后的语句段。如果希望在执行了一个分支后跳出switch语句,每个分支的最后一个语句应该是break语句,表示不再执行其后的分支而跳出switch语句;如果没有break语句,流程就会在执行了第一个常量值匹配于表达式之值的分支后,接着执行相邻的下一路分支,并顺序执行—下去,直到遇上break语句或switch的终止大括号。返回试题返回4.#include”iostream.h”voidmain(){char*s=“21342”;inta=0,b=0,c=0,d=0;intk;for(k=0;s[k];k++)switch(s[k]){default:d++;break;case‘1’:a++;break;case‘3’:c++;case‘2’:b++;}cout“a=“a“,b=“b“,c=“c“,d=“dendl;}知识点for循环switch(s[k])k=0s[0]=‘2’bk=1s[1]=‘1’ak=2s[2]=‘3’c,bk=3s[3]=‘1’ak=4s[4]=‘4’dk=5s[5]=‘2’b++k=6s[6]=‘\0’退出循环原题返回5.#include”stdio.h”voidfun(char*s){chart;if(*s){t=*s++;fun(s);if(t!=‘\0’)putchar(t);}}voidmain(){char*a=“1234”;fun(a);}函数的递归调用是指在调用一个函数的过程中又出现直接或间接地调用该函数本身。fun(a)main()fun(a)fun(a)fun(a)“1234”“234”“34”“4”结束“4”“3”“2”“1”返回6.#voidsub1(chara,charb){charc;c=a;a=b;b=c;}voidsub2(char*a,charb){charc;c=*a;*a=b;b=c;}voidsub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a=‘A’;b=‘B’;sub3(&a,&b);putchar(a);putchar(b);sub2(&a,b);putchar(a);putchar(b);sub1(a,b);putchar(a);putchar(b);}‘A’‘B’ab‘A’‘B’ab实参形参‘A’‘B’ab‘B’ab‘A’‘B’abab单向传值传地址返回7.ab[0]b[1]a的内存地址共用体是指把几个不同类型的变量存储在同一个地址开始的内存单元中,几个变量的存储字节数不同,但可以相互覆盖,共用体的所有成员共用一段存储区域,共用体变量占有内存的总字节数是其最长成员所占的字节数。b的内存地址a与b[0]相互覆盖返回8.#includestdio.h#includestdlib.hvoidmain(intargc,char*argv[]){FILE*fp;voidfun(FILE*fp);inti=1;while(--argc0)if((fp=fopen(argv[i++],”r”))==NULL){printf(“cannotopenfile!\n”);exit(0);}参数个数存放命令行参数argv[0]ex2_8argv[1]file1.txtargv[2]file2.txt返回else{fun(fp);fclose(fp);}}voidfun(FILE*fp){charc;c=fgetc(fp);While((c!=EOF)){if(c=‘A’&&c=‘Z’)putchar(c);elseif(c=‘a’&&c=‘z’)putchar(c-(‘a’-’A’));c=fgetc(fp);}}file1.txtfile2.txtSiChuanTest从文件读取一个字符文件关闭函数返回文件操作1.FILE*fp定义文件指针2.if((fp=fopen(文件名,打开方式))==NULL){printf(“cannotopenfile!\n”);exit(0);/
本文标题:C语言考题-知识点(C语言培训课讲义).
链接地址:https://www.777doc.com/doc-2909157 .html