2021-2022年河南省周口市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021-2022年河南省周口市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021-2022年河南省周口市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021-2022年河南省周口市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021-2022年河南省周口市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年河南省周口市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36

2.十进制数124转换成二进制数是()

A.111l010B.1111100C.1011111D.1111011

3.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

4.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

5.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

6.c源程序中不能表示的数制是()。

A.二进制B.八进制C.十进制D.十六进制

7.语句int(*ptr)的含义是()。A.A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

8.有3个节点的二叉树可能有()种。

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

9.以下选项中,算术表达式的值与其他3个不同的是()。

A.3/5.B.3./5C.3/5D.3.0/5.0

10.下列一维数组初始化语句中,正确且与语句floata[]={0,3,8,0,9};等价的是().

A.floata[6]={0,3,8,0,9};

B.floata[4]={0,3,8,0,9};

C.floata[7]={0,3,8,0,9};

D.floata[5]={0,3,8,0,9};

11.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。A.A.7B.8C.9D.10

12.下列程序的输出结果是()。#include<stdio.h>voidp(int*x){printf("%d¨,++*x);}voidmain(){inty=3;p(&y);}A.3B.4C.2D.5

13.常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

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

A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算

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

A.由3种基本结构构成的程序只能解决简单问题

B.结构化程序由顺序、分支、循环3种基本结构组成

C.C语言是一种结构化程序设计语言

D.结构化程序设计提倡模块化的设计方法

16.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树的结点个数为n,森林F中第一棵树的结点的个数是()。

A.m-nB.m-n-1C.n+1D.不能确定

17.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

18.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

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

A.一个算法的空间复杂度打,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度也必定小

C.一个算法的时间复杂度大,则其空间复杂度也必定小

D.算法的时间复杂度与空间复杂度没有直接相关

20.有定义语句:“intx,y;”,若要通过“scanf("%d,%d,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

二、2.填空题(20题)21.在面向对象方法中,允许作用于某个对象上的操作称为【】。

22.数据模型是数据库系统中用于提供信息表示和操作手段的结构形式。实际数据库系统中所支持的数据模型主要有层次模型、网状模型和【】3种。

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

intm=13;

intfun(intx,inty)

{intm+3;

return(x*y-m);

}

main()

{inta=7,b,5;

prntf("%d\n",fun(a,B)/m);

}

24.栈的基本运算有三种:入栈、退栈和【】。

25.以下程序的功能是输出如下形式的方阵:

13141516

9101112

5678

1234

请填空。

main()

{inti,i,x;

for(j=4;j______;j--)

{for(i=1;i<4;i++)

{x=(j-1)*4+______;

printf("%4d",x);

}

printf("\n");

}

26.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

27.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组b。请填空。

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

28.为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【】。

29.下列程序的输出结果是______。

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

30.数据的______结构在计算机存储空问中的存放形式称为数据的存储结构或物理结构。

31.下面程序的运行结果是()。

#defineEXCH(a,B){intt;t=a;a=b;b=t;}

main()

{intx=1,y=2;

EXCH(x,y);

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

}

32.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

33.数据流图的类型有【】和事务型。

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

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

35.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

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

{k=str[i];str[i]=str[j];str[j]=k;}

printf("%s\n",str);}

36.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

stmctSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。【】t[20]

37.以下函数用来求出数组的最大元素在数组中的下标并存放在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;

fun(a,10,&k);

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

38.数据元素之间______的整体称为逻辑结构。

39.下面的函数strcat(str1,str2)实现将字符串str2拼接到字符串str1后面的功能。请填空使之完整。

char*strcat(str1,str2)

char*str1,*str2;

{char*t=str1;

while(【】)str1++;

while(【】);

return(t);}

40.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{

chara[]="labchmfye",t:

int1,j;

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

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);printf("\n");

}

三、1.选择题(20题)41.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

42.有以下语句,则对a数组元素的引用不正确的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

43.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。

A.X||YB.X|YC.X&YD.xy

44.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A.0B.1C.11D.3

45.对于下列字符串,说明表达式strlen(s)值的是()。chars[10]={'a','\n','a','b','\t','c'};

A.10B.1C.6D.7

46.有下列程序:fun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是()。

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

47.两次运行下面的程序后,如果从键盘上分别输入7和3,则输出结果是______。main(){intx;scanf("%d",&x);if(++x>5)printf("%d",x);elseprintf("%d\n",x--);}

A.7和5B.6和3C.7和4D.8和4

48.现有如下程序段,此程序段编译有错误,则程序段的错误出在#include<stdio.h>main(){inta=30,b=40,c=50,d;d=a>30?b:c;swish(d){casea:Printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);defaultprintf("#");}}

A.default:printf("#");这个语句

B.d=a>30?b:c;这个语句

C.casea:printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);这三个语句

D.switch(d)这个语句

49.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

50.下面说明不正确的是()。

A.chara[10]="china";

B.chara[10],*p=a;p="chiua";

C.char*a;a="china";

D.chara[10],*p;p=a="china";

51.以下程序的输出结果是______。#include<sulio.h>#defmeSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf("%d\n",a);}

A.8B.9C.17D.20

52.下面程序的输出结果是()main(){intx,y,z;x=0;y=z=-1;x+=-z---yprintf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

53.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

54.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是

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

55.若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是______。

A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

56.下面程序输出的结果是______。main(){inti=5,j=9,z;x=(i==j?i:(j=7));printf(:\n%d,%d",i,j);}

A.5,7B.5,5C.语法错误D.7,5

57.表达式~0x11的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFE1

58.在C语言中,如果下面的变量都是血类型,则输出的结果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);

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

59.下面程序的输出结果是______。main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4]=a,i,j,k=0;for(i=0;i<3;i++)for(j=0;j<2;j++)k=p[i][j];printf("%d\n",k);}

A.17B.18C.19D.23

60.若下列各选项中所有变量已正确定义,函数fun通过return语句返回一个函数值,以下选项中错误的程序是()。

A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}

B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}

C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}

D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}

四、选择题(20题)61.

62.

63.

64.下面结构体的定义语句中,错误的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

65.有以下程序

#include<stdio.h>

#include<stdlib.h>

intfun(intt)

{int*p;

p=(int*)malloc(sizeof(int));

*p=t;return*p;

}

main()

{inta;

a=fun(8);

printf("%d\n",a+fun(10));

}

程序的运行结果是

A.0B.10

C.18D.出错

66.层次型、网状型和关系型数据库的划分原则是()

A.数据之间的联系方式B.记录长度C.联系的复杂程度D.文件的大小

67.设有如下定义

char*s[2]={"abcd","ABCD"};

则下列说法错误的是

A.s数组元素的值分别是″abcd″和″ABCD″两个字符串的首地址

B.s是指针数组名,它含有两个元素,分别指向字符型一维数组

C.s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素

D.s数组的两个元素中分别存放了字符′a′和′A′的地址

68.程序运行后的输出结果是()。A.Qian,f,350,Sun,f,350

B.Qiamf,350,Qian,f,350

C.Qian,f,350,Sun,m,370

D.Zha0,m,290,Sun,m,370

69.一棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。

A.16B.10C.6D.4

70.有以下程序

71.

72.以下正确的字符串常量是()。

A."\\\"B.abcC.OlympicGamesD.""

73.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是()。A.A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码

74.有以下程序:

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

A.02B.13C.57D.12

75.

76.

77.有以下定义和语句:

structworkers

{intnum;charname[20];charC;

struct

{intday;intmonth;intyear;)S;

};

structworkersw,*pw;

pw=&w;

能给w中year成员赋1980的语句是()。

A.*pw.year=1980;

B.w.year=1980;

C.pw->year=1980

D.w.S.year=1980;

78.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是计算正整数m各位上数字的平方和。例如,输入498,则输出应该是161。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm){//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum);}voidmain{longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n));}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹析下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写程序,实现矩阵(3行、3列)的转置(即行列互换)。例如,若输入下面的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:11#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4voidfun(intarray[3][3])5{67}8voidmain()9{10FILE*wf;11inti,j;12intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};13system("CLS");14for(i=0;i<3;i++)15{for(j=0;j<3;j++)16printf("%7d",array[i][j]);17printf("\n");18}19fun(array);20printf("Convertedarray:\n");21for(i=0;i<3;i++)22{for(j=0;j<3;j++)23printf("%7d",array[i][j]);24printf("\n");25}26/*********found*********/27wf=fopen("out.datn,"w");28for(i=0;i<3;i++)29{for(j=0;j<3;j++)30fprintf(wf,"%7dn,array[i][j]);31fprintf(wf,"\n");32}33fclose(wf);34/*********found********/35}

参考答案

1.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

2.B

3.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。

4.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:

#define宏名(形参表)字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

5.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

6.AA。【解析】C语言源程序不能表示八进制,在C语言中,所有的数值型常量都带有符号,所以整型数量只区别整型和长整型两种形式,整型常量和长整型常量均可用十进制、二进制、十六进制3种形式表示,故A不正确。

7.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

8.C

9.CC语言中除法运算有两个运算数,两个整数的除法运算会舍去小数部分,结果为整数;由于C语言中浮点数的小数形式必须要有小数点,所以选项A(5.)、B(3.)、D(3.0和5.0)都是浮点数。选项A、B运算时自动将另一个整数转换成浮点数,然后再运算,选项D中两个都是浮点数,浮点数的除法运算结果还是浮点数。所以本题中选项A、B、D运算结果是浮点数,选项C运算结果是整数。故本题答案为C选项。

10.D

11.A"\0"表示空字符,strlen函数求得的是不包括字符串结束符'\0'的长度。故选A。

12.B本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为++x;x=3,则3+1=4。

13.AA。【解析】线性表的存储通常分为两种存储结构:顺序存储结构和链式存储结构。

\n

14.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。

15.A由顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A选项错误。故本题答案为A选项。

16.A

17.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

18.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

19.D

20.A解析:本题考核的知识点是scanf()函数的运用。seanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数为输入变量地址列表,在scallf()语句中非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式串为%d,%d其中“,”为非格式字符,所以输入时必须原样输入。所以4个选项中选项A符合题意。

21.方法方法解析:在面向对象方法中,方法是指允许作用于某个对象上的各种操作。

22.关系模型关系模型

23.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

24.读栈顶元素读栈顶元素解析:栈的基本运算有三种:入栈、退栈和读栈顶元素。

入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。

退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针退一(即top减1)。

读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。

25.ii解析:本题使用了一个两重for循环输出如题所示的方阵。从外层for循环的最后一条语句prinff('\\n');可以看出,外层for循环每次输出方阵的一行,由于方阵是4行所以外层循环会循环4次,又从j=4和卜可以看出这4次循环,循环变量i的值分别为4、3、2、1.故前一空应该填j>=1或者j>0,以保证j等于0时循环结束。内层循环控制每行输出的4个数,其循环变量i从1递增到4,由于每行的4个结果也是差1递增的,所以将每次结果减去循环变量i的值为一个常数,每行分别是12、8、4、0,而这些值正好与4次外循环中表达式(j-1)*4的值相吻合,故后一空应该填i。

26.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

27.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i]小即可实现将一个数组的前项和后项之和存入另一数组。

28.DIR??C*.*

29.1212解析:本题签考查如何用指针引用数组元素。分析程序,首先定义了一个指向数组a的指针p,p指向数组的首地址,通过p++,将p指向a[1],p+2是将指针后移2位指向a[3],*(p+2)即是取a[3)的值12。

30.逻辑逻辑解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构或物理结构。

31.x=2y=1

32.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

33.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

34.8181解析:将S(i+j)展开来有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

35.k-1k,-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。

36.structSTRUstructSTRU解析:结构体类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,……

其中变量包括:一般变量、指针变量、数组变量等。

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

38.逻辑关系逻辑关系

39.*str1或*str1!='\0'或*str1!=0或*str1!=NUL*str1++=*str2++或*str1++=*str2*str2++*str1或*str1!='\\0'或*str1!=0或*str1!=NUL\r\n*str1++=*str2++或*str1++=*str2,*str2++解析:函数strcat(str1,str2)实现将字符串str2连接到字符串str1后面,所以首先要找到字符串str1的串尾,根据C语言的语法规定,一个串的串尾—定是—个隐含字符“\\0”,而在程序中,对字符串中字符的访问是通过两个指针变量来完成的,因此要找到字符串str1的串尾,要判断:str1是否为“\\0”,要找到字符串str2的串尾,要判断*str2是否为“\\0”,程序中必须以使字符串中字符逐—顺序体现,所以在题中我们应填写“*str1”和“*str1++=*str2++”。

40.j++a[j]>a[j]

41.D解析:本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在C语言中有两个有关指针的运算符:&运算符,为取地址运算符,*运算符是指针运算符,*p代表p所指向的变量。本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q并让它指向p,选项A中将常量1赋给指针p不正确;选项B也是将常量2赋给*p,故选项B不正确;选项C中P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以,4个选项中选项D符合题意。

42.D解析:本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。

43.D解析:“||”为或运算符,当其左有表达式中只要一个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。

44.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

45.C解析:strlen(s)返回s字符串中字符的个数,若s是个数组,则返回数组元素的个数。

46.C解析:因为在函数fun(intx)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:fun(7)=7-fun(5)=7-(5-fun(3))-7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2,所以最后的输出结果为2。

47.D解析:输入7,先使x加1,条件表达式成立,执行语句printf('%d',x);,输出8;输入3,先使x加1,条件表达式不成立,执行语句printf('%d\\n',x--);,输出4,再将x自减。

48.C解析:case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后的表达式类型相同。这个程序段主要考查的是case后是常量表达式。

49.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

50.D解析:C语言中操作一个字符串常量的方法有:

①把字符串常量存放在一个字符数组之中。

②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。

当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。

本题选项D)错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。

51.B解析:本题宏替换中遇到形参x以实参k+l代替,其他字符不变。SQR(k+1)展开后应为字符串k+l*k+l。

52.C

53.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

54.C解析:函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。

55.A解析:在答案A中:p=p->next;s->next=p;p->next=s;s的确已插到了链表的末尾,但它的next却并没有为NULL,而是指向了它的直接前趋p,这样它就不是一个单向链表(单向链表最后一个结点的next指针一定是一个NULL)。

56.A解析:条件表达式的一般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。

57.A解析:本题主要考查按位求反运算和整型常量的表示:①十六进制整型常量的形式是以数字0x或0X开头的十六进制字符串;②按位求反运算的规则是:将二进制表示的运算对象按位取反,即将1变0,将0变1。“0x11”即0000000000010001,进行按位求反运算“~0x11”后为1111111111101110,即OxFFEE。

58.C

59.C解析:p是指向长度为4的一维数组的指针变量,可看作是二维数组a的行指针,可以像使用数组名一样通过p带数组下标的形式来引用数组中元素,变量k最后是元素a[2][1]的值。

60.A解析:C语言程序从main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项A)中,先执行main函数,并调用了fun函数,而fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。

61.B

62.C

63.Afun函数将字符串中的小写字符转换为大写字母,所以答案选择A)。

64.B结构体定义的类型说明的一般形式为:struct结构体标识名{类型名1结构成员名表l;类型名2结构成员名表2;···};。注意:①结构体说明同样要以分号结尾;②紧跟在结构体类型说明之后进行定义;③在说明一个无名结构体类型的同时,直接进行定义;④先说明结构体类型,再单独进行变量定义等。所以B选项错误。

65.C本题考查函数的调用。题目给出的程序可以分为两个部分,一个是函数fun,另一个是主函数main。fun函数的功能是输入一个整型变量t,设置一个指向该整型变量的指针p,并将该指针所指向的值返回给main函数。main函数中两次调用了fun函数,第一次变量t的值为8,第二次变量t的值为10,第一次返回值8,使得a=8,第二

温馨提示

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

评论

0/150

提交评论