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

下载本文档

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

文档简介

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

一、单选题(20题)1.设有以下语句:charstr1[]="string"mstr2[8],*str3,*str4=="string";则______不是对库函数的正确调用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

2.若有定义“inta=3;doubleb=0.1263;charch=‘a’;”,则以下选项中叙述有错的是()。

A.逗号表达式的计算结果是最后一个表达式的运算结果

B.运算符“%”只能对整数类型的变量进行运算

C.语句“ch=(unsignedint)a+b;”是对a与b之和进行强制类型转换,结果赋值给变量ch

D.复合运算“a*=b+ch”是将变量b、ch之和与a相乘,结果再赋值给a

3.下述程序执行的输出结果是()。#include<stdio.h>main(){chara[2][4];strcpy(a。"are");strcpy(a[1],"you");a[o][3]=&;printf("%s\n",a);}A.are&youB.youC.areD.&

4.以下叙述中错误的是(

)。A.函数形参的值也可以传回给对应的实参

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过r;mm语句返回

D.C程序必须由一个或一个以上的函数组成

5.判断char型变量c1是否为小写字母的正确表达式为()。

A.'a'<=c1<='Z'

B.(c1>=A)‖c1<=z)

C.('a'=>c1‖("z"<=c1)

D.(c1>='a')&&(c1<='z')

6.有以下程序:#include<stdio.h>main(){char*s=“01234”;while(*(++s)!=‘\0’){switch(*s-‘0’){case0:case1:putchar(*s+1);break;case2:putchar(*s+1);break;case3:putchar(*s+1);default:putchar(*s+1);break;}}}程序运行后的输出结果是()。

A.22345B.2345C.12345D.23445

7.

8.链表不具备的特点是()

A.所需空间与其长度成正比B.不必事先估计存储空间C.插入删除不需要移动元素D.可随机访问任一节点

9.下列语句中,显示没有下画线的超链接的语句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

10.C语言规定,程序中各函数之间()

A.既允许直接递归调用也允许间接递归调用

B.不允许直接递归调用也不允许间接递归调用

C.允许直接递归调用不允许间接递归调用

D.不允许直接递归调用允许间接递归调用

11.

12.若变量已正确定义,则语句“s=32;s^=32;printf(“%d”,s);”的输出结果是()。

A.-1B.0C.1D.32

13.

14.若有语句“typedefstructTT{charc;inta[4];}CIN;”,则下列叙述中正确的是()。

A.CIN是structTT类型的变量

B.TT是struct类型的变量

C.可以用TT定义结构体变量

D.可以用CIN定义结构体变量

15.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

16.在深度为5的满二叉树中,叶子结点的个数为()。

A.31B.32C.16D.15

17.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

18.若有定义“inta;longb;doublex,y;”,则以下选项中正确的表达式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

19.在以下的叙述中,正确的是()。

A.线性表的顺序存储结构优于链表存储结构

B.二维数组是其数据元素为线性表的线性表

C.栈的操作方式是先进先出

D.队列的操作方式是先进后出

20.向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()操作。

A.h->next=s;

B.s->next=h;

C.s->next=h;h->next=s;

D.s->next=h->next;h->next=s;

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{ihtx=0210;printf("%x\n",x);

}

22.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

23.一个项目具有一个项目经理,一个项目经理可管理多个项目,则实体“项目经理”与实体“项目”的联系属于()的联系。

24.下列程序的运行结果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

25.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

26.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

printf("%s\n",str1);

}

27.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH”);

strcpy(&b[2],"GH");

printf("%s\n",B);

}

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

main()

{

charm;

m='B'+32;

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

}

29.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

30.以下函数用来求出两整数之和,并通过形参将结果传回,请填充完整。

voidfunc(intx,inty,【】z)

{*z=x+y;

}

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

a=15;

b=0;

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

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

intfun(int*x,intn)

{if(n==0)returnx[0];

elsereturnx[0]+fun(x+1,n-1);

}

main()

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

printf("%d\n",fun(a,3));}

33.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

34.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

35.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

执行后输出结果是______。

36.若有如下程序:

voidsub()

{staticintx=8;

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

}

main()

{intm;

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

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

37.写出下列程序的输出结果______。

main()

{int=0;

while(n++<=1);

printf("%d,",n);

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

}

38.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

39.有以下程序段,且变量已正确定义和赋值。

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k/1));

printf("s=%f\n\",s);

请填空,使下面程序段的功能与之完全相同。

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s-=%f\n\n",s);

40.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

三、1.选择题(20题)41.有下列函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是()。

A.比较两个字符串的大小

B.计算s所指字符串占用内存字节的个数

C.计算s所指字符串的长度

D.将s所指字符串复制到字符串t中

42.以下程序的输出结果是_________。#include<stdio.h#defineFUDGE(y)2.84+y#definePR(A)printf("%d",(int)(A))#definePRINT1(A)PR(A);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*X);}

A.11B.12C.13D.15

43.若有以下程序段:intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是______。

A.10,A,10B.16,a,10C.10,a,0D.10,A,0

44.在所有排序方法中,关键词比较的次数与记录的初始排列次序无关的是______。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

45.下列描述中,不是线性表顺序存储结构特征的是

A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系

46.若x、y、z、m均为int型变量,则执行下面语句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;

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

47.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

48.下列选项中不合法的+六进制数是()。

A.OxffB.OXllC.OxlgD.OXabc

49.数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享

A.视图B.消息C.数据D.关系

50.以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])________;}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("%d,%d\n",k,a[k]);}

A.k=pB.*k=p-sC.k=p-sD.*k=p

51.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其输出为______。

A.不确定B.编译错误C.gD.输出null字符

52.已定义ch为字符型变量,以下赋值语句中错误的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

53.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;┆}程序在执行了c=&b;b=&a;语句后,表达式**c的值是()。

A.变量a的地址B.变量b中的值C.变量a中的值D.变量b的地址

54.下面程序的输出结果是()main(){inty=9;for(;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}

A.741B.852C.963D.875421

55.下列字符串不属于标识符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

56.已有定义int(*q)(),指针q可以()。

A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型

57.用C言编写的代码程序()。

A.可立即执行B.是个源程序C.经过编译即可执行D.经过编译解释即可执行

58.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

59.设有定义:10ngx=-123456L,则以下能够正确输出变量x值的语句是()。

A.printf("x=%d\n",x);

B.printf("x=%1d\n",x);

C.peintf("x=%8dL\n",x);

D.printf('x=%LD\n",x);

60.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

四、选择题(20题)61.如图所示,两个关系R1和R2:

则由关系R1和R2得到关系R3的操作是()。

A.笛卡尔积B.连接C.交D.除

62.设intx=7,则~x的值是()。

A.-8B.7C.-1D.1

63.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

64.

65.

66.

67.若有说明“chars1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是()。A.A.s1的内容更新为abcdefghiB.s1的内容更新为defghi\0

C.s1的内容更新勾defghiabc\0

D.s1的内容更新为abcdefghi\0

68.有以下程序:

#include<stdio.h>

main()

{intX=011;

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

}

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

A.12B.11C.10D.9

69.以下定义语句中正确的是()。

70.有以下程序:

#include<stdio.h>

main()

{chars[]="012xy\O8s34f4w2‘;

inti;n=0;,

for(i=0;s[i]!=0;i++)

if(s[i]>=0s[i]<=9)n++;

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

}

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

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

71.

72.有以下程序:

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

A.OB.2C.3D.5

73.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序运行后的输出结果是______。

A.22B.76C.72D.62

74.有以下程序:

#include<stdio.h>

main()

{FILE*fp;charstr[10];

fp=fopen("myfile,dat","");

{puts("abe",ip);fclose(fp);

fp=fopen("myfile.dat","a*");

fprintf(fp,"%d",28);

rewind(fp);

fscanf(fp,"%S",str);puts(str);

fclose(fp);

}

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

A.abcB.28cC.abc28D.内类型不一致而出错

75.有以下程序:

voidmain()

{intk=10,n=0;

for(;n<k;)

{//n++;

if(n++%3!=0)continue;

k--;}

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

}

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

A.7,7B.6,6C.3,3D.4,4

76.

77.

78.

79.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}执行后的结果是()。

A.输出字符a的ASCII码B.输出字符c的ASCII码C.输出字符cD.程序出错

80.

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

六、程序设计题(1题)82.下列程序定义了M×M的二维数组,并在主函数中赋值。请编写函数proc(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如,若a数组中的值为则返回主程序后s的值应为310。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C解析:C语言中:strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项C中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。

2.C逗号表达式的计算结果是最后一个表达式的运算结果,选项A正确;运算符“%”是求余运算符,只能对整数类型的变量进行运算,选项B正确;在语句“ch=(unsignedint)a+b”中,圆括号优先级最高,所以首先将a强制转换成无符号整型,再与b相加,结果赋值给ch,选项C错误;复合运算“a*=b+ch”,先计算“b+ch”的值,再将a与b、ch之和相乘,结果再赋值给a,选项D正确。故本题答案为C选项。

3.Astrcpy实现的功能是复制,该操作把are复制到a中,aE03E33一’&’,且strcpy(aEl],"you")把you复制到a[l]中,故输出a为“are&you”。

4.A函数参数传递是个不可逆的过程,形参不会把值传回实参,所以A)选项(24)[答案]A)[解析]c的值为a乘以b的值,为3。所以答案选择A)。

5.D解析:C语言规定,字符常量在程序中要用单引号括起来。判断c1是否为小写字母的充要条件c1>='a'和c1<='z',用逻辑与(&&)来表示。A选项的这种形式在C语言中没有,所以选项D)正确.

6.D程序首先定义一个字符指针s,指向一个常量字符串“01234”;接着while循环的循环条件每次将s指向下一个字符,然后判断s指向的字符是否为空字符“\\0”,若不是,则执行循环体,将当前字符与‘0’”的ASCII差值作为switch语句的常量表达式,执行对应的case语句。指针s指向空字符“\\0”时,则终止循环,程序结束。从常量字符串“01234”可知,循环过程中s指向的各个字符分别是1、2、3、4。当*s是字符“1”时,*s-‘0’的值为1,执行case1语句,输出*s+1,即字符“2”;当*s是字符“2”时,*s-‘0’的值为2,执行case2语句,输出*s+1,即字符“3”;当*s是字符“3”时,*s-‘0’的值为3,执行case3和default语句,两次输出*s+1,即字符“4”;当*s是字符“4”时,*s-‘0’的值为4,执行default语句,输出*s+1,即字符“5”。综上,程序输出结果为23445。故本题答案为D选项。

7.B

8.D

9.A

10.A解析:C语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。

11.B

12.B异或运算只有在两个比较的位不同时其结果为1,否则结果为0。题目中两个值相同,所以结果为0。故本题答案为B选项。

13.A

14.DCIN为结构体类型名,而不是结构体变量。故本题答案为D选项。

15.A解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符\'g\');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使\'g\'+1,使\'g\'变成了\'h\';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到\'\\0\'结束循环,返回形参。最终得到的结果是从字符串'Program\'的第4个字符开始,每个字符加1。

16.C解析:二叉树的一个性质是,在二叉树的第k层上,最多有2(k-1)(k>=1)个结点。对于满二叉树,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点。所以,在深度为5的满二叉树中,所有叶子结点在第5层上,即其结点数为2(k-1)=2(5-1)=16。

17.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。

18.BC语言中没有“<>”运算符,所以A选项错误。运算符“%”的左右两个操作数必须为整型数据,所以B选项正确。表达式“a*y”的结果为double型,所以C选项错误。不能将值赋给像“x+y”这样的表达式,所以D选项错误。故本题答案为B选项。

19.B

20.D

21.8888解析:程序中的0210表示八进制数,%x是以十六进制形式输出。本题可先将0210转换为十进制数,再将其转换为十六进制数。

22.2525解析:#NAME?

23.一对多一对多解析:实体之间的对应关系称为联系,它反映现实世界事物之间的相互关联。两个实体间的联系可以归结为三种类型:一对一联系表现为某一实体与另一实体一一对应相关联:一对多联系表现为某一实体与相关多个实体相关联;多对多联系表现为多个实体与相关多个实体相联系。所以实体“项目经理”与实体“项目”的联系属于一对多的联系。

24.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。

25.完整性控制完整性控制

26.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组st1l和str2,并且给str2赋初值“abcdefgh”,接着调用函数sstrcpy(str1,str2),将字符串str2的值赋给str1.在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++或*(t++)。

27.GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏蔽全局变量b。对于一维数组变量,其值为一常数,等于数组首元素地址。strcpy(&b[0],'GH'),是将字符串,'GH',复制到数组b中从首元数开始的空间中,此是b中的字符串为'GH';strcpy(&b[1],'GH'),是将字符串“GH'复制到数组b中从第二个元素开始的空间中,此是b中的字符串为'GH'。执行第三次strcpy函数后,b中的字符串为'GGGH'。

28.bb解析:字符类型的数据在内存中以相应的ASCII码存放,另外,字符数据还可以作为整数参加运算。格式控制参数中的格式字符用以指定输出项的数据类型和输出格式,输出字符与其对应的输出项的类型要一致。本题中,“B”的ASCII码为98,字符类型m的ASCII为(98+32=130),所以最后输出为b。

29.*(p+5)或p[5]*(p+5)或p[5]

30.int*int*解析:从函数体中可看出,2是一个指向整型的指针,该函数的形参z是传地址调用。

31.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,此时再判断循环条件不满足,退出循环。

32.1010解析:题目中的fun()函数直接调用了自身,所以它是递归函数。函数中只有一条if语句,意思是:若n为0,则返回x所指内容(x[0]等价于*x),否则返回x所指内容加上fun(x+1,n-1)。即,当n>0时,fun(x,n)=x[0]+fun(x+1,n-1)=x[0]+x[1]+fun(x+2,n-2)=…=x[0]+x[1]+…+x[n];当n=0时,fun(x,n)=x[0];当n<0时,函数将无限循环递归调用下去,因为n-1下去永远也不会等于0。所以本题中fun(a,3)=a[0]+a[1]+a[2]+a[3]=12+3+4=10。故应该填10。

33.x+=1;

34.22

35.00解析:本题中的for循环共执行了6次,每执行一次将相应i的值相乘,最后当i=-1时停止循环.该for循环执行完后t的值为5*4*3*2*1*0=0,故最后输出I的值为0。

36.4242解析:主函数中的for循环循环两次,即函数sub()被调用两次。在sub()中x被定义为静态整型变量,当调用函数sub()完毕返回主函数,x中的值仍然保留,下次调用函数sub()时,x不再被赋初值。第1次调用x/=2相当于x=x/2=8/2=4,第2次调用x=x/2=4/2=2,因此输出42。

37.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做;n++是先取n的当前值和I做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=0<=1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3。退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加1,即程序结束后得到n=4,但输出的是3。

38.for(i=0;i<t;i++)0for(i=0;i<t;i++)\r\n0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。

39.k<=n或n>=kk++k<=n或n>=k\r\nk++解析:while语句和for语句的作用都是循环控制语句的执行,两者之间是可以互相转换的。将while(EXP)转换为for语句可以写成for(;EXP;);将for(EXP1;EXP2;EXP3)转换为while语句可以写成:EXP1;while(EXP2){...EXP3;}。故本题的两个空分别应填写for语句的第2和第3个表达式。即k<=n或n>=k和k++。当然也可写成与之等价的其他形式。

40.1对多(或1:N)1对多(或1:N)

41.C解析:在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。

42.B解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。

43.A解析:scanf函数为格式输入函数,执行该函数后对变量m、n和c重新赋值,scanf的格式字符为'%dc%d',键盘输入为10A10,所以m=10、c=\'A\'、n=10。

44.D解析:希尔排序是插入排序的改进,冒泡排序是直接交换排序。选项A、B、c的排序思想都与初始排序次序有关,只有选择排序才无关。

45.D解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不需要另外开辟空间来保存元素之间的关系。

46.A解析:?:运算符首先执行?之前的表达式,如果表达式的值为真,则返回?和:之间的表达式的值,否则返回:之后的表达式的值。本题中m比x和y都要小,所以,3个表达式都没有改变m的值,故应该选择A。

47.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

48.C解析:+六进制是以“0x”或“0X”开头的字符串,字符串中只能含有0~9这10个数字和a、b、c、d、s、f这6个字母。

49.C解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。

50.D解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

51.A解析:由于s[2][6]表示字符串已超出了数组s的表示范围,在C中不会刘数组越界进行检查,当数组越界时,会得到一个不确定的值。

52.A解析:字符型变量用来存放字符常量,且只能存放一个字符。赋值反斜杠线“\\”,必须用转义字符实现,即ch='\\\\',所以选项A)错误;字符型变量可以赋0~255之间的ASCII码值,整型数据和字符型数据有时可以通用,所以选项B)正确;可以将NULL赋给一个字符型变量,NULL代表一个空字符,相当于0,选项C)正确;'\\xaa'表示的是1~2位16进制数所代表的字符,所以选项D)正确。

53.C解析:本题考查指向指针的指针。*c表示c间接指向的对象的地址,而**c是c间接指向的对象的值。在c*&b中,已经把b的地址存放在c里了,*c就指向了b的地址,而b里存放的就是a的地址,那么**c应该是变量a的值。也可以用排除法排除选项A),B)。由b=&a可知,这两个选项是同一个意思,变量b中的值就是变量a的地址。所以可以排除。

54.B

55.D

56.A解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。

57.B解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.obj的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接在一起,生成一个后缀.exe的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。

58.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[im][j])。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa=[1][1]=pa[1][1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故prinff语句输入的值为2+4+1=7。所以,A选项为所选。

59.B解析:x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是%1d,所以排除选项A和选项C;由于C语言中是区分大小写的,1d中的d不能为大写,故排除选项D。4个选项中B正确。

60.A解析:C程序由顺序结构、选择结构和循环结构三种基本的结构组成,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。

61.B连接运算也称0连接,是对两个关系进行运算,其意义是从两个关系的笛卡尔积中选择满足给定属性间一定条件的那些元组。本题关系R3为关系R1中B属性和关系R2中D属性相等连接而成。

62.A本题主要考查按位求反运算和C语言正负数的表示,“O”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个l代表负数,值为8。

63.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:

温馨提示

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

评论

0/150

提交评论