2018.3.1 计算机二级错题(3.1)
计算机二级错题(3.1)
1.栈与队列问题
栈是先进后出的线性表;队列是先进先出的线性表;循环队列是线性结构的线性表;有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
2.子程序调用的数据结构是
栈支持子程序调用。栈是一种只能在一段进行插入或删除的线性表,在主程序调用子函数时首先保存主程序的当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行。
3.二叉树计算结点问题
二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的节点多一个
4.排序问题次数
冒泡排序与简单插入排序与简单选择排序在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较次数时nlog2 n
5.软件测试与程序调试
软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误;
软件测试的基本准则:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象。
程序调试的基本步骤有:错误定位、修改设计个代码,以排除错误、进行回归测试,防止引进新的错误;也叫做Debug即排错。
6.数据库应用系统中的核心问题
核心问题是:数据库的设计
7.投影运算
投影运算是指对于关系内的域指定可引入新的运算。在关系R的内部进行的,是由R中原有的那些域的额列所组成的关系。
8.E-R图关系模式
从E-R图到关系模式的转换时比较直接的,是体育联系都可以表示称关系,E-R图中属性也可以转换成关系属性
9.C源程序中能标识的数制包括
在C语言中整型常量可以用十进制、八进制、十六进制等形式 但是不包括二进制
10.格式控制符
再输入多个数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。 输入格式: 12a34b<CR> 输出结果: 12,a,34,b
11.break语句
default语句在switch语句中可以省略;
switch语句中并非每个case后都需要使用break语句;
break语句还可以用于for等循环结构中
12.指针
double a, *p = &a;
“* ” 是一个指针运算符也是一个说明符 但是不是一个间址运算符25
定义语句中的p只能存放double类型变量的地址
定义语句中,*p = &a把变量a的地址作为初值赋给指针变量p
25
13.数据类型
xy如果都是double类型 那么输入时的格式字符应为 "%lf"
14.函数调用问题
#include<stdio.h>
void fun(int a,int b){
int t;
t=a;
a=b;
b=t;
}
main(){
int c[10]={1,2,3,4,5,6,7,8,9,0};
for(int i = 0;i<10;i+=2)
fun(c[i],c[i+1]);
for(int i = 0;i<10;i++)
printf("%d",c[i]);
printf("\n");
}
程序的运行结果是:1,2,3,4,5,6,7,8,9,0
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值法相地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值并没有变化。
15.数据打印问题
#include<stdio.h>
main(){
int x[3][2]={0},i;
for(i =0;i<3;i++)
scanf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入: 2 4 6 <回车> 输出结果为 2 0 4
解释:输入的3个数据2,4,6 分别赋值给了x[0][0],x[1][0],x[2][0]
16.字符型指针变量赋值
char *s; s = "Olympic";
char s[] = {"Olympic"} ;//初始化数组 或者
char s[] = "Olympic";
注意:字符数组可以在定义的时候初始化,不可以再定义数组后,对数组名赋值(数组名是常量,代表数组首地址) 还有字符数组的大小要在看得见的字母前提下额外加1 因为包含了 "\0" 标志。 例如:char s[>=8就可以了] = {"Olympic"}
17.解释函数的功能
int fun(char *s){
char *t = s;
while(*t++);
t--;
return (t-s;)
}
说明:
首先char *s 结束一个字符型数组的首地址并将这个首地址赋给另一个字符型指针char *t ,while(*t++) 不断循环直到*t为 “ \0 ” 再将t-1,这时字符指针t只想字符串的最后一个字符,又因为s指向字符数组的收地址即字符串的首地址所以return(t-s) 便是返回字符数组中字符串的长发度。
18.静态局部变量
int f(int n);
mian(){
int a = 3,s;
s=f(a);s=s+f(a);
printf("%d\n",s);
}
int f(int n){
static int a = 1;
n+=a++;
return n;
}
输出程序结果: 9
说明:在静态存储区分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行n+=a++ 时a先与n相加再进行自增。n的值为4,调用f(a) 函数时n的返回值为n=3+2=5,此时a的值为3了 所以s的值为9
19.宏定义概念
宏替换没有数据类型限制;宏定义写在函数的花括号外边,作用于为其后的程序,通常在文件的最开头;宏名一般是用大写,但不是必须大写;宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
20.位操作
例子:
int a = 1,b=2,c;
c=a^(b<<2);
执行后,c的值为 9
说明:b为2,二进制为00000010 执行左移两位操作后为00001000,然后与a 00000001 做异或操作结果为00001001 等于9
注意:在C语言中没有<> 运算符 ; 在赋值语句中不能data2=(2,6); 应该是data2={2,6} 在看题目的时候注意标点符号