版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年广东省东莞市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.以下叙述中错误的是()。
A.函数的返回值类型不能是结构体类型,只能是简单类型
B.函数可以返回指向结构体变量的指针
C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员
D.只要类型相同,结构体变量之间可以整体赋值
3.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
4.为了使模块尽可能独立,要求()。
A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
5.
有以下程序
#include<stdio.h>
main
{inta=1,b=2,c=3,x;
x=(a^b)&C;printf("%d",x);
}
程序的运行结果是()。
A.0B.1C.2D.3
6.
7.在下列几种排序方法中,空间复杂度最高的是()
A.归并排序B.快速排序C.插入排序D.选择排序
8.若有以下定义,则能使值为3的表达式是intk=7,x=12;
A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)
9.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
10.链表不具有的特点是()。
A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比
11.
12.下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;
B.if(s1===s2)ST;
C.if(strcpy(s1,s2)==1)ST;
D.if(s1,s2==0)ST;
13.表达式a*(-b+c)的逆波兰式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
14.有以下程序
#include<stdio.h>
intfun()
{staticintx=1;
x*2;returnx;
}
main()
{inti,s=1,
for(i=1;i<=2;i++)s=fun();
printf("%d\n",s);
}
程序运行后的输出结果是A.A.0B.1C.4D.8
15.以下选项中,不能作为合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
16.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序运行后的输出结果是()。
A.IB.JC.KD.H
17.堆是一种有用的数据结构。下列关键码序列()是一个堆。
A.94,31,53,23,16,72
B.94,53,31,72,16,23
C.16,53,23,94,31,72
D.16,31,23,94,53,72
18.有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf(“%d,”,p->x);p=p->y;}}程序的运行结果是()。
A.20,30,B.30,17,C.15,30,D.20,15,
19.下列定义中,不正确的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);
D.staticcharc;intx,y;{...}
20.有以下程序
#include<stdio.h>
main()
{structnode{intn;structnode*next;}*p;
structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};
p=x:
printf("%d,",p->n);
printf("%d\n",P->next->n);
}
程序运行后的输出结果是A.A.2,3B.2,4C.3,4D.4,6
二、2.填空题(20题)21.若i、j为int类型,则以下程序段内循环体的总执行次数是【】。
for(i=5;i;i--)
for(j=0;j<3;j++)
{
}
22.下面程序把从终端读入的文本(用#作为文本结束标志)复制到一个名为file.txt的新文件中。补足所缺语句。
main()
{charch;
FILE*fp;
if((fp=fopen(______))=NULL)exit(0);
while((ch=getchar())!='#')
fputc(ch,fp);
______;
}
23.以下程序的运行结果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
24.将代数式转换成程序设计中的表达式为【】。
25.下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是:【】。
t4.h的源程序为:
#defineN10
#dennef2(x)(x*N)
t4.c的源程序为:
#include<stdio.h>
#defineM8
#definef(x)((x)*M)
#include"t4.h"
#main()
{inti,j;
i=f(1+1);j=f2(1+1);
printf(%d%d\n",i,j);
}
26.以下程序的运行结果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
27.软件开发环境是全面支持软件开发全过程的【】集合。
28.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。
29.设有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为______。
30.与表达式a+=b等价的另一书写形式是______。
31.对下列二叉树进行中序遍历的结果为【】。
32.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen(【】);。
33.数据库理论中,数据的独立性一般可分为物理独立性和______。
34.以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{case0:m++;n++;break;
case10:n++;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
35.下面程序是计算100以内能被4整除且个位数为4的所有整数,请填空。
main()
{intm,n;
for(m=0;【】;m++)
{n=m*10+4;
If(【】)continue;
printf("%d\n",n);}}
36.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。
37.若有以下程序
main()
{intp,a=5;
if(p=a!=0)
printf("%d\n",p);
else
pfintf("%d\n",p+2);
}
执行后输出结果是【】。
38.现有如下定义:structaa{inta;floatb;charc;}*p;现需用malloc函数动态的申请一个structaa类型大小的空间(由p指向),则定义的语句为:【】。
39.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
intmystrlen(char*str)
{inti;
for(i=0;【】!='\0';i++);
return(i);}
40.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
三、1.选择题(20题)41.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。structnode{intdata;tractnode*next;}*p,*q,*r;
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是
A.r->next=q;q->next=r->next;p->next=r;
B.q->next=r->next;p-next=r;r->next=q;
C.p->next=r;q->next=r->next;r->next=q;
D.q->next=r->next;r->next=q;P->next=r;
42.标准库函数fgets(s,n,file)的功能是()。
A.从文件file中读取长度为n的字符串存入字符数组s中
B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中
C.从文件file中读取n个字符串存入字符数组s中
D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中
43.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值任送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
44.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为()。
A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG
45.有以下程序#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是
A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1
46.以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}输入数据如下:(此处<CR>代表回车符)aaa<CR>bbb<CR>
A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb
47.若运行时给变量x输入12,则以下程序的运行结果是main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}
A.0B.22C.12D.10
48.若执行下列程序时从键盘上输入2,则输出结果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",a--);}
A.1B.3C.2D.4
49.请阅读以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;}case2:a++,b++;break;}printf("a=%d,b=%d\n",a,b);上面程序的输出结果是
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
50.阅读以下程序及对程序功能的描述,其中正确的是
#include<stdio.h>
main()
{FILE*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename:\n");
scanf("%s",infile);
printf("Entertheoutfilename:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("cannotopeninfile\n");
exit(0);}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannotopenoutfile\n");
exit(0);}
while(!feof(in))fputc(fgetc(in),out);
fclose(in);fclose(out);}
A.程序完成将磁盘文件的信息在屏幕上显示的功能
B.程序完成将两个磁盘文件合二为一的功能
C.程序完成将一个磁盘文件复制到另一个磁盘文件中
D.程序完成将两个磁盘文件合并并在屏幕上输出
51.以下程序有错,错误原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}
A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
52.C语言程序的基本单位是______。
A.程序行B.语句C.函数D.字符
53.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;
54.结构化程序设计的三种结构是()。
A.顺序结构、选择结构、转移结构
B.分支结构、等价结构、循环结构
C.多分支结构、赋值结构、等价结构
D.顺序结构、选择结构、循环结构
55.下列选项中不属于软件生命周期开发阶段任务的是()。
A.软件测试B.概要设计C.软件维护D.详细设计
56.下列不属于软件工程的3个要素的是______。
A.工具B.过程C.方法D.环境
57.下列合法的声明语句是()。
A.int_abc=50;
B.doubleint=3+5e2.5;
C.longdo=1L:
D.float3_asd=3e-3;
58.已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。
A.0B.1C.2D.3
59.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.daf","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);
A.12300B.123C.1D.321
60.已知:intc[3][4];,则对数组元素引用正确的是()。
A.c[1][4]B.c[1.5][0]C.c[1+0][0]D.以上表达都错误
四、选择题(20题)61.有以下程序
62.以下关于return语句的叙述中正确的是()。A.一个自定义函数中可以根据不同情况设置多条return语句
B.一个自定义函数中必须有一条return语句
C.定义成void类型的函数中可以有带返回值的retum语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
63.
64.下列选项中不合法的十六进制数是()。A."0"xff
B."0"X11
C."0"x1g
D."0"Xabc
65.在E-R图中,用来表示实体的图形是
A.矩形B.椭圆形C.菱形D.三角形
66.
有以下程序
#include<stdi0.h>
main
{FILE*fp;inta[0]一{1,2,3,0,0},i;
fp=fopen("d2.dat,"wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a.sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printft("%d",a[i]);
}
程序的运行结果是()。
A.1,2,3,0,0,o,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
67.有如下程序
main()
{
chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)
printf("%s\n",p);
}
该程序的输出结果是
68.以下程序段完全正确的是()。
69.
70.
71.
若希望下列的程序运行后输出25,程序空白处的正确选项是()。
main
{inti,j=50,a[]={7,4,10,5,8};
for()
j+=a[i];
printf("%d",j-40);
}
A.i=l;i<4;++i
B.i=1;i<3;++i
C.i=4;i>2;i--
D.i=2;i<4;++i
72.支持子程序调用的数据结构是()。
A.栈B.树C.队列D.二叉树
73.
74.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是
main()
{chars[100];intc,i;
scanf("%c",&c);scanf("%d",&i);scanf("%s",s);
prinnf("%c,%d,%s\n",c,i,s);}
A.123,456,789B.1,456,789
C.1,23,456,789D.1,23,456
75.
有下列程序:
main
{char*p[]={"3697","2584"};
inti,j;longnum=0;
for(i=0;i<2:i++)
{j=0;
while(p[i][j]!=\0)
{if((p[i][j]-\0)%2)num=1O*num+p
[j][j]-0;
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输m结果是()。
A.35B.37C.39D.3975
76.有以下程序程序运行后的输出结果是()。
A.9B.10C.8D.7
77.设有定义intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
78.若变量已正确定义并赋值,下面符合C语言要求的表达式是
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
79.
80.以下选项中不属于字符常量的是()。
A.
B.
C.
D.
五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入10,则应输出2.928968。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。注意:部分源程序存放在文件prog1.c中,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()指定的部位填入所编写的若干语句。试题程序:
参考答案
1.D
2.A函数返回值类型可以是简单类型和结构体类型。
3.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
4.B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。本题答案为B。
5.D
\n首先计算1与2的或运算,再将其结果与3进行“与”运算,结果为00000011,即十进制数3。
\n
6.A
7.A
8.D解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。注意:强制类型转换表达式。
9.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
10.BB选项的特点是顺序存储结构的特点,即数组的特点。
11.B
12.A解析:strcmp(char*,char*),函数strcmp用于比较两个字符串的长度,长者为大,若字符个数也一样,则从左至右依次比较相同位上的字符,字符大小按ASCⅡ表值计算,直到最后一个字符,若还相同,则两个字符串相等,返回值0。选项A中if(strcmp(s2,s1)=0)ST,若s2等于s1,则返回值0,0等于0,所以逻辑表达式strcmp(s2,s1)=0为真执行ST。
13.D
14.C
15.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
16.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六进制数,转为十进制数x=9。“printf(“%C\\n”,‘A’+9);”,输出格式要求是“%c”,因此将字符‘A’按字母顺序向后偏移9个位置,可得结果为“J”。故本题答案为B选项。
17.D
18.D结构体指针变量p指向a数组的第1个元素,所以“p->x”为20。执行“p=p->y”后,p指向数组a的第2个元素,所以输出15。故本题答案为D选项。
19.C
20.B解析:p指向x的第一个元素,所以p->n的值为2,p->next指向x+1,即指向x的第二个元素,所以p->next->n为4。
21.1515解析:执行二重循环时,外循环每执行一次,内循环将循环一遍。本题的程序段中外循环执行了5次,内循环执行了3次,所以程序段内循环体的总执行次数是15。
22.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中写数据,并且该文件是新文件,应当使用文件打开方式'w',文件操作结束时要用函数fclose关闭文件,以防数据丢失。
23.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函数main()中定义了一个变量i,并赋初值4,调用fun()函数将i的初值传递给形参m,进行fun()函数后的运算,输出结果为m=4,k=4。将k值输出后自行增加1,k=5,此时全局变量k的值变为5。主函数中调用fun()函数后,i再自行增加1,i=5,所以主函数输出的结果为“i=5k=5”。
24.SQRT(x2+y2)/(a+b)
25.16111611解析:题目中第1条要替换的语句i=f(1+1);展开后是i=((1+1)*M);继续展开为i((1+1*8),结果使i=16。而第2条语句j=f2(1+1)”;展开后为j=(1+1*N);继续展开为j=(1+1*10),结果使j=11。故程序运行的结果是输出1611。
26.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。
27.软件工具软件工具
28.自顶而下自顶而下
29.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
30.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。
31.ACBDFEHGPACBDFEHGP解析:中序遍历方法的递归定义;当二叉树的根不为空时,依次执行如下3个操作:①按中序遍历左子树。②访问根结点。③技中序遍历右子树。根据遍历规则来遍历本题中的二叉树。首先遍历F的左子树,同样按中序遍历。先遍历C的左子树,即结点A,然后访问C,接着访问C的右子树,同样按中序遍历C的右子树,先访问结点B,然后访问结点D,因为结点D没有右子树,因此遍历完C的右子树,以上就遍历完根结点F的左子树。然后访问根结点F,接下来遍历F的右子树,同样按中序遍历。首先访问E的左子树,E的左子树为空,则访问结点E,然后访问结点E的右子树,同样按中序遍历。首先访问G的左子树,即H,然后访问结点G,最后访问G的右子树P。以上就把整个二叉树遍历一遍,中序遍历的结果为ACBDFEHGP。因此,划线处应填入“ACBDFEHGP”。
32.d1.dat"rb"d1.dat,'rb'解析:打开文件的函数为fopen('文件名','mode'),其中'mode'表示文件的打开方式。如果打开的是二进制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只读方式打开。'w'表示以写方式打开,如果已存在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件。'a'为追加方式打开。若文件存在时,将打开这个文件并且在文件的末尾进行追加。当文件不存在,将创建新文件。'r+'打开一个已存在文件用于更新(可读可写)。\'w+'创建一个新文件用于更新,如果文件存在,文件被重写(可读可写)。'a+'打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填'd1.dat','rb'。
33.逻辑独立性逻辑独立性解析:数据的独立性一般可分为物理独立性和逻辑独立性。
34.132132解析:在程序中,i从9开始循环,当i=9时,执行case0后的语句m++;n++;此时m=1,n=1,然后执行break,跳出循环;当i=10时,执行detault后的语句k++;n++;此时k=1,n=2;当i=11时,再执行default后的语句,k=2,n=3。此时,m=1,n=3,k=2。输出结果为132。
35.m<10n%4!=0
36.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志\'\\0\'。
\'\\t\'f是转义字符,代表横向跳若干格:'\\'是转义字符,代表双引号;\'\\023\'只代表一个字符,而不管转义字符后面有几个字符;’仅AB,是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;\'\\n\'是转义字符,代表回车换行。
5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。
37.11解析:首先计算if语句后面的表达式,根据运算符的优先级可知,先算“a!=o”,该值为1,再把1赋值给p,结果为1(真),执行其后的printf语句,输出的值为1。
38.p=(structaa*)malloc(sizeof(structaa));p=(structaa*)malloc(sizeof(structaa));解析:ANSIC标准规定malloc函数的返回值类型为void*,函数的调用形式为:malloc(size)要求size的类型为unsignedint。由于返回类型为void*,所以在调用函数时,必须利用强制转换将其转换为所需要的类型。
39.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。
40.调试调试
41.A解析:题目中要求将q和r所指结点的先后位置交换,即要求p所指结点的指针域指向r所指向的结点,r所指向的结点的指针域指向q所指向的结点,q所指向的结点的指针域指向r所指向的结点。选项A首先让r所指向的指针的指针域指向q所指向的结点,这样就将r所指向的结点的指针域指向的结点丢失了。选项B首先q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让p所指向结点的指针域指向r所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求。选项C首先让p所指向结点的指针域指向r所指向的结点,然后让q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求。选项D首先让q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让r所指向的结点的指针域指向q所指向的结点,最后让P所指向结点的指针域指向r所指向的结点,满足要求。
42.B解析:字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中;读入字符串后会自动在字符串末尾加入“'\\0'”结束符,表示字符串结束。
43.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元.在内存不确定的情况下,最好使用全局变量。
44.B遍历是按照一定规则对树中全部结点逐一访问的方法。二叉树可由根结点、左子树和右子树三个部分组成。根据对根结点访问的先后顺序,可将遍历方法分为先序遍历、中序遍历和后序遍历三种。先序遍历首先访问根结点,再先序遍历左子树,最后先序遍历右子树,可见遍历是一个递归的过程。求树的遍历这种问题的关键在于认清每棵子树的根结点的访问顺序。题目给出了一棵树的先序遍历和中序遍历的结点顺序,先序遍历的第一个结点为整棵树的根结点,即根结点为A,而在中序遍历的顺序中,结点A的前面还有DBGE四个结点,表示这四个结点构成以A为结点的二叉树的左子树,同理,中序遍历中A结点后面的CHF三个结点构成以A为结点的二叉树的右子树。于是原来的对一棵二叉树的分析变为对该二叉树的左右子树的分析。以左子树为例,左子树结点的先序遍历为BDEG,中序遍历为DBGE,该子树的根结点为B,B结点的左子树为一个结点D,右子树为以E为根结点,结点G是E的左孩子。同理,可对CHF三个结点进行分析。
最后得到整棵树的结构后,按照后序遍历写出所有结点的顺序:DGEBHFCA。
45.D解析:本题考查switch语句,首先,x=1符合条件case1,执行switch(y)语句。y=0符合case0语句,执行a抖并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。
46.B解析:scanf是标准输入函数,在输入字符串aaa时,实际的内容为“aaa\\0”,“\\0”是由系统自动加入的:gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“/0”代替换行符。
47.A解析:本题考查的是三目运算符的用法,三目运算符的形式为(表达式1)?(表达式2):(表达式3)。当(表达式1)的值为真时,求(表达式2)的值为整个表达式的值;如果(表达式1)的值为假,则求(表达式3)的值为整个表达式的值。题中,表达式x>12的结果为假,所以执行的语句是x-12,最终y的值应该是0。
48.B解析:本题考查ifelse语句。程序中首先使用函数scanf()通过键盘读入a的值,并通过第1个if语句,先判断条件,取a的值2和3比较,然后将a的值加1,发现条件成立,执行下列的printf语句,输出a的值3。
49.A
50.C解析:本题中,最主要的是掌握几个有关文件的函数的应用。
函数名:fopen
功能:打开一个文件
调用方式FILE*fp;fp=fopen(文件名,使用文件方式);
函数名:feof
功能:检查文件是否结束
调用方式:feof(FILE*fp);
函数名:fputc
功能:把一个字符写到磁盘文件上去
调用方式:fputc(ch,fp)(ch是要输出的字符,fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式:ch=fgetc(fp)(ch是字符变量,fp是文件指针变量);
函数名:fclose
功能:关闭一个文件
调用方式:fclose(文件指针)。
51.D解析:该程序的执行过程是:首先声明整型指针变量P和整型变量i,字符型指针变量q和字符型变量ch,将i的地址赋给指针变量p,将ch的地址赋给指针变量q,将40赋给*p,此时,q已经指向了一个具体的存储单元,但ch的值不确定,即*p没有确定的值,所以不能执行*p=*q语句。
52.C解析:C语言是一个函数语言,C语言的主体就是一个主函数,然后有库函数和用户自定义的函数来配合主函数完成一系列的任务,所以说,C语言的基本单位是函数。
53.B解析:指针是—种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级相同,按自右而左的方向结合,所以*&j运算选进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。
54.D结构化程序设计以模块化设计为中心,采用自顶向下、逐步求精的程序设计方法。任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合:顺序结构、选择结构和循环结构来实现。
55.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。
56.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。
57.A解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。
58.B解析:先计算关系表达式a<b=2<3为真(表达式为真时,如果变量为int型变量则真用1表示,假用0表示),即a=1。
59.B解析:在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。
60.C
61.Aa<<2的值为20,2011结果为21,所以答案选择A)。
62.A一个函数可以有多个return语句,所以选择A)。
63.D
64.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。
65.A解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项A正确。
66.D
\n本题程序首先用函数fopen以“wb”的方式开打文件“d2.dat”,然后调用两次fwrite函数将数组a的5个元
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手机购车协议书
- 苗木清收协议书
- 苹果达成协议书
- 认筹协议书模板
- 设备工期合同范本
- 设备运营协议书
- 设计劳动协议书
- 试管解冻协议书
- 手机制作合同范本
- 工业住宅合同范本
- 内蒙古呼和浩特市2024-2025学年九年级上学期1月期末物理试题
- 华能邯峰电厂2025年下半年度应届高校毕业生招聘易考易错模拟试题(共500题)试卷后附参考答案
- 矿山企业年终总结与反思
- 学业水平考务培训
- 2025年新护士各层级的岗位职责试题(附答案)
- 2026年黑龙江农垦职业学院单招职业适应性测试必刷测试卷新版
- 2026江苏春季高考语文学业考试总复习:专题07 语言表达得体(原卷版)
- 运城十三县考试题及答案
- 【书法练习】中考语文古诗文硬笔字帖(田英章字体)
- 贵州省市政工程计价定额2025定额说明(重要)
- 车辆日常保养与维护课件
评论
0/150
提交评论