版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年广东省中山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列代码的复杂度是多少?如果多于1个答案正确,选择最小的那个。()A.O(n*m*m)B.O(n*log(m)*m)C.O(n+m+m)D.O(n*m)
2.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。
A.单链表B.双向链表C.单循环链表D.顺序表
3.某二叉树的前序和后序序列正好相反,则该二叉树一定是_____的二叉树
A.空或者只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子
4.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
5.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序运行后输出结查是
A.16B.10C.8D.6
6.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个。
A.1B.2C.3D.4
7.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}
A.3B.4C.5D.6
8.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
9.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。
A.7.5B.31.5C.程序有错,无输出结果D.14.0
10.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
11.以下有关scanf函数的叙述中错误的是()。
A.在scanf函数的格式字符前既可以加入正整数指定输入数据所占的宽度,也可以对实数指定小数位的宽度
B.scanf函数有返回值,其值就是本次调用scanf函数时正确读入的数据项个数
C.scanf函数从输入字符流中按照格式控制指定的格式解析出相应数据,送到指定地址中
D.在scanf函数中的格式控制字符串不会输出到屏幕上
12.
13.
14.在排序方法中,元素比较次数与元素的初始排列无关的是()
A.Shell排序B.归并排序C.直接插入排序D.选择排序
15.
16.
17.如有inta=11;则表达式(a/1)的值是()。
A.0B.3C.4D.11
18.程序运行后的输出结果是()。A.10B.30C.0D.64
19.定义根节点深度为1,有n个元素的完全二叉树的深度是()
A.D(n)=log2(n)
B.D(n)=1+log2(n)
C.D(n)=n+log2(n)
D.D(n)=1+n*log2(n)
20.以下说法错误的是()。
A.C语言标识符中可以有多个字母、数字和下划线字符
B.C语言标识符中下划线字符可以出现在任意位置
C.C语言标识符不能全部由数字组成
D.C语言标识符必须以字母开头
二、2.填空题(20题)21.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
#include<stdio.h>
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;f=【】;}
returnm;
}
main()
{printf("m=%d\n",【】);}
22.数据库系统中实现各种数据管理功能的核心软件称为【】。
23.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,【】给出了数据库物理存储结构和物理存取方法。
24.在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的【】操作实现窗口的移动。
25.【】是数据库设计的核心。
26.下列程序的输出结果是______。
main()
{chara[]="ABCDEFG";
char*cp=&a[7];
while(--cp>&a[0])putchar(*cp);
}
27.以下程序的输出结果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
28.以下程序运行后的输出结果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
29.以下程序运行后的输出结果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
30.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
31.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。
32.下列程序的运行结果为【】。
main()
{
intx,y,z;
X=12;
y=012;
z=0l2;
printf("%d,%d,%d\n",x,y,z);
}
33.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
34.以下程序的输出结果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
35.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。
structlink
{chardata;
structlink*next;};
…
structlink*p,*first;
intc=0;
p=first;
while(【】)
{c++;
p=【】;}
36.关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。
37.想通过以下输入语句给x赋值2,给y赋值3,则输入数据的形式应该是______。
intx,y;
scanf("x=%d,y=%d",&x,&y);
38.一个模块直接调用的其他模块的模块个数称为______。
39.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为【】。
40.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
三、1.选择题(20题)41.函数ftell(fp)的作用是()。
A.得到fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上答案均正确
42.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。
A.12B.15C.16D.20
43.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;)printf("%f\n%f\n%f\n",a,b,c);}
A.1
B.1.002.003.003.002.00
C.1
D.3.00000032.00000021.000000
44.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
45.若有以下程序段(n所赋的是八进制数)intm=32767,n=032767;printf("%d,%O\n",m,n);执行后输出结果是
A.32767,32767B.32767,032767C.32767,77777D.32767,077777
46.算法的有穷性是指A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
47.以下程序运行后,输出结果是______。
main()
{
char*d[]={"ab","cde"};
printf("%x",d[1]);
}
A.cdeB.字符c的ASCⅡ的值C.字符c的地址D.出错
48.设计软件结构是在软件生命周期的()。
A.软件定义期B.软件开发期C.软件维护期D.以上3个都不是
49.下列说法不正确的是()。
A.C语言程序是以函数为基本单位的,整个程序由函数组成
B.C语言程序的一条语句可以写在不同的行上
C.C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D.C语言程序的每个语句都以分号结束
50.一个良好的算法由下面的基本结构组成,但不包括______。
A.顺序结构B.选择结构C.循环结构D.跳转结构
51.微型计算机中运算器主要的功能是进行()
A.算术运算B.逻辑运算C.算术和逻辑运算D.初等函数运算
52.执行以下语句的结果为______。intx=3,y;int*px=&x;y=*px++;
A.x=3,y=4B.x=3,y=3C.x=4,y=4D.x=3,y不知
53.若a、b、c、d都是血型变量且都已经正确赋初值,则下列不正确的赋值语句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
54.系统软件中最重要的是
A.操作系统B.语言处理程序C.工具软件D.数据库管理系统
55.以下选项中不属于字符常量的是
A.′C′B.′′C′′C.′\xCC′D.′\072′
56.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出结果是()。
A.12B.13C.14D.15
57.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。
A.a++;B.b++;C.c++;D.d++;
58.下面的程序执行后,文件test.txt中的内容是()#include<stdio.h>voidfun(char*<fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test","newword");fun("test","hello");}
A.helloB.newworldhello,C.newworldD.hello,rld
59.下列关于栈的叙述中正确的是
A.在栈中只能插入数据B.在栈中只能删除数据C.栈足先进先出的线性表D.栈是先进后出的线性表
60.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
四、选择题(20题)61.
62.有下列程序
voidfunc1(inti);
voidfunc2(inti);
charst[]="hello,friend!";
voidfunc1(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
voidfunc2(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{inti=0;func1(i);
printf("\n");
}
执行后的输出结果是
A.helloB.hel
C.hloD.hlm
63.下面程序的运行结果是()。
main
{
inty=5,x=14;y=((x=3*y,x+6),x-1);
printf("x=%d,y=%d",x,y);
}
A.x=27,y=27
B.x=12,y=13
C.x=15,y=14
D.x=y=27
64.
65.
66.
67.有以下程序:
程序运行后的输出结果是()。
A.2.3B.1,3C.1,4D.1,2
68.下列定义数组的语句中,正确的是()。
A.intN=10;intx[N]:
B.#defineNl0;intx[N];
C.intx[0..10];
D.intx[];
69.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值
70.有以下程序段#include<stdio.h>main(){...while(getchar()!=\n);...}以下叙述中正确的是()。A.此while语句将无限循环
B.getchar()不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
71.有以下程序程序运行后的输出结果是()。
A.Zha0,m,85,90,Qian,f,95,92
B.Zha0,m,85,90,Zha0,m,85,90
C.Qian.f,95,92,Qian,f,95,92
D.Qian,f,95,92,Zha0,m,85,90
72.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
73.以下程序段
74.以下程序的输出结果是()。
A.678910
B.13579
C.12345
D.62345
75.
76.
77.用数据流图(DFD.作为描述工具的软件开发阶段是()。
A.可行性分析B.需求分析C.概要设计D.详细设计
78.
79.有以下程序:
程序执行后的输出结果是()。
A.x=4B.X=8C.x=6D.x=12
80.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据形参m(2≤m≤9)的值,在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为70,则程序输出:
7111421222833354244495556636670
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{}
voidmain
{
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)//每行输出20个数
{printf("%4d",arr[k]);
printf("\n");
}
else
printf("%4d",arr[k]);
printf("\n");
}
参考答案
1.D
2.D
3.B
4.C
5.B解析:本题考查的是指针的简单应用。题目中首先定义了一个int型数组a并初始化了,然后定义了两个指针变量p和q,并分别初始化p为指向数组元素a[3]、q指向p后面的第2个元素即指向a[5]。所以最终输出的值为a[3]+a[5]的值10。应该选B。
6.D
7.B解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。
8.C
9.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。
10.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
11.A在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,选项A错误,其他选项正确。故本题答案为A选项。
12.B
13.A
14.D
15.D
16.D
17.D
18.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.
19.B
20.DC语言的合法的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D错误。本题答案为D选项。
21.(-1)*ffun(10)(-1)*f\r\nfun(10)解析:本题利用一个fun函数来完成题目要求的计算。程序中变量f起的作用是控制i*f的符号,偶数位都为负值,第一处填(-1)*f。在main函数中要输出fun函数返回的m值,因此第二处填fun(10),实参10传给形参n。
22.数据库管理系统数据库管理系统(DBMS)
23.内模式内模式解析:内模式又称为物理模式,它给出了数据库物理存储结构与物理存取方法。
24.拖动拖动
25.数据模型数据模型
26.GFEDCB。GFEDCB。解析:开始指针cp指向字符串结束标志,在循环中,cp依次向前移动,当打印出第二个字符后,cp指向第一个字符,循环判断条件不满足,退出循环,因此,只打印出第一个字符以后的字符的逆序列。
27.SOSO解析:考查用指针引用字符串数组中元素的方法。题中需要注意两个问题:一是for循环的修正表达式共执行两次'i--'操作;二是*p[i]是对某个字符的引用。
28.gae
29.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:
类型说明符*指针变量名;
30.k=p;k=p;解析:为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码'k=p;'。
31.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。
32.12101812,10,18解析:本题定义了3个整型变量x、y、z,并分别用十进制数、八进制数、十六进制数为它们赋值。然后以十进制整型输出这3个变量。八进制数012的十进制表示为10,十六进制数0x12的十进制表示为18。此外输出函数格式控制中的“,”原样输出。
33.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符;则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填;'%s',str。
34.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。
35.p!=NULLp->nextp!=NULL\r\np->next解析:结构体变量构成链表需要每个节点中都有一个指向下一个结点的指针,就像本题中的next指针一样。注意:掌握可以对链表进行的操作。
36.查询查询
37.x=2y=3。x=2,y=3。解析:使用scanf函数输入数据,普通字符必须原样输入,本题的普通字符为'x'、'='、','、'y'正确的输入格式是x=2,y=3。
38.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。
39.n(n-1)/2
40.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。
41.A解析:位置指针当前值函数ftell()的基本调用格式为:ftell(fp)。
ftell()函数的参数说明:“fp”是指向文件的文件型指针。
ftell函数的功能:得到fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。
42.A解析:本题的考查点是宏定义。a++的形式应当先使用a值,然后a才进行自加1运算,所以程序在进行SUB()乘法运算的时候,仍取a,b的原值,最后输出的结果是12。
43.D解析:本题考查if语句。第1个if语句,实现如果a<b,则交换a、b值的功能;第2个if语句,实现如果a<c,则交换a、c的值的功能;第3个if语句,实现如果b<c,则交换b、c的值的功能。3个if语句结合起来实现的功能就是将a、b、c按从大到小排序。
44.B
45.A解析:本题考核的知识点是scanf()函数及printf()函数的输出格式。程序在定义时,以十进制形式为m赋初值,以八进制的形式为n赋初值.输出的时候m以十进制形式输出,n以八进制形式输出,因此输出的结果为32767和32767。所以,A选项为所选。
46.A算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
47.C解析:指针数组中的每—个元素都相当于—个指针变量。—维指针数组的定义形式为:类型名*数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab'’、“cdc'’的首地址。d[1]的值为“cde”的首地址。%x是指以十六进制数形式输出整数。
48.BB。【解析】设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。
49.C解析:本题涉及C语言的3个基本知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;⑧注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。
50.D解析:1966年,Bohra和Jacopini提出了以下三种结构,用这三咱基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。
51.C
52.B解析:++和*的运算优先级别相同,且从右到左结合,y=*px++也就是y=*(px++),++运算只对px有效。这里++是后置的,应当先将px所指向的变量*px(也就是变量x)的值赋给变量y,然后px才增1。
53.A解析:C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C)、选项D)正确;在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式;在选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。
54.A提示:应用软件一般是以操作系统为开发平台的。
55.B解析:在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。
56.D解析:在表达式r=func(func(x,y),z)中,func(x,y)是第一次调用函数,它的返回值7作为func函数第二次调用的实参,结果为15。
57.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。
58.A
59.D解析:对栈可进行插入和删除数据的操作,但必须牢记插入和删除数据都只能在栈顶,是一种特殊的线性表.所以栈是先进后出的线性表。
60.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。
61.C
62.C根据变量作用域与其定义语句在程序中出现位置之间的关系,可把变量分为局部变量和全局变量两种。其中,在函数外部定义的变量叫做全局变量,又称为外部变量;在函数体内定义的变量是局部变量,又称为内部变量。全局变量的作用域是整个程序,而局部变量的作用域是定义它的函数或者程序段。
在本题中,程序首先声明两个无返回值函数func1和func2,然后定义一个全局数组st。做这类除主函数外,有其他函数的试题时,首先需要分析其他函数来得知函数的作用,然后再看主函数。
func1函数带有一个整型变量的形参,在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。
从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。
在主函数中定义一个变量i并赋值为0,然后调用函数func1,根据我们对函数func1的分析可知,输出st[0]即字符‘h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2,并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,此时由于变量i的值等于4,是大于3的,函数结束。程序运行到出口,最后输出换行。因此,本程序最终的输出结果是hlo。
63.C本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。表达式(x=3*y,x+6)中,x=15。表达式y=x—1=14。
64.A
65.C
66.D
67.B在f(int+P,int4q)函数中,执行P=P+1是将P所对应的地址加1,而0q=+q+1是将q所指向的n的地址所对应的值加1,所以m的得知所对应的值没有变,而n的值则为3了。因此B选项正确。
68.D选项A、B中n为变量,C语言中不允许动态定义数组维数,即维数不能是变量。选项C无此语法。
69.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。
(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。
70.C主要是考查while和getchar函数,getchar函数是输入字符函数,while是循环语句,所以当输入的字符为换行符时将执行。
71.A本题考查的是函数调用时的参数传递问题。程序在调用函数时,传给函数啪参数只是结构变量C在栈中的一个拷贝,函数馓的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量C的值。因此本题答案为A)。
72.D
73.Aseanf中name得至lJLili,Rum得到l001,所以结果选择A)。
74.Achange函数的功能是将数组中的第6个元素值赋给第l个元素。第一次调用后,x[0]=x[5]=6。第二次调用实际是以x的第2个元素作为数组首元素,所以调用结束时x[1]=x[6]=7。后三次调用分别将x[2]、x[3]、x[4]赋值为8、9、10。
75.D
76.D
77.B\n结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。而结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的、称为结构化规格说明的目标文档。
\n
78.D
79.Beoulinue的作用是跳出循环体中剩余的1语句而进行下一次循环。第一次执行外循环i的值为0,执行|x++,x的值变为l,第一次执行内层循环j的值为0,不满足if1条件,执行x++,x的值变为2,第二次内循环j的值为1,if条1件成立,跳出本次循环,第三次执行内循环j的值为2,不满足lif条件,x的值变为3,第四次执行内循环j的值为3满足条件1跳出本次内循环,x的值加l,即为4,第一次外循环结束。第1二次执行外循环时,同理,i的值被加了,4次,变为8,所以选择I,B选项。
80.B\n用带下标的指针变量引用一维数组元素若有以下定义和语句:“int*P,s[10],i;P=s}”,且o≤i<10,可以用&.s[i]、s+i和p+i三种表达式来表示s[i]的地址。同时可以用s[i]、*(s+i)和*(p+i)三种表达式来表示数组元素s[i]。
\n
81.(1)错误:proc(int**a,intm)
正确:voidproc(int(*a)[N],intm)
(2)错误:aEj][k]=k*J;
正确:a[j][k]=(k+1)*(j+1);
【解析】从主函数的调用可知,函数proc()没有返回值,因此应该定义为void类型。形参a应该是一个整型的指针数组。因此,“proe(int**a,intm)”应改为“voidproc(int(*a)[N],intm)”。数组下标从0开始,由事例数组可知,其元素从l开始递增,因此“a[j][k]=k*J;”应改为“a[j][k]=(k+1)*(j+1);”。
82.\n\tvoidproc(intm,int*a,int*n)
\n{
\ninti,j=0;
\nfor(i=1;i<=m;i++)//进行m次循环
\nif(i%7==0||i%11==0)//能被7或11整除的所有整数
\na[j++]=i;//符合条件的数放在数组a中
\n*n=j;//返回这些数的个数
\n}
\n【解析】本题需要先判断1~m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。\n2022-2023年广东省中山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列代码的复杂度是多少?如果多于1个答案正确,选择最小的那个。()A.O(n*m*m)B.O(n*log(m)*m)C.O(n+m+m)D.O(n*m)
2.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。
A.单链表B.双向链表C.单循环链表D.顺序表
3.某二叉树的前序和后序序列正好相反,则该二叉树一定是_____的二叉树
A.空或者只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子
4.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
5.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序运行后输出结查是
A.16B.10C.8D.6
6.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个。
A.1B.2C.3D.4
7.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}
A.3B.4C.5D.6
8.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
9.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。
A.7.5B.31.5C.程序有错,无输出结果D.14.0
10.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
11.以下有关scanf函数的叙述中错误的是()。
A.在scanf函数的格式字符前既可以加入正整数指定输入数据所占的宽度,也可以对实数指定小数位的宽度
B.scanf函数有返回值,其值就是本次调用scanf函数时正确读入的数据项个数
C.scanf函数从输入字符流中按照格式控制指定的格式解析出相应数据,送到指定地址中
D.在scanf函数中的格式控制字符串不会输出到屏幕上
12.
13.
14.在排序方法中,元素比较次数与元素的初始排列无关的是()
A.Shell排序B.归并排序C.直接插入排序D.选择排序
15.
16.
17.如有inta=11;则表达式(a/1)的值是()。
A.0B.3C.4D.11
18.程序运行后的输出结果是()。A.10B.30C.0D.64
19.定义根节点深度为1,有n个元素的完全二叉树的深度是()
A.D(n)=log2(n)
B.D(n)=1+log2(n)
C.D(n)=n+log2(n)
D.D(n)=1+n*log2(n)
20.以下说法错误的是()。
A.C语言标识符中可以有多个字母、数字和下划线字符
B.C语言标识符中下划线字符可以出现在任意位置
C.C语言标识符不能全部由数字组成
D.C语言标识符必须以字母开头
二、2.填空题(20题)21.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
#include<stdio.h>
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;f=【】;}
returnm;
}
main()
{printf("m=%d\n",【】);}
22.数据库系统中实现各种数据管理功能的核心软件称为【】。
23.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,【】给出了数据库物理存储结构和物理存取方法。
24.在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的【】操作实现窗口的移动。
25.【】是数据库设计的核心。
26.下列程序的输出结果是______。
main()
{chara[]="ABCDEFG";
char*cp=&a[7];
while(--cp>&a[0])putchar(*cp);
}
27.以下程序的输出结果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
28.以下程序运行后的输出结果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
29.以下程序运行后的输出结果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
30.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
31.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。
32.下列程序的运行结果为【】。
main()
{
intx,y,z;
X=12;
y=012;
z=0l2;
printf("%d,%d,%d\n",x,y,z);
}
33.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
34.以下程序的输出结果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
35.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。
structlink
{chardata;
structlink*next;};
…
structlink*p,*first;
intc=0;
p=first;
while(【】)
{c++;
p=【】;}
36.关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。
37.想通过以下输入语句给x赋值2,给y赋值3,则输入数据的形式应该是______。
intx,y;
scanf("x=%d,y=%d",&x,&y);
38.一个模块直接调用的其他模块的模块个数称为______。
39.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为【】。
40.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
三、1.选择题(20题)41.函数ftell(fp)的作用是()。
A.得到fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上答案均正确
42.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。
A.12B.15C.16D.20
43.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;)printf("%f\n%f\n%f\n",a,b,c);}
A.1
B.1.002.003.003.002.00
C.1
D.3.00000032.00000021.000000
44.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
45.若有以下程序段(n所赋的是八进制数)intm=32767,n=032767;printf("%d,%O\n",m,n);执行后输出结果是
A.32767,32767B.32767,032767C.32767,77777D.32767,077777
46.算法的有穷性是指A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
47.以下程序运行后,输出结果是______。
main()
{
char*d[]={"ab","cde"};
printf("%x",d[1]);
}
A.cdeB.字符c的ASCⅡ的值C.字符c的地址D.出错
48.设计软件结构是在软件生命周期的()。
A.软件定义期B.软件开发期C.软件维护期D.以上3个都不是
49.下列说法不正确的是()。
A.C语言程序是以函数为基本单位的,整个程序由函数组成
B.C语言程序的一条语句可以写在不同的行上
C.C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D.C语言程序的每个语句都以分号结束
50.一个良好的算法由下面的基本结构组成,但不包括______。
A.顺序结构B.选择结构C.循环结构D.跳转结构
51.微型计算机中运算器主要的功能是进行()
A.算术运算B.逻辑运算C.算术和逻辑运算D.初等函数运算
52.执行以下语句的结果为______。intx=3,y;int*px=&x;y=*px++;
A.x=3,y=4B.x=3,y=3C.x=4,y=4D.x=3,y不知
53.若a、b、c、d都是血型变量且都已经正确赋初值,则下列不正确的赋值语句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
54.系统软件中最重要的是
A.操作系统B.语言处理程序C.工具软件D.数据库管理系统
55.以下选项中不属于字符常量的是
A.′C′B.′′C′′C.′\xCC′D.′\072′
56.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出结果是()。
A.12B.13C.14D.15
57.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。
A.a++;B.b++;C.c++;D.d++;
58.下面的程序执行后,文件test.txt中的内容是()#include<stdio.h>voidfun(char*<fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test","newword");fun("test","hello");}
A.helloB.newworldhello,C.newworldD.hello,rld
59.下列关于栈的叙述中正确的是
A.在栈中只能插入数据B.在栈中只能删除数据C.栈足先进先出的线性表D.栈是先进后出的线性表
60.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
四、选择题(20题)61.
62.有下列程序
voidfunc1(inti);
voidfunc2(inti);
charst[]="hello,friend!";
voidfunc1(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
voidfunc2(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{inti=0;func1(i);
printf("\n");
}
执行后的输出结果是
A.helloB.hel
C.hloD.hlm
63.下面程序的运行结果是()。
main
{
inty=5,x=14;y=((x=3*y,x+6),x-1);
printf("x=%d,y=%d",x,y);
}
A.x=27,y=27
B.x=12,y=13
C.x=15,y=14
D.x=y=27
64.
65.
66.
67.有以下程序:
程序运行后的输出结果是()。
A.2.3B.1,3C.1,4D.1,2
68.下列定义数组的语句中,正确的是()。
A.intN=10;intx[N]:
B.#defineNl0;intx[N];
C.intx[0..10];
D.intx[];
69.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值
70.有以下程序段#include<stdio.h>main(){...while(getchar()!=\n);...}以下叙述中正确的是()。A.此while语句将无限循环
B.getchar()不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
71.有以下程序程序运行后的输出结果是()。
A.Zha0,m,85,90,Qian,f,95,92
B.Zha0,m,85,90,Zha0,m,85,90
C.Qian.f,95,92,Qian,f,95,92
D.Qian,f,95,92,Zha0,m,85,90
72.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
73.以下程序段
74.以下程序的输出结果是()。
A.678910
B.13579
C.12345
D.62345
75.
76.
77.用数据流图(DFD.作为描述工具的软件开发阶段是()。
A.可行性分析B.需求分析C.概要设计D.详细设计
78.
79.有以下程序:
程序执行后的输出结果是()。
A.x=4B.X=8C.x=6D.x=12
80.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据形参m(2≤m≤9)的值,在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为70,则程序输出:
7111421222833354244495556636670
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{}
voidmain
{
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)//每行输出20个数
{printf("%4d",arr[k]);
printf("\n");
}
else
printf("%4d",arr[k]);
printf("\n");
}
参考答案
1.D
2.D
3.B
4.C
5.B解析:本题考查的是指针的简单应用。题目中首先定义了一个int型数组a并初始化了,然后定义了两个指针变量p和q,并分别初始化p为指向数组元素a[3]、q指向p后面的第2个元素即指向a[5]。所以最终输出的值为a[3]+a[5]的值10。应该选B。
6.D
7.B解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。
8.C
9.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。
10.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
11.A在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,选项A错误,其他选项正确。故本题答案为A选项。
12.B
13.A
14.D
15.D
16.D
17.D
18.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.
19.B
20.DC语言的合法的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D错误。本题答案为D选项。
21.(-1)*ffun(10)(-1)*f\r\nfun(10)解析:本题利用一个fun函数来完成题目要求的计算。程序中变量f起的作用是控制i*f的符号,偶数位都为负值,第一处填(-1)*f。在main函数中要输出fun函数返回的m值,因此第二处填fun(10),实参10传给形参n。
22.数据库管理系统数据库管理系统(DBMS)
23.内模式内模式解析:内模式又称为物理模式,它给出了数据库物理存储结构与物理存取方法。
24.拖动拖动
25.数据模型数据模型
26.GFEDCB。GFEDCB。解析:开始指针cp指向字符串结束标志,在循环中,cp依次向前移动,当打印出第二个字符后,cp指向第一个字符,循环判断条件不满足,退出循环,因此,只打印出第一个字符以后的字符的逆序列。
27.SOSO解析:考查用指针引用字符串数组中元素的方法。题中需要注意两个问题:一是for循环的修正表达式共执行两次'i--'操作;二是*p[i]是对某个字符的引用。
28.gae
29.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:
类型说明符*指针变量名;
30.k=p;k=p;解析:为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码'k=p;'。
31.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。
32.12101812,10,18解析:本题定义了3个整型变量x、y、z,并分别用十进制数、八进制数、十六进制数为它们赋值。然后以十进制整型输出这3个变量。八进制数012的十进制表示为10,十六进制数0x12的十进制表示为18。此外输出函数格式控制中的“,”原样输出。
33.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符;则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填;'%s',str。
34.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。
35.p!=NULLp->nextp!=NULL\r\np->next解析:结构体变量构成链表需要每个节点中都有一个指向下一个结点的指针,就像本题中的next指针一样。注意:掌握可以对链表进行的操作。
36.查询查询
37.x=2y=3。x=2,y=3。解析:使用scanf函数输入数据,普通字符必须原样输入,本题的普通字符为'x'、'='、','、'y'正确的输入格式是x=2,y=3。
38.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。
39.n(n-1)/2
40.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。
41.A解析:位置指针当前值函数ftell()的基本调用格式为:ftell(fp)。
ftell()函数的参数说明:“fp”是指向文件的文件型指针。
ftell函数的功能:得到fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。
42.A解析:本题的考查点是宏定义。a++的形式应当先使用a值,然后a才进行自加1运算,所以程序在进行SUB()乘法运算的时候,仍取a,b的原值,最后输出的结果是12。
43.D解析:本题考查if语句。第1个if语句,实现如果a<b,则交换a、b值的功能;第2个if语句,实现如果a<c,则交换a、c的值的功能;第3个if语句,实现如果b<c,则交换b、c的值的功能。3个if语句结合起来实现的功能就是将a、b、c按从大到小排序。
44.B
45.A解析:本题考核的知识点是scanf()函数及printf()函数的输出格式。程序在定义时,以十进制形式为m赋初值,以八进制的形式为n赋初值.输出的时候m以十进制形式输出,n以八进制形式输出,因此输出的结果为32767和32767。所以,A选项为所选。
46.A算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
47.C解析:指针数组中的每—个元素都相当于—个指针变量。—维指针数组的定义形式为:类型名*数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab'’、“cdc'’的首地址。d[1]的值为“cde”的首地址。%x是指以十六进制数形式输出整数。
48.BB。【解析】设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。
49.C解析:本题涉及C语言的3个基本知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;⑧注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。
50.D解析:1966年,Bohra和Jacopini提出了以下三种结构,用这三咱基本结构作为表示一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级数学计算题专项练习1000题汇编
- 二年级数学(上)计算题专项练习
- 荷花田管护合同(2篇)
- 南京工业大学浦江学院《土木工程施工技术与组织》2022-2023学年第一学期期末试卷
- 林口镇污水治理工程排水管网工程二期施工组织设计
- 瑞庆汽车发动机技术有限公司联合厂房施工组织设计
- 《醉翁亭记》说课稿
- 《用数学》说课稿
- 《我们的梦想》说课稿
- 科室结对子协议书(2篇)
- 匾额制作工艺
- 天堂旅行团读书分享
- 急性心力衰竭通用课件
- 医疗废物的减量化处理方法与技术
- 中国心血管病风险评估和指南
- 金融业就业课件
- 四年级《梯形的认识》
- 消防在心中安全伴我行消防安全知识主题班会
- 人工智能教育与中小学生创新思维能力的培养
- 2024年中储棉总公司招聘笔试参考题库含答案解析
- 2024年中国石油招聘笔试参考题库含答案解析
评论
0/150
提交评论