《C笔试题及答案_软件测试笔试题及答案33429.pdf》由会员分享,可在线阅读,更多相关《C笔试题及答案_软件测试笔试题及答案33429.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 笔试题及答案_软件测试笔试题及答案 c 笔试题及答案篇 1 (1)算法的时间复杂度是指_。a)继续执行算法程序所须要的时间 b)算法程序的长度 c)算法继续执行过程中所须要的基本运算次数 d)算法程序中的指令条数 答案:c 评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。(2)以下描述中恰当的就是_。a)线性表是线性结构 b)栈与队列是非线性结构 c)线性链表就是非线性结构 d)二叉树就是线性结构 答案:a 评析:通常将数据结构分成两小类型:线性结构与非线性结构。线性表、栈与队列、线性链表都就是线性结构,而二叉树就是非线性结构。(3)下面关于完全二叉树的叙述中,错误的是_。a)
2、除了最后一层外,每一层上的结点数均达至最大值 b)可能缺少若干个左右叶子结点 c)全然二叉树通常不是八十二叉树 d)具有结点的完全二叉树的深度为log2n+1 答案:b 评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。(4)结构化程序设计主要特别强调的就是_。a)程序的规模 b)程序的易读性 c)程序的继续执行效率 d)程序的可移植性 答案:b 评析:结构化程序设计主要特别强调的就是结构化程序准确易懂,可以认知性不好,程序员能展开逐步求精、程序证明和测试,以确保程
3、序的正确性。(5)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。a)概述设计 b)详细设计 c)可行性分析 d)需求分析 答案:d 评析:需求分析就是看待开发软件明确提出的市场需求展开分析并得出详尽定义,即为精确地确认软件系统的功能。撰写软件规格说明书及初步的用户手册,递交评审。(6)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。a)控制流 b)加工 c)数据存储 d)源和潭 答案:a 评析:数据流图从数据传达和加工的角度,去刻画数据流从输出至输入的移动转换过程。数据流图中的主要图形元素存
4、有:加工(切换)、数据流、存储文件(数据源)、源和潭。(7)软件需求分析一般应确定的是用户对软件的_。a)功能市场需求 b)非功能市场需求 c)性能需求 d)功能市场需求和非功能市场需求 答案:d 评析:软件需求分析中须要结构一个全然的系统逻辑模型,认知用户明确提出的每一功能与性能建议,就是用户明晰自己的任务。因此,需求分析应当确认用户对软件的功能市场需求和非功能市场需求。(8)下述关于数据库系统的叙述中正确的是_。a)数据库系统增加了数据缓存 b)数据库系统避免了一切冗余 c)数据库系统中数据的一致性就是指数据类型的一致 d)数据库系统比文件系统能管理更多的数据 答案:a 评析:由数据的共享
5、自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。(9)关系表的每一民不聊生称作一个_。a)元组 b)字段 c)属性 d)码 答案:a 评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。(10)数据库设计包含两个方面的设计内容,它们就是_。a)概念设计和逻辑设计 b)模式设计和内模式设计 c)内模式设计和物理设计 d)结构特性设计和犯罪行为特性设计 答案:a 评析:数据库设计可以分成概念设计与逻辑设计。
6、概念设计的目的就是分析数据间内在语义关联,在此基础上创建一个数据的抽象化模型。逻辑设计的主要工作就是将 er 图切换为选定的 rdbms 中的关系模型。c 笔试题及答案篇 2 (1)请读程序:#include main()inta;floatb,c;scanf(“%2d%3p%4f,&a,&b,&c);printf(”na=%d,b=%ec。%fn”,a,b,c);若运转时从键盘上输出 l,则上面程序的输入结果就是_。a)a=98,b=,c=b)a=10,b=,c=c)a=98,b=.,c=.d)a=98,b=.0,c=.0 答案:c 评析:scanf()把用户从键盘打印的数字的第 1、2 十
7、一位取走整型变量 a;把第 3、4、5 十一位取走单精度实型变量 b,把第 6、7、8、9 十一位取走单精度实型变量 c,用户打印的第 10 位被 scanf()丢弃。这时变量 a、b、c 的值分别为:98、.、.。(2)一个良好的算法由下面的基本结构组成,但不包括_。a)顺序结构 b)挑选结构 c)循环结构 d)重定向结构 答案:d 评析:年,bohra 和 jacopini 明确提出了以下三种基本结构,用这三种基本结构做为则表示一个较好算法的基本单元:1、顺序结构;2、挑选结构;3、循环结构。(3)请选出以下程序的输出结果_。#include sub(x,y,z)intx,y,*z:*z=
8、y-x;main()inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(”%d,%d,%dn”,a,b,c);a)5,2,3b)-5,-12,-7c)-5,-12,-17d)5,-2,-7 答案:b 评析:sub()函数的作用是将形参 y 和 x 的差赋给了 z 指向的那个内存地址,所以在sub(10,5,&a/i,10 和 5 属于值传递,a 是属于地址传递,也就是 a 与 z 指向了同一个存储单元,在执行函数后,a 的值随*z 变化,所以此次函数被调用后,a 的值为 y-x=-5,同理可知,在 sub(7,a,&b)后,b 的值发生变化
9、,其值为-5-7=-12,在 sub(a,b,&c)后,c 的值发生变化,其值为-12-(-5)=-7。(4)下面程序在屏幕上的输入就是_。main()printf(”abbbc”);a)abbbcb)acc)abcd)abc 答案:b 评析:c 语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:n,换行;t,水平制表;b,退格;r,回车。(5)若 x 就是整型变量,pb 就是基类型为整型的指针变量,则恰当的赋值表达式就是_。a)pb=&x;b)pb=x;c)*pb=&x;d)*pb=*x 答案:a 评析:选项 a 将变量 x
10、的地址赋给指针变量 pb,使 pb 指向 x选项 b 是将 x 的值当作地址赋给指针 pb,db 指向一个地址等于 x 值的内存单元;选项 c 将 x 的地址赋给指针 pb指向的地址等于 x 的内存单元。(6)设立整型数 i=5,则 printf(“%d”,i+i);的输入为_。a)10b)1lc)12d)语法错误 答案:d 评析:c 语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(+、),在 c 语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为 i+i,显然该表达式不合 c 语言语法。(7)若要用下面的程序片段并使指针变量 p 指向一个存储整型变量的动态存储单元
11、 int*p;p=_malloc(sizeof(im);则应填入_。a)intb)intc)(*int)d)(int*)答案:d 评析:不论 p 就是指向什么类型的指针变量,都可以通过强制性初始化的方法并使之类型一致,强制性初始化的格式为(数据类型+)。(8)下面程序输出的结果是_。main()inti=5,j=9,x;x=(i=j?i:(j=7);printf(”n%d,%d”,i,j);a)5,7b)5,5c)语法错误 d)7,5 答案:a 评析:条件表达式的通常形式为:表达式 i?表达式 2:表达式 3;先解表达式 1,若为真则解表达式 2;若表达式 l 的值假,则解表达式 3。本题中先
12、推论 i=j,左右,继续执行j=7;然后继续执行 x=7。故本题为 a。(9)若执行下面程序时从键盘上输入 5,main()intx:scanf(”%d”,&x);if(x+5)printf(”%dn”,x);elseprintf(”%dn”,x);则输出是_。a)7b)6c)5d)4 答案:b 评析:根据 c 语言的语法,x+就是在采用 x 之后,再将 x 的值加 1,在 if 语句中,x的值 5,条件不设立,继续执行 else 后面的语句,因为 x 的值已经提 1,为 6,所以列印结果为 6。(10)若有以下定义和语句:inta=l,2,3,4,5,6,7,8,9,10,*p=a;则值为
13、3 的表达式是_。a)p+=2,*(p+)b)p+=2,*+p c)p+=3,*p+d)p+=2,+*p 答案:a 评析:引用一个数组元素,可以用:(1)下标法,如 ai形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从 0 开始,值为 3 的数组元素是 a2。b、c 的内容为 a3,d 将a2前自加,结果为 4。c 笔试题及答案篇 3 (1)设 a、b 和 c 都是 int 型变量,且 a=3、b=4、c=5,则下面的表达式中,值为 0 的表 达式就是_。a)a&bb)a=bc)a+c&b-cd)!(a 答案:d 评析 z 选项 a:a&b是字符 a 与 b 的相与,不为 0;选
14、项 b:a=b,由题中变量赋值可知,结果为 1。选项 c:a+c&b-c,结果为 1;选项 d:!(a (2)以下程序运行后,输入结果就是_。main()char*d。“ab”,”cde”;printf(”%x”,d1);a)cdeb)字符 c 的 ascii 码值 c)字符 c 的地址 d)出错 答案:c 评析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名+数组名数组长度,在本题 main 函数中定义指针数组 d,它有两个元素,其初值分别是“ab”、“cde”的首地址。db的值为”cde”的首地址。%x 是指以十六进制数形式输出整数。(3)建有如下程序#inc
15、lude main()int*k,*j,i=;j=&i;k=&j;printf(”%dn”,*k);上述程序的输入结果就是_。a)运行错误 b)c)i 的地址 d)j 的地址 答案:b 评析:j=&i,j 的值就是 i 的地址,*j=,将 j 的地址赋给 k,这时*k=j,那么,*k=*j,而 1=,所以*k=,最后的打印结果应当为。(4)建有以下语句,其中不是对 a 数组元素的恰当提及的就是:_(其中 oi10)inta=10=0,1,2,3,4,5,6,7,8,9,*p=a;a)ap-ab)。(&ai)c)pid)*(*(a+i)答案:d 评析:观测程序所述,a 实际上就是数组 a 的首地
16、址,所以“+(a+i)”则表示的就是数组 a 中的第 i 个元素的值,进而,我们可以晓得+(t(a+i)必然不是对 a 数组元素的恰当提及。(5)以下程序运行后,输出结果为_。main()inta23=1,3,5,7,9,11,*s2,*pp,*p;s0=a0,s1=a1;pp=s;p=(int*)malloc(sizeof(int);*pp=s11;p=*pp;printf(”%dn”,*p);a)lb)7c)9d)1l 答案:c 评析:s 就是一个所含两个元素的指针数组,pp 就是一个指向指针变量的指针,so就是指向二维数组 a 行负号为 0 的元素的首地址,即 a0 儿 0的地址,s1为
17、 a10的地址。pp 的值 so的地址。*pp=s1l后,a00的值将被赋值为 alll的值,继续执行 p=*pp;后,p 中将就是 s0的值,最后的输入语句将输入地址 s0所指向的数据,即 a0o。(6)有以下程序:#include main()charc6;inti=0:for(;i6;c-=getchar(),i+);for(i=0;i6;i+)putchar(ci);primf(”n”);如果从键盘上输出:ab c def 则输入结果为_.a)ab)ac)abd)abcdef bbc ccd dd e f 答案:c 评析:1.getchar():此函数的促进作用从终端(或系统暗含选定的
18、输出设备)输出一个字符。2.putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。本题在输出字符时,ab 和 c 后面的回车符分别参数值了 c2和 e4,所以,恰当答案为 c。(7)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。a)地址传达 b)单向值传达 c)由实参传递给形参,再由形参传递给实参 d)传达方式由用户选定 答案:b 评析:c 语言规定,实参变量对形参变量的数据传达就是“单向值传达”,只由实参托付给形参。在内存中,实参单元与形参单元就是相同的单元。调用完结后,实参单元仍留存并保持原值。(8)下面程序#include#include ma
19、in()char*p1=”abc”,*p2=”abc”,str50=”xyz”;strcpy(str+2,strcat(p1,p2);printf(”%sn”,str);的输出是_。a)xyzabcabcb)zabcabc c)yzabcabcd)xyabcabc 答案:d 评析:strcat(pl,p2)将字符串 abcabc 放到了*pl 所指向的存储单元中;strcpy 在本题将 abcabc 复制到 str+2 所指向的存储单元中,即覆盖原 str 数组中的字符 z 及其后的所有字符,故 str 的值为”xyabcabc”。(9)下面程序 intaa33:2,4,6;main()int
20、i,*p:&aa00;for(i=0;i2;i+)if(i=0)aaii+l=*p+1;else+p;printf(”%d.,。p);的输入就是_。a)23b)26c)33d)36 答案:a 评析:观察题目,可以发现,*p=&aa01o语句实际是将数组 aa 的首地址赋给了指针变量 p,将 i 的值带入 for 循环中,i=0 时,aa01=3,+p=2;*p 输出的是指针所指向的数组值,此时 p 所指向的是 aaoo,输出 2,而 i=l 时执行了+p 操作使指针向后移动指向了 aao 儿 1,所以在输出*p 时应为 3。(10)以下程序的输入结果就是_。#include#include fun(char*w,intn)chart,*s1,*s2;s1=w;s2=w+n-l:while(s1 t=*s1+:*sl=*s2;*s2=t;main()char*p;p=”;fun(p,strlen(p);puts(p);a)b)c)d)l 答案:c 评析:在子函数 fun 中,sl 为字符串 w 的起始地址,s2 为字符串的结束地址(字符o除外),当执行循环结束循环,w=“”。