2022年安徽省合肥市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2022年安徽省合肥市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2022年安徽省合肥市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2022年安徽省合肥市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2022年安徽省合肥市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年安徽省合肥市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.对于C语言的函数,下列叙述中正确的是()。

A.函数的定义不能嵌套,但函数调用可以嵌套

B.函数的定义可以嵌套,但函数调用不能嵌套

C.函数的定义和调用都不能嵌套

D.函数的定义和调用都可以嵌套

3.若有定义和语句:inta,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。A.3,5,B.3,5,4C.3,5D.3,5

4.若x和y都是int型变量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的输出结果()

A.200B.100C.100200D.输出格式符不够,输出不确定的值

5.

6.

7.以下叙述中正确的是______。

A.C语言比其他语言高级

B.C语言可以刁;用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现的最晚,具有其他语言的一切优点

8.C语言源程序的扩展名是()。

A..CB..exeC..objD..cp

9.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。

A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b

10.折半查找法的查找速度一定比顺序查找法快()。

A.正确B.错误

11.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

12.有以下程序:main{inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf(“a+b=%d\n”,a+b);/*输出计算机结果*/}程序运行后的输出结果是()。A.a+b=10B.a+b=30C.30D.出错

13.对于栈操作数据的原则是()。

A.先进先出B.后进先出C.后进后出D.不分顺序

14.有以下程序

#include<stdio.h>

#include<stdlib.h>

main()

{int*a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b

printf(”%d,%d,%d\n”,*a,*b,*c);

}

程序运行后的输出结果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

15.设二叉树的中序序列为BCDA,前序序列为ABCD,则后序序列为()。

A.CBDAB.DCBAC.BCDAD.ACDB

16.下面不能正确表示a*b/(c*d)的表达式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

17.数据字典(DD)所定义的对象都包含于()。

A.软件结构图B.方框图C.数据流图(DFD图)D.程序流程图

18.下列叙述中正确的是()。

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

19.算术运算符和圆括号有不同的运算优先级,对于表达式“a+b+c*(d+e)”,关于执行顺序,以下说法正确的是()。

A.先执行“(d+e)”得r2,再执行“c*r2”得r3,再执行“a+b”得r1,最后执行“r1+r3”得表达式最后结果

B.先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果

C.先执行“(d+e)”得r2,再执行“c*r2”得r3,再执行“b+r3”得r4,最后执行“a+r4”得表达式最后结果

D.先执行“a+b”得r1,再执行“r1+c”得r5,再执行“(d+e)”得r2,最后执行“r5*r2”得表达式最后结果

20.以下叙述中正确的是()。

A.在switch语句中,不一定使用break语句

B.break语句只能用于switch语句

C.break语句必须与switch语句中的case配对使用

D.在switch语句中必须使用default

二、2.填空题(20题)21.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

22.以下程序的运行结果是______。

structNode}

intx;

charch;

};

fun(structNode*sn)

}statick=1;

sn->x=20;

Sn->ch='a'+k++;

}

main()

{inti;

staticstructNodest=}10,'a'};

for(i=0;i<2;i++)

fun(&st);

printf("%d,%c\n",st.x,st.ch);

}

23.以下程序运行后的输出结果是【】。

#include<stdio,h>

main()

charc1,c2;

for(el='0',c2='9';e1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

24.下面程序将二维数a的行和列元素互换后存放另一个二维数组b中。请填空。

main()

{inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("arraya"\n");

for(i=0;i<=1;i++)

{for(j=0;【】;j++)

{printf("%5d",a[i][j]);

【】;}

printf("\n");}

printf("arrayb:\n");

for(i=0;【】;i++)

{for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");}}

25.下面函数的功能是将一个字符串的内容颠倒过来,请填空。

voidfun(charstr[])

{inti,j,k;

for(i=0,j=【】;i<j;i++,j--)

{k=str[i];

str[i]=str[j];

str[j]=k;}}

26.以下程序的作用是:从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

27.算法的复杂度主要包括【】复杂度和空间复杂度。

28.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

29.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

则程序运行后的输出结果是【】。

30.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个______实际上对应一个处理模块。

31.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

for(i=0;i<2;i++)

{for(j=0;j<30++)

______;

}

}

32.以下程序输出的结果是【】。

#include<stdio.h>

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

printf("%d\n",d);

}

33.程序如下:

main()

{inti=4;

printf("%d",-++i);

}

该程序执行后的输出结果以及i的值分别是______、_______。

34.在Windows环境下,可以将窗口最小化为【】。

35.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisNO.”。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

case'N':printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

36.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

37.下列程序执行后输出的结果是【】。

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

printf("%d\n",++(p->x));

}

38.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。

#include<stdio,h>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++)printf("%4d",b[i]);

prinff("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

for(i=0;i<m;i++)

{x=ar[i][0];'

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

39.以下程序运行后的输出结果是______。

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

40.以下程序用于判断a,b,c能否构成三角形,若能,输出YES,否则输出NO。当给a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

#include<stdio.h>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*a.b.c能构成三角形*/

elseprinff("NO\n");/*a.b.c不能构成三解形*/

}

三、1.选择题(20题)41.下列叙述中,不属于结构化分析方法的是()。A.A.面向数据流的结构化分析方法

B.面向数据结构的Jackson方法

C.面向数据结构的结构化数据系统开发方法

D.面向对象的分析方法

42.以下叙述中错误的是()。

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

43.八进制数253.74转换成二进制数是()

A.10101011.1111

B.10111011.0101

C.11001011.1001

D.10101111.1011

44.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

45.下面程序段的运行结果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

46.执行以下语句的结果为______。y=10;x=y++;

A.x-10,y=10B.x=11,y=11C.x=10,y=11D.x=11,y=10

47.软件需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求分析说明书和

A.阶段性报告B.需求评审C.总结D.都不正确

48.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

49.设有说明语句如下:staticcharstr[]="Beijing";若执行下列输出语句:printf("%d\n",strlen(strcpy(str,"China")));则输出结果为()。

A.5B.7C.12D.14

50.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

51.有以下程序:#include<stdio.h>voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是()。

A.4B.3C.2D.1

52.下列程序的执行结果是______。in(f(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}main(){printf("%d\n",f("goodbye!"));}

A.3B.6C.8D.0

53.设有以下说明语句typedefstruct{intn;charch[8];}PER;则下面叙述中正确的是

A.PER是结构体变量名

B.PER是结构体类型名

C.typedefstruct是结构体类型

D.struct是结构体类型名

54.结构化程序设计的一种基本方法是()

A.筛选法B.递归法C.归纳法D.逐步求精法

55.下面程序运行后的输出结果是_____。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}

A.5B.6C.7D.8

56.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是______。

A.3B.2C.-1D.0

57.下列叙述中,正确的一条是______。

A.C语言的整型变量可以分为int、short、long、unsignedint、unsignedshort、unsignedlong等几种类型,因此整型常量也可以分为这几种类型

B.C语言的字符数据与整型数据可以互相赋值

C.若对字符型变量的定义为:charc;可使用语句c="a",对变量c赋值

D.已知x为float型,执行语句(int)x后,x为int型

58.有以下程序:main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0;m++;break;}}printf("%d\n",m);}程序运行后的输出结果是()。

A.1B.2C.3D.4

59.fgets(str,n,fp)函数从文件中读入一个字符串,以下错误的叙述是()。

A.字符串读入后会自动加入'\0'

B.fp是指向该文件的文件型指针

C.fgets函数将从文件中最多读入n个字符

D.fgets函数将从文件中最多读入n-1个字符

60.有下列二叉树,对此二叉树前序遍历的结果为()。

A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH

四、选择题(20题)61.以下叙述中错误的是()。

A.一个C程序中可以包含多个不同名的函数

B.一个C程序只能有一个主函数

C.C程序在书写时,有严格的缩进要求,否则不能编译通过

D.C程序的主函数必须用main作为函数名

62.(36)下列工具中属于需求分析常用工具的是()

A.PAD

B.PFD

C.N-S

D.DFD

63.以下函数按每行8个输出数组中的数据:

下划线处应填入的语句是()。

A.

B.

C.

D.

64.

有以下程序

#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,

65.

有下列程序:

#include<stdio.h>

main

{inta=6,b=7,m=1;

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

printf("%d\n",m);

}

程序的运行结果是()。

A.3B.2C.4D.1

66.有以下程序:

程序执行后的输出结果是()。

A.45B.20C.25D.36

67.以下程序的输出结果是()。

charstr[15]=”hello!”;

printf(“%d\n”,strlen(str));

A.15B.14C.7D.6

68.以下程序的输出结果是()。

A.9B.8C.7D.6

69.下列关于栈的描述错误的是()。

A.栈按“先进后出”组织数据B.栈是特殊的线性表,只能在一端插入或删除数据C.栈具有记忆功能D.栈只能顺序存储

70.有下列二叉树.对此二叉树前序遍历的结果为()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

71.为用户与数据库系统提供接口的语言是

A.高级语言B.数据描述语言(DDL)C.数据操纵语言(DML)D.汇编语言

72.

73.

74.为了提高软件的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

75.

有以下程序.

#include<stdio.h>

main

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar;c6=getchar;

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第l列开始)

123<回车>

45678<回车>

则输出结果是()。

A.1267B.1256C.1278D.1245

76.下列叙述中正确的是()。

A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对

77.对如下二叉树进行后序遍历的结果为()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

78.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

79.

80.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是()。

A.v0=7,vl=4,v2=7

B.v0=8,vl=4,v2=8

C.v0=11,vl=4,v2=11

D.v0=13,vl=4,v2=12

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.

参考答案

1.A

2.A

3.C在输入3和5之间除逗号外不能有其他字符。

4.A

5.D

6.D

7.C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现从1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。

8.AC语言源程序的扩展名是.C,目标文件的扩展名是.obj,可执行文件的扩展名是.exe。故本题答案为A选项。

9.D

10.B

11.B本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。

12.AC语言规定,注释语句可以换行写,并且一个“/*”和其后紧跟的第一个“*/”中间的部分是注释内容,并且注释部分的内容不参与程序的执行,因此本题中没有执行“b=20”;这条语句。

13.B

14.A解析:本题中,首先创建开辟一个动态内存,然后将地址分别存入指针a、b、c中,即a、b、c都指向相同的变量。分别给a、b、C所指的变量赋值,最终a、b、c所指的变量中的值为3,最后打印a、b、c所指的变量的值,即3,3,3。所以选A。

15.B二叉树的前序序列为ABCD,由于前序遍历首先访问根节点,可以确定该二叉树的根节点是A。再由中序序列为BCDA,可知以A为根节点的该二叉树只存在左子树,不存在右子树,故后序序列为DCBA。本题答案为B选项。

16.A

17.C数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

18.B本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。

19.B题干表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低。同优先级中,加法运算符的结合性从左向右结合,所以题干中的表达式执行顺序是:先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果。故本题答案为B选项。

20.Aswitch语句中不一定使用break语句,选项A正确;break语句除了用于switch语句,还可以用于循环语句中,选项B、C错误;switch语句不一定需要使用default语句,选项D错误。本题答案为A选项。

21.黑箱或黑盒黑箱或黑盒解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。

22.20c。20,c。解析:函数fun的功能是给结构体指针变量所指的结构体变量的各成员赋值,主函数两次调用函数fun,第一次调用,实参st两个成员的值是20和字符b,调用结束时,静态局部变量k没有释放,值为2:第二次调用,实参st两个成员的值是20和字符c,调用结束时,静态局部变量k没有释放,值为3;因此,输出结果是20和c。

23.918273645918273645解析:程序通过for循环将字符'0'~'9'从前向后,同时从后向前依次输出,所以输出结果为:0918273645。

24.j<2b[j][i]=a[i][j]i<=2j<2\r\nb[j][i]=a[i][j]\r\ni<=2解析:本题考查了二维数组元素的引用。a[i][j]表示的是二维数组a的第i+1,第j+1列的元素。

25.strlen(str)-1strlen(str)-1解析:程序中的for循环就是用来完成串反序的,所以应该对循环的条件进行初始化,所以在[18]应该填入strlen(str)-1。注意,在串反序的时候,不应该把串结束符‘\\0’也反序。

26.“filea.dat”“r”“filea.dat”,“r”解析:fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入'filea.dat','r'。

27.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

28.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

29.310

30.加工加工解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中的每一个加工对应一个处理模块。

31.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。

32.00解析:在本题中,d=(a>b>c);相当于d=(5>4>3);其计算过程为:先算5>4,结果为真,得1,即d=(1>3);然后计算1>3,结果为假,得0。

33.-55。

34.图标或按钮图标或按钮

35.getchargetchar解析:题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符'y','Y'、,'n','N'是否相等来实现的。注意:用于字符串处理的函数。

36.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。

37.1111解析:程序中结构体数组data首地址(即&data[0])赋值给结构体指针变量p,++(P->x)表示先将p所指向的结构体变量的成员x值加1,然后将此x(即data[0].x)输出。

38.br[i]或*(br+i)br[i]或*(br+i)解析:程序中的数组a是一个3行4列的二维数组,一维数组b用于存放每行的最大数。在函数fun中,通过二重for循环求每行的最大数,外层for循环用于控制行数,内层for循环用于控制列数,当外层循环执行一次时,内层循环则从一行的4个数中找出最大数x,然后将最大值x赋给数组br,故空格处应填br[i]或*(br+i)。

39.解析:程序通过语句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”将结构体变量s中各结点连接成了一个循环链表,即最后一个结点的指针域指向了头结点,整个链表形成了一个环,并通过语句“p=s;q=p->next;r=q->next;”将结构体指针变量p、q、r指向了各结点。

40.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:根据构成三角形的条件:两边之和大于第三边,得出空格应该填(a+b>c)&&(a+c>b)&&(b+c>a)或与其等价的形式。

41.D解析:常见的需求分析方法有结构化分析方法和面向对象的分析方法两类。其中结构化分析方法又包括面向数据流的结构化分析方法(SA-Structuredanalysis),面向数据结构的Jackson方法(JSD-Jacksonsystemdevelopmentmethod)和面向数据结构的结构化数据系统开发方法(DSSD-Datastructuredsystemdevelopmentmethod)。

42.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

43.A

44.DD)【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。

45.C解析:本段程序的作用是输出字符串“lanuage”中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放‘\\0’。

46.C解析:执行语句x=y++,是先将y的值10赋给x,然后y自增。

47.B解析:本题考查软件需求分析的四个阶段,分别为需求获取、需求分析、编写需求分析说明书和需求评审。

48.C数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构(物理结构)及数据上的运算集合。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,即数据元素之间的前后件关系,而不管它在计算机中的存储表示形式。

49.A解析:本题考查求字符串的长度。数组str初始化的长度是7,使用strcpy函数将新字符串赋给str后,strlen函数返回的是新字符串的字符个数5。

50.A解析:逻辑运算符的优先级由高到低运算次序如下:!(非)→&&(与)→||(或),选项A)的表达式中,先计算!a,结果为0,由于'0==1'不成立,故整个表达式的值为0。

51.A解析:该程序通过main函数循环凋用sum函数。

当i=2时,将实参aa[2]的地址传递给形参,此时a[0]=a[1]=aa[3]=4,即aa[2]=4;

当i=1时,将实参aa[1]的地址传递给形参,此时a[0]=a[1]=aa[2]=4,即aa[1]=4;

当i=0时,将实参aa[0]的地址传递给形参,此时a[0]=a[1]=aa[1]=4,即aa[0]=4;

当i=-1时,不满足条件i>=0,跳出循环,程序执行后数组aa中的值为4,4,4,4,5,6,7,8,9,10,所以aa[0]=4。

52.C解析:字符在内存中占一个字节的存储空间,按字符的存储顺序,其地址依次递增,在函数f中循环过后,p指向字符串的结束位置,s指向字符串首地址,p-s即为字符串长度。

53.B解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

54.D解析:在结构化程序设计中,通常采取自顶向下、逐步求精的方法,尤其是在详细设计和编码阶段,其总的思想就是先全局后局部、先整体后细节、先抽象后具体、程序自顶向下、逐步细化。而筛选法、递归法和归纳法指的都是程序的某种具体算法。逐步求精法是结构化程序设计中很重要的思想,一定要牢记!

55.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。

56.D解析:本题中表达式x/y&~z中运算符优先级的顺序为:~(按位取反)、/(除)、&(按位与),即首先执行~z得11111110,然后执行x/y=3/2=1,最后执行1&11111110=00000001&11111110=00000000=0。

57.B

58.A解析:在switch语句中break语句的作用是退出分支语句,若没有break语句则一直向下执行。本题中首先计算switch后面括号里的表达式a%3,即15%3为0:执行case0:后面的语句“m++;”,m自加1,即m为1;遇到break语句;然后跳出switch语句,所以最后输出的m值为1。所以选项A正确。

59.C解析:字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。s可以是一个字符数组名,或是指向字符串的指针;n为要读取的最多的字符个数:fp是指向该文件的文件型指针。字符串输入函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串存放到字符数组s中。

60.B解析:对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左,右子树。

61.C【答案】C

【知识点】C程序的函数

【解析】C程序必须有且只有一个主函数main()。一个C程序可以包含多个不重名的子函数。C程序在书写时没有严格的缩进要求,语句前的缩进随意。

62.D

63.C在c语言循环语句中continue用来跳出当次循环,因此B)项和D)项不正确。if(i/8==0)是指当i除以8的商等于0,即i的值小于8时,打印换行,因此A)项不正确。if(i%8==0)是指当i除以8的余数等于0,即当间隔8个数时,打印换行,因此选项c)正确。

64.D

\n本题程序首先用函数fopen以“wb”的方式开打文件“d2.dat”,然后调用两次fwrite函数将数组a的5个元素,依次输出到文件fp中,共10个字节,关闭文件。再次打开文件,使用文件指针指向文件的开头,调用head函数从文件印中读取这10个字节的数据到数组a中。型数组bb中,因此,【2】处填“str[i]-0”;由函数proc可知,变量n中存放整型数组bb中的元素个数,最后要返回到主函数当中,因此,【3】处填“n”。\n

65.B

\n本题考查switch语句及break的用法。第一个switch语句,因为a=6.a%2=0,所以执行“case0,m++;”,将m加1,遇到break语句跳出switch语句,结束循环。不执行下面的switch。

\n

66.C统计1~9九个数中的奇数和,此题重点考察指向数组的指针。c语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。1

67.D

68.B逗号表达式a++,b++,a+b先计算a++,a=2;再计算b++,b=3;表达式的值就是a+b的值,为5。表达式C++的值是C递增前的值,为3。所以fun((a++,b++,a+b),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论