2021-2022年湖北省十堰市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________一、单选题(20题)1.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。A.24 B.48 C.72 D.53 2.已知二叉树后序遍历序列是dabeC,中序遍历序列是debaC,它的前序遍历序列是()。A.aChed B.deCab C.deabe D.Cedba 3.若有定义“int b[8],*p=b;”,则p+6表示()。A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6 4.在C语言中,退格符是A.\n B.\t C.\f D.\b 5.以下语句中存在语法错误的是()。A.char ss[6][20];s[1]="right?";B.char ss0[20]={"right?"};.C.char*ss[6];s[1]="right?";D.char*ss[={"rignt?"};6.有以下程序main(){int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是A.12 B.123 C.234 D.345 7.若二维数组a有m列,则在a[i][j]前的元素个数为()。A.i*m+j-1 B.i*m+j C.J*m+i D.i*m+j+1 8.9.若有如下程序:#define PI 3.1415926#define A(r)2*PI*r main(){float a,1;a=3.0;1=A(a);printf("r=%.2f,1=%.2f\n",a,1);}则程序运行后的输出结果是()A.r=3.00 1=18.85 B.3.00,18.85 C.r=3.000000 1=18.8495555 D.r=3.0 1=18.8495555 10.单链表中,增加一个头结点的目的是为了()。A.使单链表至少有一个结点B.标识表结点中首结点的位置C.方面运算的实现D.说明单链表是线性表的链式存储11.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。A.e1、e2、e3、e4、e5 B.e5、e4、e3、e2、e1 C.e2、e4、e3、e5、e1 D.e3、e4、e1、e2、e5 12.13.以下正确的字符串常量是()。A.\\\B.’abc’C.Olympic Games 14.以下选项中,当x为大于1的奇数时,值为0的表达式是A.x%2==1 B.x/2 C.x%2!=0 D.x%2==0 15.用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。A.j=r[j].next B.j=j+1 C.j=j->next D.j=r[j]->next 16.与单链表相比,双向链表的优点之一是()。A.插入、删除操作更加简单B.可以随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更加灵活17.有以下程序:#include<stdio.h>main(){int a=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf(“%d,%d\n”,a,b);}程序运行后的输出结果是()。A.9,18 B.8,11 C.7,11 D.10,14 18.若已知一个栈的入栈序列是1,2,3,......,n,其输出序列为p1,p2,p3,..,pn,若p1=n-1,则pi可能为()A.n B.n-i C.n-i+1 D.不确定19.计算机算法必须具备输入、输出和()等5个特性。A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性20.二、2.填空题(20题)21.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。22.最简单的交换排序方法是______。23.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。24.下列程序的输出结果是______。long fun5(int n){long s;if((n==1)‖(n==2))s=2;else s=n+fun5(n-1);return(s);}main(){long x;x=fun5(4);printf("%1d\n",x);}25.在一棵二叉树上第6层的结点个数最多是______个。26.下列程序用来将从键盘上输入的2个字符串进行比较,然后输出2个字符串中第1个不相同字符的ASCII码之差。例如,输入的2个字符串分别为abcdef和abceef,则输出为-1。#include main(){char str[100],str2[100],c;int i,s;printf("\n input string 1:\n");gest(str1);printf("\n input string 2:\n");gest(str2);i=0;while((strl[i]==str2[i]&&(strl[i]!=【】))i++;s=【】;printf(.%d\n",s);27.在C语言中,可以利用【】,将一个表达式的值转换成指定的类型。28.以下程序运行后的输出结果是______。#include<strlng.h>main(){char ch[]="abc",x[3][4];int i;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]);printf("\n");29.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。30.算法执行过程中所需要的基本运算次数称为算法的______。31.以下程序的输出结果是______。void fun(){static int a=0;a+=2;printf("%d",a);}main(){int cc;for(cc=1;cc<4;cc++)fun();printf("\n");}32.数据结构分为逻辑结构与存储结构,线性链表属于【】。33.在结构化分析使用的数据流图(DFD)中,利用【】对其中的图形元素进行确切解释。34.用高级语言编写的程序称为【】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。35.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点。36.执行以下程序后的输出结果是【】。main(){int a=10;a=(3*5,a+4);printf("a=%d\n",a);}37.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。int fun(int n){int m=0,f=1,i;for(i=1:i<=n;i++){m+=i*f;f=______;}return m;}main(){printf(“m=%d\n”,______)};38.数据库系统中实现各种数据管理功能的核心软件称为【】。39.下面程序的运行结果是()。##include<stdio.h>main(){int a,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}40.若a=10,b=20,则表达式!(a<b)的值是【】。三、1.选择题(20题)41.若有以下结构体定义,则______是正确的引用或定义。struct example{int x;int y;}v1;A.example.x=10 B.example v2.x=10 C.struct v2;v2.x=10 D.struct example v2={10};42.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()A.冒泡排序为n(n-1)/2 B.简单插入排序为n C.希尔排序为n D.快速排序为n/2 43.有以下程序;char fun(char x,char y){if(x<y)return x;return y;}main(){int a=’9’,b=’8’,c=’7’;print f("%c\n",fun(fun(a,B),fun(b,C)));}程序的执行结果是A.函数调用出错B.8 C.9 D.7 44.以下叙述中,正确的是______。A.输入项可以是一个实型常量,例如:scanf("%f",3.5);B.只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf("a=%d,b=%d");C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf("%4.2f",&d);D.当输入数据时,必须指明变量地址,例如:scanf("%f",&f);45.下列关于字符串的说法中错误的是A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志B.′\0′作为标志占用存储空间,计入串的实际长度C.在表示字符串常量的时候不需要人为在其末尾加入′\0′D.在C语言中,字符串常量隐含处理成以′\0′结尾46.以下4个选项,不能看作一条语句的是()。A.{;}B.int x=0,y=1,z=0;C.if(!A);D.if(b==0)m=1;n=2;47.C语言源程序名的后缀是A..exe B..C C..obj D..cp 48.阅读以下函数fun(char*sl,char*s2){int i:0;while(sl[i]==s2[i]&&s2[i]!=’\0’)i++;return(sl[i]==’\0’&&s2[i]==’\0’);}此函数的功能是A.将s2所指字符申赋给s1 B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0 C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为o D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为o 49.以下程序的运行结果为#include"stdio.h"main(){int m,n;for(m=0,n=10;m<n;m+=3,n--);printf("%d,%d\n",m,n);}A.6,7 B.7,6 C.9,7 D.7,9 50.请读程序:#include<stdio.h>int a[]={2,4,6,8};main(){int i;int*p=a;for(i=0;i<4;i++)a[i]=*p++;printf("%d\n”,a[2]);}上面程序的输出结果是()A.6 B.8 C.4 D.2 51.下列程序段的执行结果是______。int i;int x[][3]=}1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",x[i][2-i]);A.1 59 B.1 4 7 C.3 5 7 D.3 6 9 52.下列程序的输出结果是#include"stdio.h"#define N 3#define M 3 void fun(int a[M][N]){printf("%d\n",*(a[1]+2));}main(){int a[M][N];int i,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j);fun(a);}A.3 B.4 C.5 D.6 53.有以下定义和语句:struct students{int num;char name[20];char c;struct{int grade1;int grade2;}s;};struct students w,*pw;*pw=w;下列赋值语句不正确的是()。A.w.num=1002;B.w.grade1=85;C.pw->num=1002;D.w.s.grade2=85;54.以下程序的输出结果是______。int a,b;void fun(){a=100;b=200;}main(){int a=5,b=7;fun();printf("%d%d\n",a,b);}A.100200 B.57 C.200100 D.75 55.运行下面的程序,其输出结果为______。main(){printf("%d,%d",5%-3,-5%3);}A.2,-2 B.-2,2 C.-2,-2 D.2,2 56.软件开发的结构化生命周期方法将软件生命周期划分成()A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计57.现有如下程序段,此程序段编译有错误,则程序段的错误出在#include<stdio.h>main(){int a=30,b=40,c=50,d;d=a>30?b:c;swish(d){case a:Printf("%d,",a);case b:printf("%d,",b);case c:printf("%d,",c);default printf("#");}}A.default:printf("#");这个语句B.d=a>30?b:c;这个语句C.case a:printf("%d,",a);case b:printf("%d,",b);case c:printf("%d,",c);这三个语句D.switch(d)这个语句58.设整型数i=5,则printf("%d",i+++++i);的输出为______。A.10 B.11 C.12 D.语法错误59.能直接与CPU交换信息的功能单元是()。A.硬盘B.控制器C.主存储器D.运算器60.以下程序运行后的输出结果是______。main(){char m;m=’B’+32;printf("%c\n",m);}A.a B.b C.c D.d四、选择题(20题)61.62.63.64.以下关于指针概念不正确的是()。A.指针变量可以用整数赋值,但不可以用浮点数赋值B.一个变量的地址称为该变量的指针,一个指针变量只能指向同一类型的变量C.只有同一类型的变量地址才能放到指向该类型变量的指针变量之中D.只能将地址赋给指针变量65.66.下列叙述中正确的是()。A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关67.68.69.有以下程序段:程序运行后的输出结果是()。A.a=10 b=50 C=30 B.a=10 b=50 c=10 C.a=10 b=30 c=10 D.a=50 b=30 c:50 70.栈和队列的共同特点是()。A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点71.以下不合法的数值常量是()。A.8.0E0.5 B.lel C.0ll D.0xabcd 72.有以下程序:#include<stdio.1l>void WriteStr(char*fn.char*str){FILE*fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main{WriteStr("tl.dat","start");WriteStr("t1.dat","end");)程序运行后,文件t1.dat中的内容是()。A.start B.end C.startend D.endrt 73.算法分析最重要的目的是A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进74.下列叙述中错误的是()。A.A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容C.在C语言中,外部变量的隐含类型是自动存储类别D.在C语言中,函数形参的存储类型是自动(auto)类型的变量75.76.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。A.x&&y B.x<=y C.x||++y&&y-z D.!(x<y&&!z||1 77.C语言用_______表示逻辑“真”值。A.true B.t或y C.非零整型值D.整型值0 78.软件设计中衡量模块独立性的度量标准是()。A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法79.有以下程序#include<stdio.h>main{int a=1,b=2,c=3,x;x=(a^b)&C;printf("%d",x);}程序的运行结果是()。A.0 B.1 C.2 D.3 80.设有定义:doublex=5.16894;,则语句prinff(”%If\n”,(int)(x$1000+0.5)/1000.);的输出结果是()。A.5.16900 B.5.16800 C.0.00000 D.输出格式说明符与输出项不匹配,产生错误信息五、程序改错题(1题)81.下列给定程序中,fun()函数的功能是:求3个数的最小公倍数,例如,给变量a、b、c、分别输入15、11、2,则输出结果应当是330。请修改函数中的错误,得出正确的结果。注意:不要改动main()函数,不能增行或减行,也不能更改程序的结构。试题程序:六、程序设计题(1题)82.数组point中存放着m个人的成绩,请编写函数fun().它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。例如,当point数组中的数据为50,60,65,70.75,80.88,90,95时,函数返回的人数应该是5,high中的数据应为75,80,88,90,95。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。注意:部分源程序给出如下。试题程序:参考答案1.D 2.D二叉树的遍历有3种:前序、中序和后序。①前序遍历访问根结点,然后按左右顺序遍历子结点;②中序首先遍历左子树,然后访问根结点,最后遍历右子树;③后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为D。3.B指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中“P+6”指的是将指针向后移动了6个存储单元,即指向uE63,存放的是b[6]的地址。4.D解析:在C++语言中退格符表示为\\b退格。注意:其他转义字符的意义:\\n表示回车换行,\\t表示横向跳到下一制表位置,\\v表示竖向跳格,\\r表示回车,\\f表示走纸换页,\\\\表示反斜线符,\\a表示鸣铃,\\ddd1~3位表示八进制数所代表的字符,\\xhh1~2位表示十六进制数所代表的字符。5.A[解析]数组定义后,不可以对数组整体赋值,s是二维数组,因ss[1]是一维字符数组,即字符串,字符串赋值可以使用strcpy[1],"right);这样的形式,而选项A)中对二维数组中的第“1维(相当于一个一维数组)赋值,是不可以的。选项B)和D)是定义时对数组初始化,这是可以的。选项C)中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。6.D解析:本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在C语言中,这些数组元素在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快.例如本题中定义的二维数组a[3][3]中9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素a[0][0]。在第一个for循环中,依数组a在内存中的排列顺序为其元素赋从0~8九个值,然后用第二个for循环依次输出a[1][0],a[1][1],a[1][2]三个元素的值。所以,4个选项中选项D符合题意。7.B解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。8.C 9.A 10.C 11.D解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出”。本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元素为e3,由于入栈顺序是e1、e2、e3,那么e3出栈后,栈中元素必定有e1和e2,因为e1先入栈,故e1应在e2后出栈,所以选项D是不可能的出栈顺序。12.C 13.D解析:在C语言中,字符串常量是以双引号括起来的字符序列。故选项B和C不正确。字符序列中可包含一些转义字符,转义字符都是以“\\”开头的。选项A中包含了三个“\\”,前两个(\\\\)代表了一个“\\”字符,后面一个和“’”一起(\\”)被看作一个……,所以该字符串缺少一个结束的“’”,故不正确。选项D的两个……之间没有任何字符,代表的是一个空串,是合法的字符串常量,故应该选择D。14.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。15.A 16.D 17.D第1次循环,a的值为1,满足条件,执行“b+=a;”与“a+=2;”,则b的值变为3,a的值变为3。执行“a++”,a的值为4,满足条件进入第2次循环,执行完循环体后,b的值为7,a的值为6。执行“a++”,a的值为7,满足条件进入第3次循环,执行完循环体后,b的值为14,a的值为9。执行“a++”,a的值为10。条件不满足,退出循环。故本题答案为D选项。18.D 19.B 20.D 21.1616解析:函数运算不改变数据类型,所以结果也是double型,fabs(x)是对x取绝对值,pow(y,fabs(x))是y的labs(x)次幂,即2.04。0=16.000000(注意;结果为double型)。22.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。23.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。24.考查if else语句,n=4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。\r\n\r\n 25.3232解析:根据二叉树的性质,在二叉树的第K层上,最多有2k-1个结点。所以,第6层的结点数最多为32。26.\0’strl[i]-str2[i]27.强制类型转换强制类型转换28.abcbccabcbcc解析:strcpy()函数有两个字符指针参数,功能是将第2个参数所指的字符串(包括字符串结束标志\’\\0\’)复制到第1个参数所指的内存地址中.题目程序中使用?两个for循环,都是让i从0递增到2循环3次。第1个循环将字符数组ch中的字符串’abe’复制到;维数组x[3][4]的每1行,笫2个for循环每次输出x[i][j]中的字符串,即三次分别输出从x[0][0]、x[1][1]、x[2][2]开始的字符串的内容。故三次分别输出abc、bc、c,结果为abcbcc。29.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。30.时间复杂度时间复杂度解析:算法在执行过程中所执行的基本运算的次数,也就是执行算法所需要的计算工作量,称为算法的时间复杂度。31.246 32.存储结构33.数据字典或DD数据字典或DD解析:数据流图用来对系统的功能需求进行建模,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据词典(Data Dictionary,DD)用于对数据流图中出现的所有成分给出定义,它使数据流图上的数据流名字、加工名字和数据存储名字具有确切的解释。34.源程序源程序解析:用高级语言编写的程序称为源程序。源程序不能在计算机上直接运行,运行源程序有两种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,是一种二进制代码程序),然后执行目标程序。35.n+1n+1解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为0的结点多一个。36.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。37.-f或f*-1或-1*f或f*(-1)或(*1)*f。fun(10)-f或f*-1或-1*f或f*(-1)或(*1)*f。\r\nfun(10)解析:本题考核的知识点是C程序的简单应用。本题要求调用fun()函数计算m的值,故在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*1所以在fun()函数的空格处应该填使f改变符号的语句,故应填*f或f*-1或-1*f或f*(-1)或(-1)*f。38.数据库管理系统数据库管理系统(DBMS)39.s=30s=30解析:分析循环条件“m=1,m<=4”,所以循环4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。40.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。41.D解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构钵类型名struct example定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。42.AA)【解析】在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为O(n1.5);堆排序所需要的比较次数为O(nlog2n)。43.D解析:本题考核的知识点是函数的返回值以及返回值作为函数的参数。经过分析得出函数fun()的功能是比较形参x和形参y的大小,返回较小的一个.函数fun()有两个参数.本题中,首先定义了三个整型变量a、b和c,分别赋初值为9、8和7.然后执行函数fun(fun(a,b),fun(b,c))。在该函数中分别将fun(a,b)和fun(b,C)函数的返回值作为该函数的两个实参。在函数fun(a,b)中,由于a>b,故返回较小值b即8,在函数fun(b,C)中,由于b<c,故返回较小值c即为7,因此调用函数fun(fun(a,b),fun(b,C))相当于执行函数fun(8,7),返回较小值即7。所以,4个选项中选项D符合题意。44.D 45.B解析:’\\0’作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。46.D语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。选项D)中没有将两个操作语句括起来,不能看作一条语句。47.B解析:C语言源程序的后缀为.c;经过编译得到的目标程序文件的后缀为.obj;再将目标程序文件链接后得到可执行文件的后缀为.exe。故本题应该选择B。48.C解析:在函数fun()中有两个字符型指针变量s1和s1,在函数中程序执行while循环,该循环退出条件有两个:一个是s1[i]!=s2[i](两个字符串不相等);第二个是sl[i]和s2[i]相等均为“\\0”(两个字符串相等)。循环退出后,执行return语句,即两个字符串相等则返回1,不相等则返回0。所以,C选项为所选。49.C解析:for后一对括号中的表达式可以是任意有效的C语言表达式。该题目的循环体部分为空语句,循环控制条件为m<n,每一次m增3,n减1,每当循环体执行结束时,循环控制变量m,n就会分别被增3和减1。50.A 51.C解析:数组x在初始化时赋9个值,列值为3,则行值为3。i为0时,x[i][2-1]指的是元素x[0][2](值为3):i为1时,x[i][2-i]指的是元素x[1][1](值为5):i为2时,x[i][2-1]指的是元素x[2][0](值为7);输出结果是3 5 7。52.B解析:若有以下定义:int a[3][4],i,j;且当0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。53.B 54.B解析:函数fun中的a和b是全局变量,在main函数中全局变量a和b不起作用。因此调用函数fun后main中a和b的值不变,a=5、b=7。55.A解析:在C中,参与%运算的两个参数都必须为整型,在大多数C编译器下(包括TurboC)都采用了“向0靠近”的原则,即当两个运算量有一个为负数时,余数的符号由被除数的符号决定。故本题答案为A。56.A解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。57.C解析:case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后的表达式类型相同。这个程序段主要考查的是case后是常量表达式。58.D解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。59.C运算器和控制器都是CPU的一部分,显然不可能是正确答案,而硬盘中的程序、数据首先要调入内存储器中,因为它不能直接与CPU打交道。60.B解析:字符参与运算的值是其对应的ASCII码,小写英文字符的ASCII值比大写英文字符的ASCII值大32,执行语句m=’B’+32;得出结果m=66+32=98,以“%c”的格式输出结果为b。61.A 62.C 63.C\r\n 64.A指针是用来指示一个内存地址的变量,因此只能将地址赋给指针变量,而不能是整数或浮点数。65.B 66.B解析:本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项B的说法是正确的。数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项C的说法是错误的。有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项D的说法是错误的。67.D 68.B 69.B本题中a>b的条件不满足,所以不执行逗号表达式a=b,b=c;的操作,而是执行c=a操作,即c的值勾10。70.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种’后进先出’的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种’先进先出’的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。71.A A选项中E后面的指数必须为整型数据,所以A错误。c选项中011表示的是八进制常量,0xabcd表示的是十六进制常量。72.B\n用’w’方式打开文件,意思是如果文件名相同则覆盖原来的文件,所以当再次输入时覆盖了第一次的内容,B选项正确。\n 73.D算法分析是指对一个算法需要多少计算时间和存储空间做定量的分析。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序来解决同一个问题,这里存在两个问题:一是与计算方法密切相关的算法问题;二是程序设计的技术问题。而算法和程序之间又存在密切的关系。分析算法可以预测这一算法适合在什么样的环境中有效地运行,对解决同一问题的不同算法的有效性做出比较,更重要的是,分析算法可以找出算法的优点和不足,使优点得到保持,对不足进行改进,以获得效率更高的算法。74.A如果是static修饰的静态变量,不是每次调用赋初值。75.C 76.D本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。77.C 78.C耦合性与内聚性是模块独立与否的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内蒙、低耦合,即减弱模块之间的耦合性而提高模块内的内聚性,这样有利于提高模块的独立性。79.D\n首先计算1与2的或运算,再将其结果与3进行“与”运算,结果为00000011,即十进制数3。\n 80.A(x}1000+0.5)表示x移动3位小数,细0.5,也就是小数第4位加5,若这位大于等于5,则进1到个整。因为“5.16894}1000 5168.94+0.5 75169.44”所以(int)(x$1000+0.5)强制转换为整型结果为5169。(5169/1000.0)5.169,由于1000.0结果自动转换为浮点数所以prinff(“%lf\n”,5.169)结果是5.16900。故答案为A选项81.(1)错误:j=1;正确:i=0;(2)错误:while(temp!=0&&m!=0&&n!=0)正确:while(temp!=0||m!=0I{n!=0)【解析】其中while循环是判断能否除尽x、y、z,循环中“i=i+1;”进行了加1操作,i应该从1开始进行循环,所以i的初始值应该是0,这样第一个错误标识下的“i=1;”就改为“i=0;”。第二个标识下while循环逻辑关系应该是或的关系,因为最小公倍数成立的条件是同时除尽,所以只要不是同时除尽,循环就继续,这样“while(temp!=0&&m!=0&&n!=0)”应该是“while(temp!=0||m!=0||n!=0)”。82.【解析】(1)该程序功能是返回高于平均分的人数。它的解题思路可以分解为以下几步:求总分一求平均分一元素逐个与平均分比较一统计高于平均分的人数。(2)从已给部分源程序的main()函数开始入手,核心函数fun(point,9,high)中的参数由题目可知,point存放着m个人的成绩,high存放着高于平均分的分数。另外,根据point的定义,可知9为point数组中元素的个数,传给函数fun ee的参数n。</y&&!z||1>。