计算机二级考试C语言知识点总结(推荐10篇)
一、选择结构部分;
1、if结构题型总结(案例1)企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
(习题1)
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
2、switch结构(案例2)
题目:输入某年某月某日,判断这一天是这一年的第几天?
(习题2)要求从键盘输入一组字符,对该组字符中的数字0-9字符个数分别进行统计,其他字符共同统计,统计完成后输出各种字符的个数。(结合数组完成)
二、循环结构
1、for循环(案例3)
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
(习题3)按照指定的格式输出9*9乘法表。
* * * * * * * * * *
2.while循环
*
* *
* * * * * * *
*
* *
* * * * * * * * * * * *(案例4)请编写一个函数fun,它的功能是:根据以下公式求PI的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
PI/2 = 1 + 1/3 +(1*2)/(3*5)+(1*2*3)/(3*5*7)+(1*2*3*4)/(3*5*7*9)+ …… +(1*2*3*……*n)/(3*5*7*……(2*n+1))
(练习4)题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
(习题5)题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
(习题6)对数组的10个数进行排序
课后习题
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
X(n+1)=cos(X(n))
迭代步骤如下:
(1)取x(1)初值为0.0;
(2)x(0)=x(1),把x(1)的值赋给x(0);
(3)x(1)=cos(x(0)),求出一个新的x(1);
(4)若x(0)-x(1)的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);
(5)所求x(1)就是方程cos(x)-x=0的一个实根,作为函数值返回。
(案例1)
#include“stdio.h” main(){
} long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(“%ld”,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)
bonus=i*0.1;bonus=bonus1+(i-100000)*0.075;bonus=bonus2+(i-200000)*0.05;bonus=bonus4+(i-400000)*0.03;bonus=bonus6+(i-600000)*0.015;bonus=bonus10+(i-1000000)*0.01;else if(i<=200000)else if(i<=400000)else if(i<=600000)else if(i<=1000000)else printf(“bonus=%d”,bonus);
案例2 main(){
int day,month,year,sum,leap;printf(“nplease input year,month,dayn”);scanf(“%d,%d,%d”,&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/ { case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;
} case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(“data error”);break;} sum=sum+day;/*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;leap=0;sum++;else if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ printf(“It is the %dth day.”,sum);
案例3 #include “math.h” main(){ long int i,x,y,z;for(i=1;i<100000;i++)
{ x=sqrt(i+100);
/*x为加上100后开方后的结果*/
y=sqrt(i+268);
/*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf(“n%ldn”,i);
} }
(案例4)
#include
{ double x;int i;
printf(“eps=%lf, PI=%lfn”, x, fun(x));
} } 习题4 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:
/* zheng int is divided yinshu*/ main(){ int n,i;printf(“nplease input a number:n”);scanf(“%d”,&n);printf(“%d=”,n);for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{ printf(“%d*”,i);
n=n/i;
}
else
break;
} } printf(“%d”,n);}(习题5)main(){ int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;
} printf(“sum is %9.6fn”,s);}
(课后习题6)
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
1 全国计算机等级考试简介
1.1 NCRE的等级分类
计算机等级考试共有一二三四级。考生可以任意选择考试等级,每年考三次,考试时间为3月份、9月份、12月份,报考时间一般在考试前的一至两个月。
1.2 NCRE各级考试内容
一级有三科,分别是:Office,一级B,一级WPS。更多的人考的是一级MS Office,考Word、Excel、PPT的人居多。二级有七科,分别是:C语言、C++、VB、VF、Access、Java、Delphi等,任选其一进行考试即可。现在高校开设的编程语言几乎全部为C语言,所以二级考C语言的人最多,占到一半以上。三级有四科,分别是:网络技术、信息技术、数据库技术、PC技术。四级有三科,分别是:数据库工程师、网络工程师、软件测试工程师。
1.3 NCRE等级证书
考试成绩分为四个等级:60分以下不及格;60分到80分之间是及格;80分到90分之间是良好;90分以上是优秀。考试分数60分以上就算及格,颁发合格证书;分数超过90分颁发优秀证书。
2 二级C语言命题原则和考试要求
2.1 命题原则
大纲规定C语言考试由“公共基础”+“C语言程序设计”两大部分,重点考查对基础知识的掌握,主要考查对基本理论、基础知识点、基础编程及决实际问题的能力。
2.2 考试要求
按照命题原则,考试大纲对应试也提出了要求。主要有以下两个方面:强调基本概念、基本理论、基本知识点的掌握;强调利用C语言编写程序解决实际问题的能力。因此,要想通过考试,既要熟练掌握C语言的基本理论,还要学会实际编程能力,分析问题和解决问题的能力。
3 复习方法
3.1 掌握好基础知识
C语言考试的重点是基础知识的掌握、编程能力,所以,要求对基础知识点的掌握要非常熟练。因此,正确理解、熟记概念是前提。可以通过以下三方面来打好基础:
(1)“比较总结”学习法。对一些复杂知识点,通过比较和总结来理解、记忆。(2)对一些容易混淆的概念理解要准确。一定要准确地掌握它们之间在操作步骤和实现功能上的细微区别。(3)联想记忆各知识点。C语言考点之间是相互联系的,要学会一个考点联想到与之相关的考点。
3.2 做题要有针对性
二级C语言考试的题目很多,搞题海战是不行的,应根据考试大纲适当地做一些往年考过的习题,特别是历年真题。了解历年真题题型使我们较快地掌握考试题型,从而既节省时间,又能达到较好的学习效果。
4 答题策略和应试技巧
4.1 加强上机实践
笔试中程序设计类的题目最佳方法是上机操作,验证自己的解题思路和做题结果。通过上机实践,可以发现错误和纠正解题思路,加深我们的记忆。
4.2 选择题应试技巧
选择题共40题40分。选择题主要是对基本知识和基本操作进行考查,它主要是考查对相关概念掌握是否全面、理解是否准确、思路是否清晰、运用是否灵活。
选择题难度不同,我们根据难易程度,先做简单一些的题目然后做复杂一点的题目,这样能够增加考生信心、提高得分率,所以可以考虑以下做题顺序:先做公共基础题,即选择题的前10题;接下来完成C语言的基础题,即选择题的11至20题,这部分题目主要考查一些基本概念,如常量、运算符、表达式、标识符、数据类型、三种控制结构的应用、输入输出格式等;再接着完成选择题21至40题,这20个选择题前10个比较简单,后10个较难,这20题主要考查C语言的综合应用,题目都会给出一段代码,根据代码做选择,这就要求读懂程序,在理解的基础上认真作答,由于前10题比较简单,所以必须保证前10题的正确率。
4.3 填空、改错题应试技巧
填空、改错题着重考察综合运用基础知识和程序读写能力。填空、改错题综合性强、难度较大。从以往的考试结果来看,考生在程序填空和改错题上失分较多。下面研究一下填空、改错题的解题方法和步骤。
(1)填空题的特点和注意事项
在程序中会给出填空的地方,比如ay[j]=1。
解题思路:先读程序,理解程序的功能和算法,然后边填空边运行,最后,分析运行结果找到正确的答案。程序填空题的特点和注意事项:(1)填空题通常有两个空需要填写。(2)试题中用"found注释"提示在下一行或下两行需要填空。(3)程序填空题重点考查对程序的整体理解,考点经常是函数参数、返回值、for语句的初值、条件判断、变量数据类型、指针移动、文件函数、if条件等。(4)填空的位置处要求填写语句、表达式等,但是不能增行、删行,也不能改变程序行原有的结构。
填空题一般按照以下五步进行:(1)审题,了解试题要求,注意输入和输出例示,以便检验运行的结果。(2)注意"found注释"所在的函数,根据题意理解程序编写时所采用的算法。(3)填好空后首先检查语法错误。(4)按照试题的示例给出的数据进行测试,若测试的结果与给出的输出结果相同,该题就基本答对了,为了确保正确,最好再输入其他数据验证;多次验证的结果与给出的结果不同,应再去检查逻辑错误。(5)修改完成,得到正确结果后,一定要保存好最终程序,并注意路径和文件名不要修改。
(2)改错题的特点和注意事项
(1)改错题中通常包含两个错误需要修改。(2)试题中用"found注释"来提示在下一行附近有错。(3)错误的性质有语法错、逻辑错两种。(4)只能在出错的行上进行修改,不能改动程序行的顺序,不能另行编写程序。
解题思路:一边调试一边找错,分析运行结果,有错则改正。改错题按以下六步进行:(1)审题,了解试题要求和输入和输出结果。(2)审视"found注释"处的函数,根据题意理解采用的算法。(3)检查语法错误。当编译有语法错时,按照提示来查找并改正错误。(4)运行程序,对照示例数据,如果验证的结果与给出的结果相同,该题就答对了;若不同再检查逻辑错误。(5)程序有逻辑错误时,先理解题意、再读算法。(6)得到正确结果后,一定要保存好程序,并注意路径和文件名不要修改。
4.4 编程题应试技巧
二级C语言程序设计考试中有一个编程应用题。主要考查学生对语法、算法和编程能力的掌握。
编程题答题步骤有六步:(1)审题,了解题目要求,记下输入、输出例示,以便验证运行的结果。(2)对照形参,注意主函数中实参个数,以便确定函数中需要处理数据个数。(3)理解题目要求,掌握主函数中调用函数的方式,注意用return返回还是间接返回。(4)选择合理高效的算法,编写程序代码。(5)编译程序,直到没有错误。(6)运行程序,利用例示数据验证结果,直到结果无误即可。
5 结束语
总之,考试能否通过,不仅仅是掌握了考试方法和技巧。关键还是取决于对C语言基础知识掌握的是否扎实,运用的是否灵活,编程是否熟练。C语言是二级考试科目中考生最多的,但通过率却是最低的,原因主要是考生动手编写的程序较少,对基础知识的掌握不好,动手编写的程序较少,还有就是缺乏考试经验等原因。当然,具备了扎实的基础,能够灵活运用上述应试技巧,会使考试得心应手,通过率一定会有大幅度的提高。
参考文献
2008年下半年二级C语言程序设计的全国报考人数为50.99万人,笔试试卷的整卷难度为0.57,整卷的信度达到了0.89。本次考试二级C全国取证率为32.3%。全卷的难度适中,信度较好。现就将本次考试中的部分难题做简要分析,以帮助考生复习备考,取得满意的成绩。
选择题第32题:
有以下程序
#include
void fun( int a, int b )
{intt;
t=a; a=b; b=t;
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0}, i;
for (i=0; i<10; i+=2)fun(c[i], c[i+1]);
for (i=0;i<10; i++)printf("%d,", c[i]);
printf("n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,0,
B)2,1,4,3,6,5,8,7,0,9,
C)0,9,8,7,6,5,4,3,2,1,
D)0,1,2,3,4,5,6,7,8,9,
【答案】A
【分析】
(1)该题考生答对率只有29.6%,59.1%的考生选择了错误项B。
(2)这是一道典型的调用函数与被调用函数之间数据传递的问题。在调用函数时,实参的值将传送给对应的形参,但形参的变化不会影响对应的实参。教材例7.3(P.82)深刻地说明了这个过程。估计很多考生知道这一点,但理解不够深刻,故一旦试题更换格式,就会出错。
(3)这道题区分度较高,达到0.347,说明是一道好题。
选择题第40题:
有以下程序
#include
main()
{ FILE *pf;
char *s1="China", *s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
rewind(pf); /*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后abc.dat文件的内容是
A)ChinaB)Chinang
C)ChinaBeijingD)BeijingChina
【答案】B
【分析】
(1)只有28.5%的考生答对,有37.9%的考生选择了D。属于本套试卷里最难的选择题。
(2)在文件使用方式上,本题使用的是“wb+”,意思是为写建立一个新的二进制文件,并在读和写过程中,可以由位置函数设置读和写的起始位置。为降低试题难度,本题特地在语句rewind(pf);后面有注解提示:文件位置指针回到文件开头。因此,在写入字符串“Beijing”后,文件指针回到文件头,再写入“China”,文件的内容就成为“Chinang”,正确答案是B。
(3)该题区分度0.375,属好题。
填空题第8题:
以下程序的输出结果是___。
#include
main()
{int i,j,sum;
for(i=3;i>=1;i--)
{sum=0;
for(j=1;j<=i;j++)sum+=i*j;
}
printf("%dn",sum);
}
【答案】1
【分析】
(1)本题只有19.2%的考生答对。
(2)该题考核考生做题时的细心。在第一个for循环体中,由于每次循环都将sum置0,因此,影响sum值的因素就只与最后一次循环语句相关,此时,i为0,j为1,sum只能是1了。
(3)这道题本身不难,如果考生能够仔细阅题,掌握关键点,就不会出错了。
填空第9题:
以下程序的输出结果是___。
# include
main()
{ intj, a[]={1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3;j;j--)
{switch ( j )
{ case1:
case2:printf("%d", *p++);break;
case3:printf("%d", *(--p));
}
}
}
【答案】9911
【分析】
(1)本题只有16.3%的考生答对,是难题。
(2)该题主要考核考生三个方面的知识,一是选择结构switch语句,一个是自加减运算,另一个是指针。j=3时,执行printf("%d", *(--p));语句,结果是输出9;j=2时,执行printf("%d", *p++); break; 结果是输出9,这是答对本体的关键!*p++指的是使*p作为表达式的值,然后使指针变量p本身增1;j=1时,执行空语句后,继续执行case2语句,此时输出11。所以本题的答案是9911。
在复习该部分的时候,考生应该掌握以下两个问题:
1.对一维数组的操作
对一维数组进行操作的时候,不可避免的要访问相关的数组元素,在C语言中访问数组元素一般采取单层循环的方法进行遍历,假设数组长度为n,数组下标是在0到(n-1)之间的,考生应该牢固掌握在一维数组中求最大值、最小值,移动元素,查找特定值,存储数组元素的方法。
2.对字符串的操作
#include
void main( )
{ int a,b,c,d,x;
a=c=0;
b=1;
d=20;
if (a) d=d-10;
else if(!b)
if (!c) x=15;
else x=25;
printf(”d=%dn“,d);
}
A) d=20 B) d=10 C) d=15 D) 25
62、有如下程序:
#include
void main( )
{ int a=2,b=-1,c=2;
if (a
if (b<0) c=0;
else c++;
printf(”%dn“,c);
}
该程序的输出结果是___C_____.
A) 0 B) 1 C) 2 D) 3
63、下列程序执行后的输出结果是____B____.
#include
void main( )
{ int x,y=1,z;
if ((z=y)<0) x=4;
else if (y==0) x=5;
else x=6;
printf(”%d,%dn“,x,y);
}
A) 4,1 B) 6,1 C) 5,0 D) 出错信息
64、有如下程序
#include
void main( )
{ int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(”a=%d,b=%dn“,a,b);
}
该程序的输出结果是______A____.
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2
65、下面程序的输出结果是____C_____.
#include
void main( )
{ int a=-1,b=1,k;
if ((++a<0) && (b--<=0))
printf(”%d %dn“,a,b);
else
printf(”%d %dn“,b,a);
}
A) -1 1 B) 0 1 C) 1 0 D) 0 0
66、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w
则该程序段执行后,m的值是____D_____.
A) 4 B) 3 C) 2 D) 1
67、以下程序的输出结果是___D______.
main( )
{ int a=100;
if (a>100) printf(”%dn“,a>100);
else printf(”%dn“,a<=100);
}
A) a<=100 B) 100 C) 0 D) 1
68、若执行下面的程序从键盘上输入9,则输出结果是.______B________
#include
void main( )
{int n;
scanf(”%d“,&n);
if (n++<10) printf(”%dn“,n);
else printf(”%dn“,n--);}
A) 11 B) 10 C) 9 D) 8
69、以下程序输出结果是_____D_____.
#include
void main( )
{ int m=4;
if (++m>5) printf(”%dn“,m--);
else printf(”%dn“,--m);
}
A) 7 B) 6 C) 5 D) 4
70、若执行下面的程序从键盘上输入5,则输出结果是.
#include
void main( )
{int x;
scanf(”%d“,&x);
if (x++>5) printf(”%dn“,x);
else printf(”%dn“,x--);
}
A) 7 B) 6 C) 5 D) 4
71、以下程序段运行结果是____A____.
int x=1,y=1,z=-1;
x+=y+=z;
printf(”%dn“,x
A) 1 B) 2 C) 4 D) 不确定的值
72、有以下程序
#include
void main( )
{ int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf(”%d,%dn“,a,b);
}
输出结果是____A____.
A) 2,1 B) 3,2 C) 4,3 D) 2,-1
73、运行下面程序时,若从键盘输入数据为”123“,
则输出结果是___C____.
#include ”stdio.h“
void main()
{ int num,i,j,k,place;
scanf(”%d“,&num);
if (num>99)
place=3;
else if(num>9)
place=2;
else
place=1;
i=num/100;
j=(num-i*100)/10;
k=(num-i*100-j*10);
switch (place)
{ case 3: printf(”%d%d%dn“,k,j,i);
break;
case 2: printf(”%d%dn“,k,j);
break;
case 1: printf(”%dn“,k);
}
}
A) 123 B) 1,2,3 C) 321 D) 3,2,1
74、执行下列程序后的输出结果是___D____.
#include
void main( )
{ int k=4,a=3,b=2,c=1;
printf(”%dn“,k
}
A) 4 B) 3 C) 2 D) 1
75、以下条件表达式中能完全等价于条件表达式x的是____B___.
A) (x==0) B) (x!=0) C) (x==1) D) (x!=1)
76、若运行下面程序时,给变量a输入15,则输出结果是___A___.
#include
void main( )
{ int a,b;
scanf(”%d“,&a);
b=a>15?a+10:a-10;
printf(”%dn“,b) ;
}
A) 5 B) 25 C) 15 D) 10
77、运行下面程序后,输出是___D___.
#include
void main( )
{ int k=-3;
if (k<=0) printf(”****n“);
else printf(”####n“)
}
A) ####
B) ****
C) ####****
D) 有语法错误不能通过编译
78、执行下面程序的输出结果是____C____.
#include
void main( )
{ int a=5,b=0,c=0;
if (a=a+b) printf(”****n“);
else printf(”####n“);
}
A) 有语法错误不能编译
B) 能通过编译,但不能通过连接
C) 输出 ****
D) 输出 ####
79、为了避免嵌套的if-else语句的二义性,C语言规定else总是与___C___组成配对关系.
A) 缩排位置相同的if
B) 在其之前未配对的if
C) 在其之前尚未配对的最近的if
D) 同一行上的if
80、设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为____C_____.
x=y=z=1;
t=++x || ++y && ++z;
1、算法
◆ 问题处理方案的正确而完整的描述称为【算法】。算法分析的目的是,分析算法的效率以求改进。算法的基本特征是【可行性】、【确定性】、【有穷性】和拥有足够情报。
◆ 算法的有穷性是指:算法程序的运行时间是有限的。
◆ 算法的复杂度是衡量算法好坏的度量,分为【时间复杂度】和【空间复杂度】。
★★ 时间复杂度是指执行算法所需要的【计算工作量】;算法的空间复杂度是指算法执行过程中所需的【存储空间】。
◆ 算法时间复杂度或空间复杂度中的一项的值,没有办法推出另一项的值。
2、数据结构
◆ 数据结构分为【逻辑结构】和【存储结构】。线性结构和非线性结构属于逻辑结构;顺序、链式、索引属于存储结构(物理结构)。循环队列属于【存储结构】。
★ 数据的存储结构又称为物理结构,是数据的逻辑结构在计算机存储空间中的存放形式。
◆ 一个逻辑结构可以有多种存储结构,且各种存储结构影响数据处理的效率。程序执行的效率与数据的存储结构密切相关。
◆ 数据结构分为线性结构和非线性结构,带链的队列属于【线性结构】。
◆ 线性表的存储结构主要分为顺序存储结构和链式存储结构。顺序存储结构的存储一定是连续的,链式存储的存储空间不一定是连续的。
◆ 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。
◆ 队列是一种特殊的线性表,循环队列按照【先进先出】原则组织数据。循环队列是队列的【顺序】存储结构。
◆ 数据的独立性分为【物理独立】性和【逻辑独立性】。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序可以不用修改,称为【物理独立性】。
3、栈和队列
★★ 栈是一种特殊的线性表,是只能在一端进行插入和删除的线性表,特点是FILO(First In Last Out)。
★★ 栈是【先进后出】的线性表;栈具有记忆作用;对栈的插入与删除操作中,不需要改变【栈底指针】。假定让元素1、2、3、A、B依次入栈,则出栈的顺序是:B、A、3、2、1。/ 6
◆ 栈与队列都是线性结构,树是非线性结构。支持子程序调用的数据结构是【栈】。
◆ 栈与队列的共同点是,都只允许在【端点处】插入和删除元素。
◆ 栈只能顺序存储的描述是错误的。栈可以有【顺序和链式】两种存储方式。
★★ 队列是允许在一段插入,在另一端进行删除的线性表,其特点是【先进先出】。
◆ 循环队列中元素的个数是由队头指针和队尾指针共同决定。循环队列的头指针为front,尾指针为rear,容量为maxSize,则循环队列中元素的个数是【(rear-front+maxSize)mod maxSize】。
4、线性链表
◆ 线性链表是线性表的链式存储结构。用链表表示线性表的优点是【便于插入和删除操作】。
◆ 线性链表的存储空间不一定连续,且个元素的存储顺序是任意的。
5、查找技术
◆ 对于长度为n的线性表,顺序查找最坏情况下需要比较n次。(对数据是否有序没有要求)。◆ 顺序查找最好情况下查询次数是1,最坏情况下是n,平均为(1+n)/2。
★★ 对于长度为n的有序线性表,二分法最坏情况下只需要比较log2n次。(数据必须有序)
◆ 能用二分法进行查找的是【顺序存储的有序线性表】。
6、排序技术
★★ 对于长度为n的线性表,【冒泡排序、快速排序、简单插入排序、简单选择排序】这四种排序方式在最坏情况下的比较次数相同,都是【n(n-1)/2】。堆排序的效率最高,是【nlog2n】。★★ 希尔排序最坏情况下需要次比较【n1.5】。希尔排序属于【插入类排序法】。
◆ 已知数据表A中每个元素距最终位置不远,为节省时间,应该采用的算法是【直接插入排序】。选择排序、插入排序、快速排序、归并排序中对内存要求最大的是【归并排序】。
第二部分 软件工程基础(历年比例27%)
1、软件工程基本概念
★★ 软件是包括【程序】、【数据】及【相关文档】的完整集合,软件是一种逻辑产品。软件工程三要素包括【方法、工具和过程】,其中【过程】支持软件开发的各个环节的控制和管理。
◆ 软件工程的核心思想:把软件产品当作是一个工程产品来处理,强调在软件开发过程中应用【工程化】原则。
◆ 从工程管理角度,软件设计一般分为两步完成,它们是【概要设计】和【详细设计】。/ 6
★★ 软件生命周期可分为多个阶段,一般分为【定义】阶段、【开发】阶段和【维护】阶段,编码和测试属于【开发阶段】。
◆ 需求分析阶段产生的主要文档是【软件需求规格说明书】。软件需求的规格说明书应该有完整性、无歧义性、正确性、可验证性、可修改性等特征,其中最重要的是【正确性】。
2、结构化分析与设计
★★ 需求分析的分发有:【结构化】需求分析方法,【面向对象】的分析方法。DFD是【需求分析阶段】可以使用的工具之一。
◆ 结构化分析的常用工具:数据流图(DFD);数据字典;判定树;判定表。
◆ 在结构化分析使用数据流图(DFD)时候,利用【数据字典】对其中的图形元素进行确切的解释。【数据字典】是结构化分析的核心。
◆ 典型的数据流类型有两种,【交换性】和【事务型】。
◆ 常见的过程设计工具有:图形工具(程序流程图、N-S,PAD,HIPO)、表格工具(判定表)、语言工具(PDL伪码)。
◆ 内聚性是模块内部的联系,耦合性模块之间的相互联系的紧密程度。
★★★ 追求目标是:模块的内聚程度要高,模块间的耦合程度要尽量弱。即高内聚低耦合。
★★ 程序流程图中带有箭头的线段表示的是【控制流】。【平行四边形】代表输入输出,【矩形】代表处理,菱形代表【判断】(注意,数据流图中的箭头,代表【数据流】)。
◆ 符合结构化原则的三种基本控制结构是:【顺序结构】,【选择结构】和【循环结构】。
3、软件测试与维护
★★ 软件测试的目的是尽可能多的发现程序中的错误,但是不包括改正错误。(软件调试的目的才是改正错误)
★★ 软件测试分为静态测试和动态测试,其中【静态测试】是指不执行程序,只对程序文本进行检查。软件的动态测试主要包括【黑盒测试】和【白盒测试】。
◆ 黑盒测试的方法有等价类划分法,边界值分析法,错误推测法,因果图;白盒测试主要方法有逻辑覆盖、基本路径测试。(考试时给出一种方法的名字,你要知道属于白盒还是黑盒)
【白盒测试】的原则之一是保证所测模块的每一个独立路径至少要执行一次。白盒测试将程序看做是【路径的集合】。
◆ 软件测试一般按照四个步骤进行:单元测试,集成测试,验收测试和系统测试。集成测试应该在【单元测试】之后进行。/ 6
◆ 在模块测试中,需要为每个被测试的模块设计【驱动模块】和【承接模块】。其中,驱动模块的作用是将测试的数据传给被测试的模块,并显示结果。
◆ 【测试用例】是为某个目标而编制的一组测试输入、执行条件及预期结果。测试用例包括输入值集和【输出值集】。
★★ 诊断和改正程序中的错误称为【程序调试】(或软件调试),通常也称为Debug。软件调试可分为【静态调试】和【动态调试】。
◆ 在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程称为【软件维护】。注意软件维护不属于软件生命周期【开发阶段】的任务。
第三部分 数据库设计基础(历年比例24%)
1、数据库系统基本概念
◆ 数据库设计的根本目标是要解决【数据共享问题】。在数据库管理技术发展的三个阶段中,数据共享最好的是【数据库系统阶段】。数据独立性最高的阶段是【数据库系统阶段】。
◆ 数据库系统与文件系统的区别是前者具有【特定的数据模型】。
◆ 数据库系统常见的数据模型有层次模型,网络模型和【关系模型】。
★★ 数据库系统的核心是【数据库管理系统】。
◆ DBS包括DB和DBMS。完整讲,数据库系统DBS由数据库DB、数据库管理系统DBMS、数据库管理员DBA、硬件平台和软件平台组成。
◆ 数据库应用系统的核心是【数据库维护】。
◆ 数据库系统的三级模式结构:内模式处于最底层,它反映了数据在计算机物理结构中的实际存储形式;概念模式处于中层,它放映了设计者的数据全局逻辑要求,与软硬件环境无关;
外模式处于最外层,它反映了用户对数据的要求。
◆ 在数据库系统中,用户所见的数据模式为【外模式】。
◆ 数据库设计的四个阶段是:需求分析、概念设计、【逻辑设计】和【物理设计】。将E-R图转换成关系数据模型属于【逻辑设计】阶段。
◆ 数据库管理系统提供的数据语言:数据定义语言DDL,数据操纵语言DML,数据控制语言DCL。SQL的全称是Structured Query Language,中文意思是【结构化查询语言】。
2、数据模型 / 6
★★★ 实体之间的联系用树形结构来表示的模型是【层次模型】。采用二维表来表示的是【关系模型】。在关系数据库中,把数据表示成二维表,每一个二维表称为【关系】。
◆ 在关系数据库中,用来表示实体之间联系的是【关系】。
◆ 将E-R图转化为关系模式时,实体和联系都可以表示为【关系】。
★★★ 确定两个实体之间是一对一、一对多、还是多对多的方法是:选择实体A,看是否有多个实体B与之对应;选择实体B,看是否有多个实体A与之对应。例如在“学生学习课程”中的两个实体,学生与课程,一个学生可以学习多门课程,一门课程可以被多个学生学习,所以二者是一种多对多的关系。
★★ 在E-R 图中,用来表示实体的图形是【矩形】。用来表示【属性】的图形是椭圆。用菱形来表示联系。
★★ 一个关系表的行称为【元组】(或记录),列称为【属性】(或字段)。
◆ 在二维表中,元组的【分量】不能再分为更小的数据线。
◆ 为了建立一个关系,首先要构造数据的【逻辑关系】。
3、关系代数
◆ 在交、差、投影中,不改变关系表中的属性个数但是能减少元组个数的是【交】运算。
★★★ 关系运算的规则(下面介绍的7种运算,考试的时候一般会考察一种,都要背)
(1)并运算R∪S:并运算是两个表行上的合并,重复的行只出现一次。
(2)交运算R∩S:交运算是选出两个表中的公共行。
(3)差运算R-S:差运算是从表R中,删除R与S中都出现过的行。
(4)选择运算:选出二维表【部分的行】称为选择运算。
(5)投影运算:选出二维表【部分的列】称为投影运算。
(6)连接运算:根据两个表的共同属性的值,将它们连接起来,无需去除共同属性。如果去掉了重复属性,就称为自然连接。
(7)笛卡尔乘积:将关系R中的每一行依次与关系S中的每一行进行排列组合。
注意:除了选择运算和投影运算操作的是单个表之外,其余的元算都需要两个表(两个关系)。其中,并运算、交运算和差运算要求两个关系R与S要具有相同个数的属性。
第四部分 程序设计基础(历年比例8%)
★★ 程序设计总体原则:清晰第一、效率第二。/ 6
◆ 良好程序风格包括:源程序要文档化,数据说明的次序要规范化,避免滥用goto语句。
◆ 结构化程序设计的核心是算法,面向对象的核心是对象(类)。
★★ 结构化程序设计的基本原则是:【自顶向下】、【逐步求精】、【模块化】、【限制使用Goto语句】。
★★ 类是一组具有相同属性和相同操作的对象的集合。面向对象模型中,最基本的概念是对象和【类】。在面向对象方法中,类的实例称为【对象】,实现信息隐藏是通过对象的【封装】。
★★ 面向对象的特征包括抽象,【封装】、【继承】、【多态】。
◆ 继承提高了软件的【可重用性】。
1、一个教师讲授多门课程,一门课程由多个教师讲
授。则实体教师与课程关系 B
A) 1:m 联系
B) m: n 联系
C) m: 1联系
D) 1:1联系
2、结构化程序所要求的基本结构不包括 B
A) 重复(循环)结构 B) GOTO跳转
C) 选择(分支)结构 D) 顺序结构
3、下列叙述中正确的是 C
A) 在栈中,栈中元素随栈底指针与栈顶指针的变化而
动态变化
B) 在栈中,栈顶指针不变,栈中元素随栈底指针的变
化而动态变化
C) 在栈中,栈底指针不变,栈中的元素随栈顶指针的
变化而动态变化
4、定义无符号整数类为Uint,下面可以作为unit实例
化的值是 C
A) 0.369
B) 整数集合{1,2,3,4,5}
C) 369
D) -369
5、下面描述中错误的是(D)
A) 软件设计是将软件需求转换为软件表示的过程
B) PAD图是软件详细设计的表示工具
C) 数据结构与数据库设计是软件设计的任务之一
D) 系统总体结构图支持软件系统的详细设计
6、软件按功能可以分为应用软件、系统软件和支撑软件,下面的软件中是应用软件的是 C
A) 数据库管理系统
B) UNIX操作系统
C) 学生成绩管理系统
D) C语言编译程序
7、下列关于栈叙述正确的是 C
A) 栈顶元素最后才能被删除
B) 栈底元素永远不能被删除
C) 栈顶元素最先能被删除
8、软件生命周期中的活动不包括 A
A) 市场调研 B) 软件测试
C) 软件维护 D) 需求分析
9、下列叙述中正确的是 D
A) 有一个以上根结点的数据结构不一定是非线性结构
B) 双向链表是非线性结构
C) 循环链表是非线性结构
D) 只有一个根结点的数据结构不一定是线性结构
10、下列关于数据库设计中的叙述中,正确的是 A
A) 在需求分析阶段建立数据字典
B) 在物理设计阶段建立数据字典
C)在逻辑设计阶段建立数据字典
D) 在概念设计阶段建立数据字典
11、下列叙述中正确的是 D
A) 设计算法时只需要考虑结果的可靠性
B) B)算法就是程序
C) 设计算法时只需要考虑数据结构的设计
D) D)以上三种说法都不对
12、程序调试的任务是 A
A) 诊断和改正程序中的错误
B)设计测试用例
C) 验证程序的正确性
D) 发现程序中的错误
13、下列关于二叉树的叙述中,正确是 C
A) 叶子结点是度为2的结点数的两倍
B) 度为2的结点数是度为1的结点数的两倍
C) 叶子结点总是比度为2的结点多一个
D) 叶子结点总是比度为2的结点少一个
14、数据库系统的三级模式不包括 B
A) 概念模式 B) 数据模式 C) 内模式 D) 外模式
1.全国计算机二级c语言练习题
2.计算机二级C语言考试冲刺练习
3.2017计算机二级C语言选择题练习
4.计算机二级C语言练习题
5.计算机二级C语言模拟练习
6.计算机二级C语言基础练习题
7.计算机二级《C语言》基础练习题及答案
8.计算机二级c语言试题
9.计算机二级《C语言》基础练习题及答案
(1)下面叙述正确的是______。(C)A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数 C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.以上三种描述都不对
(2)以下数据结构中不属于线性数据结构的是______。(C)A.队列 B.线性表 C.二叉树 D.栈
(3)在一棵二叉树上第5层的结点数最多是______。(B)A.8 B.16 C.32 D.15(4)下面描述中,符合结构化程序设计风格的是______。(A)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B.模块只有一个入口,可以有多个出口 C.注重提高程序的执行效率 D.不使用goto语句
(5)下面概念中,不属于面向对象方法的是______。(D)A.对象 B.继承 C.类 D.过程调用
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。(B)A.可行性分析 B.需求分析 C.详细设计 D.程序编码
(7)在软件开发中,下面任务不属于设计阶段的是______。(D)A.数据结构设计 B.给出系统模块结构 C.定义模块算法
D.定义需求并建立系统模型(8)数据库系统的核心是______。(B)A.数据模型 B.数据库管理系统 C.软件工具 D.数据库
(9)下列叙述中正确的是______。(C)A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统
C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致
(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。(A)A.内模式 B.外模式 C.概念模式 D.逻辑模式
(11)算法的时间复杂度是指______。(C)A.执行算法程序所需要的时间 B.算法程序的长度
C.算法执行过程中所需要的基本运算次数 D.算法程序中的指令条数
(12)下列叙述中正确的是______。(A)A.线性表是线性结构 B.栈与队列是非线性结构 C.线性链表是非线性结构 D.二叉树是线性结构
(13)设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。(B)A.349 B.350 C.255 D.351(14)结构化程序设计主要强调的是______。(B)A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性
(15)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。(D)A.概要设计 B.详细设计 C.可行性分析 D.需求分析
(16)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。(A)A.控制流 B.加工 C.数据存储 D.源和潭
(17)软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及______。(B)A.阶段性报告 B.需求评审 C.总结 D.都不正确
(18)下述关于数据库系统的叙述中正确的是______。(A)A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余
C.数据库系统中数据的一致性是指数据类型的一致 D.数据库系统比文件系统能管理更多的数据(19)关系表中的每一横行称为一个______。(A)A.元组 B.字段 C.属性 D.码
(20)数据库设计包括两个方面的设计内容,它们是______。(A)A.概念设计和逻辑设计 B.模式设计和内模式设计 C.内模式设计和物理设计 D.结构特性设计和行为特性设计(21)算法的空间复杂度是指______。(D)A.算法程序的长度 B.算法程序中的指令条数 C.算法程序所占的存储空间 D.算法执行过程中所需要的存储空间
(22)下列关于栈的叙述中正确的是______。(D)A.在栈中只能插入数据 B.在栈中只能删除数据 C.栈是先进先出的线性表 D.栈是先进后出的线性表
(23)在深度为5的满二叉树中,叶子结点的个数为______。(C)A.32 B.31 C.16 D.15(24)对建立良好的程序设计风格,下面描述正确的是______。(A)A.程序应简单、清晰、可读性好 B.符号名的命名要符合语法 C.充分考虑程序的执行效率 D.程序的注释可有可无
(25)下面对对象概念描述错误的是______。(A)A.任何对象都必须有继承性 B.对象是属性和方法的封装体 C.对象间的通讯靠消息传递 D.操作是对象的动态性属性
(26)下面不属于软件工程的3个要素的是______。(D)A.工具 B.过程 C.方法 D.环境
(27)程序流程图(PFD)中的箭头代表的是______。(B)A.数据流 B.控制流 C.调用关系 D.组成关系
(28)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是______。(A)A.数据库系统 B.文件系统 C.人工管理 D.数据项管理
(29)用树形结构来表示实体之间联系的模型称为______。(B)A.关系模型 B.层次模型 C.网状模型 D.数据模型
(30)关系数据库管理系统能实现的专门关系运算包括______。(B)A.排序、索引、统计 B.选择、投影、连接 C.关联、更新、排序 D.显示、打印、制表
(31)算法一般都可以用哪几种控制结构组合而成______。(D)A.循环、分支、递归 B.顺序、循环、嵌套 C.循环、递归、选择 D.顺序、选择、循环
(32)数据的存储结构是指______。(B)A.数据所占的存储空间量
B.数据的逻辑结构在计算机中的表示 C.数据在计算机中的顺序存储方式 D.存储在外存中的数据(33)设有下列二叉树:
对此二叉树中序遍历的结果为______。(B)A.ABCDEF B.DBEAFC C.ABDECF D.DEBFCA(34)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。(D)D.消息 A.调用语句 B.命令 C.口令
(35)检查软件产品是否符合需求定义的过程称为______。(A)A.确认测试 B.集成测试 C.验证测试 D.验收测试
(36)下列工具中属于需求分析常用工具的是______。(D)A.PAD B.PFD C.N-S D.DFD(37)下面不属于软件设计原则的是______。(C)A.抽象 B.模块化 C.自底向上 D.信息隐蔽
(38)索引属于______。(B)A.模式 B.内模式 C.外模式 D.概念模式
(39)在关系数据库中,用来表示实体之间联系的是______。(D)A.树结构 B.网结构 C.线性表 D.二维表
(40)将E-R图转换到关系模式时,实体与联系都可以表示成______。(B)A.属性 B.关系 C.键 D.域
(41)在下列选项中,哪个不是一个算法一般应该具有的基本特征______。(C)A.确定性 B.可行性 C.无穷性
D.拥有足够的情报
(42)希尔排序法属于哪一种类型的排序法______。(B)A.交换类排序法 B.插入类排序法 C.选择类排序法 D.建堆排序法
(43)下列关于队列的叙述中正确的是______。(C)A.在队列中只能插入数据 B.在队列中只能删除数据 C.队列是先进先出的线性表 D.队列是先进后出的线性表
(44)对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。(B)A.N+1 B.N C.(N+1)/2 D.N/2(45)信息隐蔽的概念与下述哪一种概念直接相关______。(B)A.软件结构定义 B.模块独立性 C.模块类型划分 D.模拟耦合度
(46)面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。(C)A.模拟现实世界中不同事物之间的联系 B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题 D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。(C)A.详细设计 B.需求分析 C.总体设计 D.编程调试
(48)软件调试的目的是______。(B)A.发现错误 B.改正错误 C.改善软件的性能 D.挖掘软件的潜能
(49)按条件f对关系R进行选择,其关系代数表达式为______。(C)A.R|X|R B.R|X|R f C.бf(R)D.∏f(R)(50)数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。(D)A.自顶向下 B.由底向上 C.由内向外 D.由整体到局部
(51)在计算机中,算法是指______。(C)A.查询方法 B.加工方法
C.解题方案的准确而完整的描述 D.排序方法
(52)栈和队列的共同点是______。(C)A.都是先进后出 B.都是先进先出
C.只允许在端点处插入和删除元素 D.没有共同点
(53)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。(A)A.cedba B.acbed C.decab D.deabc(54)在下列几种排序方法中,要求内存量最大的是______。(D)A.插入排序 B.选择排序 C.快速排序 D.归并排序
(55)在设计程序时,应采纳的原则之一是______。(A)A.程序结构应有助于读者理解 B.不限制goto语句的使用 C.减少或取消注解行 D.程序越短越好
(56)下列不属于软件调试技术的是______。(B)A.强行排错法 B.集成测试法 C.回溯法 D.原因排除法
(57)下列叙述中,不属于软件需求规格说明书的作用的是______。(D)A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据 C.作为确认测试和验收的依据 D.便于开发人员进行需求分析
(58)在数据流图(DFD)中,带有名字的箭头表示______。(C)A.控制程序的执行顺序 B.模块之间的调用关系 C.数据的流向 D.程序的组成成分
(59)SQL语言又称为______。(C)A.结构化定义语言 B.结构化控制语言 C.结构化查询语言 D.结构化操纵语言
(60)视图设计一般有3种设计次序,下列不属于视图设计的是______。(B)A.自顶向下 B.由外向内 C.由内向外 D.自底向上(61)数据结构中,与所使用的计算机无关的是数据的______。(C)A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构
(62)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。(D)A.ABCED B.DBCEA C.CDABE D.DCBEA(63)线性表的顺序存储结构和线性表的链式存储结构分别是______。(B)A.顺序存取的存储结构、顺序存取的存储结构 B.随机存取的存储结构、顺序存取的存储结构 C.随机存取的存储结构、随机存取的存储结构 D.任意存取的存储结构、任意存取的存储结构(64)在单链表中,增加头结点的目的是______。(A)A.方便运算的实现 B.使单链表至少有一个结点 C.标识表结点中首结点的位置 D.说明单链表是线性表的链式存储实现
(65)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。(B)A.模块间的关系
B.系统结构部件转换成软件的过程描述 C.软件层次结构 D.软件开发过程
(66)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。(B)A.PAD图 B.N-S图 C.结构图 D.数据流图
(67)数据处理的最小单位是______。(C)A.数据 B.数据元素 C.数据项 D.数据结构
(68)下列有关数据库的描述,正确的是______。(C)A.数据库是一个DBF文件 B.数据库是一个关系
C.数据库是一个结构化的数据集合 D.数据库是一组文件
(69)单个用户使用的数据视图的描述称为______。(A)A.外模式 B.概念模式 C.内模式 D.存储模式
(70)需求分析阶段的任务是确定______。(D)A.软件开发方法 B.软件开发工具 C.软件开发费用 D.软件系统功能
(71)算法分析的目的是______。(D)A.找出数据结构的合理性
B.找出算法中输入和输出之间的关系 C.分析算法的易懂性和可靠性 D.分析算法的效率以求改进
(72)n个顶点的强连通图的边数至少有______。(C)A.n-1 B.n(n-1)C.n D.n+1(73)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是______。(B)A.堆排序 B.直接插入排序 C.快速排序 D.直接选择排序
(74)用链表表示线性表的优点是______。(A)A.便于插入和删除操作
B.数据元素的物理顺序与逻辑顺序相同 C.花费的存储空间较顺序存储少 D.便于随机存取
(75)下列不属于结构化分析的常用工具的是______。(D)A.数据流图 B.数据字典 C.判定树 D.PAD图
(76)软件开发的结构化生命周期方法将软件生命周期划分成______。(A)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段 C.总体设计、详细设计、编程调试 D.需求分析、功能定义、系统设计
(77)在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是______。(C)A.循环的集合 B.地址的集合 C.路径的集合 D.目标的集合
(78)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有______。(D)A.数据无冗余 B.数据可共享
C.专门的数据管理软件 D.特定的数据模型
(79)分布式数据库系统不具有的特点是______。(B)A.分布式 B.数据冗余
C.数据分布性和逻辑整体性 D.位置透明性和复制透明性
(80)下列说法中,不属于数据模型所描述的内容的是______。(C)A.数据结构 B.数据操作 C.数据查询 D.数据约束
(1)算法的复杂度主要包括______复杂度和空间复杂度。答:时间
(2)数据的逻辑结构在计算机存储空间中的存放形式称为数据的______。答:模式#逻辑模式#概念模式
(3)若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。答:黑盒
(4)如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体“工人”与实体“设备”之间存在______联系。答:一对多#1:N#1:n(5)关系数据库管理系统能实现的专门关系运算包括选择、连接和______。答:投影
(6)在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、______遍历和后序遍历。答:中序
(7)结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。答:模块化
(8)软件的调试方法主要有:强行排错法、______和原因排除法。答:回溯法
(9)数据库系统的三级模式分别为______模式、内部级模式与外部级模式。答:概念#概念级(10)数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。答:数据存储
(11)设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点。答:250(12)在最坏情况下,冒泡排序的时间复杂度为______。答:n(n-1)/2#n*(n-1)/2#O(n(n-1)/2)#O(n*(n-1)/2)(13)面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。答:实体
(14)软件的需求分析阶段的工作,可以概括为四个方面:______、需求分析、编写需求规格说明书和需求评审。答:需求获取
(15)______是数据库应用的核心。答:数据库设计
(16)数据结构包括数据的______结构和数据的存储结构。答:逻辑
(17)软件工程研究的内容主要包括:______技术和软件工程管理。答:软件开发
(18)与结构化需求分析方法相对应的是______方法。答:结构化设计
(19)关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。答:参照完整性
(20)数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。答:概念
(21)栈的基本运算有三种:入栈、退栈和______。答:读栈顶元素#读栈顶的元素#读出栈顶元素
(22)在面向对象方法中,信息隐蔽是通过对象的______性来实现的。答:封装
(23)数据流的类型有______和事务型。答:变换型
(24)数据库系统中实现各种数据管理功能的核心软件称为______。答:数据库管理系统#DBMS(25)关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。答:查询
(26)实现算法所需的存储单元多少和算法的工作量大小分别称为算法的 ______。答:空间复杂度和时间复杂度
(27)数据结构包括数据的逻辑结构、数据的 ______以及对数据的操作运算。答:存储结构
(28)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的______。答:可重用性
(29)面向对象的模型中,最基本的概念是对象和 ______。答:类
(30)软件维护活动包括以下几类:改正性维护、适应性维护、______维护和预防性维护。答:完善性
(31)算法的基本特征是可行性、确定性、______和拥有足够的情报。答:有穷性
(32)顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。答:相邻
(33)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。答:数据结构
(34)数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
答:概念设计阶段#数据库概念设计阶段
(35)数据库保护分为:安全性控制、______、并发性控制和数据的恢复。答:完整性控制
(36)测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。答:调试
大多数计算机系统的内存储器是由众多的存储单元构成的。在微机中,每个存储单元是1个字节,它由8位二进制数构成,可以表示28=256种信息,各位的编号从0~7,最左边的位(第7位)是最高位,最右边的位(第0位)是最低位。由于二进制本身的特点,各位上的数字不是1,就是0。
本章中的位就是指上述提到的二进制位,本章中的位运算就是指对这些二进制的位进行逻辑运算、移位运算等操作。
2.数的编码
数在计算机中是以二进制表示的,但是它并不是简单地以它本身的数值的二进制形式来直接表示,而要进行一定的编码,以方便计算机进行处理。常用的编码有原码、反码、补码三种。
3.真值与原码
我们将一个十进制数的二进制表示称为这个十进制数的真值,它代表了这个十进制数本身的数值。下表列出了一些数的真值。
真值举例
数二进制表示真值(16位)
1
70
1
1110000000000000000
0000000000000001
0000000000000111
15
1111
0000000000001111
255
4095
6553511111111
111111111111
11111111111111110000000011111111
0000111111111111
1111111111111111
用真值表示的数只能是正数,对于负数,要用“一”号标明,例如:
-7的真值为-0000000000000111-65535的真值为-1111111111111111
这势必造成用计算机表示数时的不便,故引入了原码表示法。
在原码表示法中,最高位代表符号位,用“1”表示负数,“0”表示正数;余下的数位用来表示真值的绝对值。
数字零存在着两种表示方法:+0与-0。
4.反码
若采用反码表示,则对应的原码应按照以下方法进行转换:
(1)如果真值为正,则它的反码与原码相同;
(2)如果真值为负,则反码的符号位为1,其余各位就是对原码取反(即原码的1变为0,原码的0变为1)。
5.补码
(1)为什么要引入补码
补码具有许多独特的优点:首先它可以变减法运算为加法运算,使得计算时步骤统一,速度提高;其次,在这种系统下的“0”只有惟一的一种表示方法,这就是现代的计算机系统中大多采用补码的原因。
(2)补码的规定
①正数的原码、补码、反码均相同;
②计算负数的补码时,先置符号位为1,再对剩余原码的位数逐位取反,最后对整个数加1。
在微机上以8位二进制数为一字节的存储单元中采用补码系统,它可以存放的最小整数为-128,最大整数为+127。若采用两个字节来表示一个整数,则可表示的最小整数为-32768,最大整数为+32767。
1.计算机二级C语言程序设计考点解析:C语言程序实例
2.计算机二级C语言程序设计考点:指针
3.计算机二级C语言程序设计考点:数组
4.计算机二级C语言程序设计考点:函数
5.计算机二级C语言程序设计考点解析:常用的输人函数
6.计算机二级C语言程序设计考点解析:常用的输出函数
7.计算机二级C语言程序设计考点解析:程序设计基本
8.计算机二级C语言程序设计考点:C语言的特点
9.计算机二级C语言程序设计考点:C语言的应用
分析:
逻辑结构:线性结构 非线性结构
线性结构:线性表 栈 队列
非线性结构:树 图
存储结构:顺序存储结构 链式存储结构
2.关于循环队列中起始元素为0,还是1的问题,然后是否空出一个元素避免队满队空一样。不管是栈还是队列栈顶指针都是指向下一个位置,所以对循环队列为(Q.rear-Q.font+MAXSIZE)%MAXSIZE
3.关于逗号表达式的运算顺序(A , B)是先算B再算A ?
赋值表达式是左值表达式,逗号表达式是自左向右运算的,逗号表达式的返回值是最右值
4.转义字符:ddd表示反斜杠后为1~3位8进制数所代表的字符数,xhh为1~2位十六进制数所代表的字符数
5.关于switch没有default会不会一直进行下去
6.*与+=运算符优先级的比较 *p+=2,是先算哪个 先算*p
7.循环队列是顺序存储结构(是队列的顺序存储结构的拓展,虽然有链队列,但是循环队列只限于顺序存储结构)
8.能够给出数据库物理存储结构与物理存取方法的是 :内模式
9.在满足实体完整性约束的条件下:一个关系中应该有一个或者多个候选关键词
10.软件生命周期中的活动不包括:市场调研
11.在黑盒测试方式中,设计测试用例的主要根据是:程序外部功能
12.在软件设计中不使用的工具是 D A、系统结构图
B、程序流程图
C、PAD图
D、数据流图(DFD图)
13.只要在在允许范围内整型和实型都能精确表示
14.一个正确的算法可以没有输入,但是要有输出
15.char str[3][10];str[1]={“guest”};(X)解释:str[1]是str[1][0]的地址,所以不能直接赋值 16.关于define定义的函数 S(x)(x)*x*2 在main函数中赋值时是按值固有的形式进行的运算,传a+b就为(a+b)*a+b*2
17.ftell不能用于向函数写入数据,fwrite fput fprintf 都可以
18.一般没有特殊说明时,循环队列并不会单独留一个空间来区分队满与队空,所以对于初始状态front=rear=n的条件,表明的就是n为队列能存放的最多元素,队满时就为rear比front小1
19.数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是(数据操纵语言)。
20.表达式的优先级:赋值表达式和关系表达式的优先级比较 k1=k1>k2
21.if表达式中如果是负值表示成立还是不成立
22.二维数组赋初值第一维长度可以省略的条件是什么
23对数据设计来说,.数据字典是进行详细数据收集和数据分析所获得的主要结构 所以在需求分析阶段建立数据字典
24.数据库系统的三级模式:概念模式,内模式(物理模式),外模式
没有数据模式
25.面向对象程序设计特征:继承,封装,多态
结构化程序设计:自顶向下,模块化,逐步求精
26.double a,*p=&a,*只是说明其为指针变量,表明p只能存放double类型变量的地址
27.在函数定义的静态变量,只需赋值一次,即可保持初始值,不需要每次调用都赋初值
形参不可说明为static型变量
28.采用结构化开发软件时,需要使用数据流图
29.数据库的核心:数据库管理系统(DBMs)
数据库系统包括四个部分:数据库、数据库管理系统、数据库应用程序、数据库管理员。
30.在实体,关系图中的联系通常被转化为关系。
结构化程序设计的主要特点是 : 每个控制结构只有一个入口和一个出口 在模块化程序设计中 , 按功能划分模块的原则是 : 各模块的功能尽量单一 , 31.且各模块之间的联系尽量少
在面向对象的程序设计中 , 各个对象之间相对独立 , 相互依赖性小
32.在面向对象方法中,一个对象请求另一个对象为其服务和方式是通过发送 D
A)调用语句
B)命令
C)口令
D)消息
33.软件三要素:程序、数据和文档 软件生命周期包括软件定义、软件开发及软件维护三个阶段
结构化分析常用工具:数据流图(DFD)
34.软件工程的三个要素的是:工具,过程,方法
35.内聚性最强的是:功能内聚
【计算机二级考试C语言知识点总结】推荐阅读:
计算机二级试卷c语言07-25
计算机图形学c语言10-21
计算机二级公共知识点11-01
江苏省计算机二级考试12-20
计算机二级ms基础知识12-18
计算机二级考试:VB冲刺试题及答案09-13
计算机二级VB考试题及答案12-17
上海市计算机等级考试二级Java程序设计12-16
国家计算机二级ACCESS函数总结12-03