![2022-2023年辽宁省大连市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页](http://file4.renrendoc.com/view/e541399acd963ba7b81014488704e06b/e541399acd963ba7b81014488704e06b1.gif)
![2022-2023年辽宁省大连市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页](http://file4.renrendoc.com/view/e541399acd963ba7b81014488704e06b/e541399acd963ba7b81014488704e06b2.gif)
![2022-2023年辽宁省大连市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页](http://file4.renrendoc.com/view/e541399acd963ba7b81014488704e06b/e541399acd963ba7b81014488704e06b3.gif)
![2022-2023年辽宁省大连市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页](http://file4.renrendoc.com/view/e541399acd963ba7b81014488704e06b/e541399acd963ba7b81014488704e06b4.gif)
![2022-2023年辽宁省大连市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页](http://file4.renrendoc.com/view/e541399acd963ba7b81014488704e06b/e541399acd963ba7b81014488704e06b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年辽宁省大连市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0
2.以下关于C语言的叙述中正确的是()。
A.C语言的数值常量中夹带空格不影响常量值的正确表示
B.C语言中的变量可以在使用之前的任何位置进行定义
C.在C语言算术表达式的书写中,运算符两侧的运算数据类型必须一致
D.C语言中的注释不可以夹在变量名或关键字的中间
3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序运行后的输出结果是()。
A.9,8,9B.7,8,7C.7,8,3D.1,2,1
4.以下程序的输出结果是()。
f(intb[],intm,intn)
{inti,s=0;
for(i=m;i<n;i=i+2)s=s+b[i];
returns;
}
voidmain()
{intx,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}A.A.10
B.18
C.8
D.15
5.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值
6.下面关于编译预处理的命令行中,正确的是()。
A.#defineintINT
B.##defineeps0.001
C.##DEFINETRUE
D.#defineE2.88
7.以下程序运行后,输出结果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5
8.有以下程序:
程序运行后的输出结果是()。A.4284B.2870C.2668D.3981
9.对表进行水平方向和垂直方向的分割,分别对应的关系运算是()
A.选择和投影B.投影和选择C.选择和联接D.投影和联接
10.下面程序输出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,
11.下列不属于软件工程的3个要素的是______。
A.工具B.过程C.方法D.环境
12.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0
13.
14.函数调用:strcat(strcpy(str1,str2),str3)的功能是______。
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2之后再复制到串str3之后
C.将串str2复制到串str1中后再将串sir3连接到串str1之后
D.将串str2连接到串str1之后再将串str1复制到串str3中
15.
16.
17.数据库是______的集合,它具有统一的结构形式并存放于统一的存储介质内,可被各个应用程序所共享。
A.视图B.消息C.数据D.关系
18.以下叙述中错误的是()。
A.C语言程序在运行过程中的所有计算都以二进制方式进行
B.C语言程序在运行过程中的所有计算都以十进制方式进行
C.所有C语言程序都需要编译、链接无误后才能运行
D.C语言程序中字符变量存放的是字符的ASCII值
19.若有定义语句:“intkl一10,k2=20;”,执行表达式(kl=kl>k2)(k2=k2>k1)后,kl和k2的值分别为()。
A.0和1B.0和20C.10和1D.10和20
20.
二、2.填空题(20题)21.以下程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(键表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));
p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");
scanf("%d",&a);
while(a!=-1)
{p=(structlist*)malloc(sizeof(structlist));
【】=a;q->next=p;【】=p;scanf("%d",&a);}
p->next='\0';return(ph);}
main()
{structlist*head;head=creatlist();}
22.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。
23.以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abed,t所指字符串为efgh,函数调用后s所指字符串为abodefgh。请填空。
#include<string.h>
voidsstrcat(char*s,char*t)
{intn;
n=strlen(s);
while(*(s+n)=【】){s++;t++;}
}
24.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。
doublesum(doublex,intn)
{inti;doublea,b,s;
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;
}
25.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
structstud
{charnum[6];
mts[4];
doubleave;
}a,*p;
26.在运算过程中,能够使空表与非空表的运算统一的结构是【】。
27.下面程序的运行结果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
28.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。
29.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。
30.下列语句的输出结果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
31.若输入字符串:abcde,则以下while循环体将执行【】次。
while((ch=getchar())=='e')printf("*");
32.下列程序的输出结果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
33.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
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);
}
34.下列程序的输出结果是【】。
main()
{inti;
for(i=1;i+1;i++)
{if(i>4)
{printf("%d\n",i);
break;}
printf("%d\n",i++);}}
35.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。
36.以下程序用以删除字符串中所有的空格,请填空。
#include<stdio.h>
main()
{chars[100]={"OurteacherteachClanguage!"};inti,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=''){()}
s[j]='\0';
printf("%s\n",s);
}
37.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
38.测试用例包括输入值集和【】值集。
39.以下程序的运行结果是______。
structexmp{charname[10];
intnumber;
};
structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};
main()
{printf("%c,%s\n",test[0].name[1],test[2].name+3);
}
40.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。
三、1.选择题(20题)41.下面不属于软件设计原则的是()。
A.抽象B.模块化C.自底向上D.信息隐蔽
42.下列叙述中正确的是()。
A.在模块化程序设计中,一个模块应尽量多的包括与其他模块联系的信息
B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的每一个细节
C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则
D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法
43.按照“后进先出”原则组织数据的数据结构是()。
A.队列B.栈C.双向链表D.二叉树
44.为了提高软件模块的独立性,模块之间最好是()。
A.控制耦合B.公共耦合C.内容耦合D.数据耦合
45.有以下程序
#include<stdio.h>
main()
{inti,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++)m=m%j;
printf("%d\n",m);
}
程序的运行结果是
A.0B.1C.2D.3
46.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是
A.a^bB.a|bC.a&bD.a<<4
47.若有以下定义,则对数组元素的正确引用是()。inta[5],*p=a;
A.*&a[5]B.(*A)2C.*p+4D.(a+2)
48.以下不能正确定义二维数组的选项是
A.inta[2][2]={{1},{2)};
B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},2,3};
D.inta[2][]={{1,2},{3,4)};
49.有以下程序:#include<stdio.h>main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j—)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);prinff("\n");}程序运行后的输出结果是()。
A.75310246B.1234567C.76310462D.13570246
50.设有定义:intn1=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
51.设int型占2个字节,则unsignedint所能表示的数据范围是______。
A.0~65535B.-32769~32767C.1~65536D.0~32767
52.设有二维数组A[8][9],其每个元素占2个字节,从首地址400开始,按行优先顺序存放,则元素A[8,5]的存储地址为______。
A.570B.506C.410D.482
53.若有语句:char*line[5];,以下叙述中正确的是
A.定义line是一个数组,每个数组元素是一个基类型为char为指针变量
B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C.定义line是一个指针数组,语句中的*号称为间址运算符
D.定义line是一个指向字符型函数的指针
54.设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。
A.1B.2C.8D.4
55.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}
A.2,3,2B.2,3,1C.1,3,3D.3,1,2
56.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=0;ps--)puts(ps);}执行后输出结果是()。
A.yzxyZB.zyzC.zyzD.xxyxyzxyz
57.请选出正确的程序段______。
A.int*pscanf(""%d"",p);……
B.int*s,k;*s=100;……
C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……
D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……
58.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
59.函数fseek的正确调用形式是()。
A.fseek(位移量,起始点,文件类型指针);
B.fseek(文件类型指针,位移量,起始点);
C.fseek(文件类型指针,起始点,位移量);
D.fseek(起始点,位移量,文件类型指针);
60.请读程序:#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p++;printf("%d\n”,a[2]);}上面程序的输出结果是()
A.6B.8C.4D.2
四、选择题(20题)61.
62.改变某个元素的文本颜色的CSS属性是()。
A.text—colorB.FgcoiorC.colorD.text—color
63.有以下程序
structst
{intx;
int*y;
}*p;
intdt[4]={1,2,3,4};
structstaa[4]={10,&dt[0],20,&dt[1],30,&dt[2],40,&dt[3]};
main()
{p=aa;
printf("%d\n",++p->x);
printf("%d\n",(++p)->x);
printf("%d\n",++(*p->y));
}
程序的运行结果是
64.有以下程序:
fun(intx)
{intP;
if(x==0||x==l)return(3);
p=x-fun(x-2);
returnp;
}
main
{printf("%d\n",fun(7));}
程序执行后的输出结果是()。A.A.7B.3C.2D.0
65.
66.有以下程序:
main
{inta[]=(2,4,6,8,10},y=0,x,*P;
p=&a[1];
for(x=1;x<3;x++)y+=p[x];
printf("%d\n,y");
}
程序运行后的输出结果是()。A.A.10B.11C.14D.15
67.有如下程序:main(){intx=23;do{printf(”%d”,x--);}while(!x);}该程序的执行结果是()。A.321B.23C.不输出任何内容D.陷入死循环
68.
69.有如下程序:
main()
{intx=1,a=0,b=0;
switch(x)
{
case0:b++;
casel:a++;
case2:a++;b++;
}
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
70.
71.
72.有以下程序:
程序执行后的输出结果是()。
A.45B.20C.25D.36
73.下列描述错误的是()。
A.继承分为多重继承和单继承
B.对象之间的通信靠传递消息来实现
C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征
D.类是具有共同属性、共同方法的对象的集合
74.
75.为了使模块尽可能独立,要求()。A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C.模块的内聚程度要尽量低,且各模块间的偶合程度要尽量弱
D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
76.对于循环队列,下列叙述中正确的是()。
A.循环队列中元素的个数是由队头指针和队尾指针共同决定的
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C.在循环队列中,队头指针一定大于队尾指针
D.在循环队列中,队头指针一定小于队尾指针
77.程序调试的目的是
A.发现程序中的错误B.改正程序中的错误C.验证程序的正确性D.改善软件的性能
78.有以下程序:
程序运行后的输出结果是()。
A.zB.0C.元素eh[5]的地址D.字符Y的地址
79.设j为Int型变量,则下面for循环语句的执行结果是()。
for(j=10;j>3;j--)
{if(j%3)j--;
--j;--j;
printf("%d",j);
}
A.63B.74C.62D.73
80.已知longi=32768;执行语句printf(“%d”,i);屏幕显示()。
A.-1B.-32768C.1D.32768
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是删除一维数组中所有相同的元素,使之只剩一个。数组中的元素已按由小到大的顺序排列,函数返回删除后数组中元素的个数。例如,若一维数组中的元素是2223445666677899101010删除后,数组中的元素应该是2345678910注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN80intfun(inta[],intn){}voidmain(){ inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20; printf(“Theoriginaldata:\n”); for(i=0;i<n;i++)<p=""></n;i++)<> printf(n%3d”,a[i]); n=fun(a,n); printf(“\n\nThedataafterdeleted:\n”); for(i=0;i<n;i++)<p=""></n;i++)<> printf(“%3d”,a[i]); printf(“\n\n”);}
参考答案
1.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。
2.DC语言的数值常量中不能夹带空格,所以A选项错误。C语言中的变量都必须先定义再使用,变量的定义通常放在函数体的前部,也可以放在函数外部或复合语句的开头,不能随便放置,所以B选项错误。在C语言中,运算符两侧的运算数据类型可以不一致,且结果与精度较高的数据类型保持一致,所以C选项错误。故本题答案为D选项。
3.C在main函数中调用了f函数使形参s指向数组a。执行“S[1]+=6”;语句,则“a[1]=8;”执行“*s=7;”语句,则“a[0]=7”;执行“s+=2;”语句,则s指向数组的第3个元素并返回s。调用后,函数返回值赋给指针P,则*P=3,因此输出的结果为7,8,3。故本题答案为C选项。
4.A函数的功能是对数组某一区域内的元素隔个求和;a[3]=4,所以从4开始进行隔个求和,a[7]=8,即对4到8的元素隔个求和,4+6=10。
5.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。
(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。
6.D选项A中,int是关键字,不能作为用户标识符;选项B中,两个“#”错误;选项C中两个“#”错误,另外DEFINE大写也是错误的。故本题答案为D选项。
7.D
8.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。
9.A解析:从关系中找出满足给定条件的那些元组称为选择,是从行的角度进行的运算,即水平方向抽取元组。从关系模式中挑选若干属性组成新的关系称为投影,是从列的角度进行的运算,相当于对关系进行垂直分解。所以,本题选择A。
10.D本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。
11.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。
12.B变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到浮点型变量Y中。
13.A
14.C解析:题目中所给函数的功能是;先用函数strcpy把参数串str2复制到参数串str1中去,然后用函数strcat把参数串str3连接到经过修改后的参数串str1后,因此选项C正确。
15.B
16.C
17.C解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系-故答案为C。
18.BC语言程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。故本题答案为B选项。
19.B
20.B
21.p->dataqp->data\r\nq解析:本题考查的是链表这一数据结构对结构体变量中的数据的引用。链表的特点是结构体变量中有两个域,一个是数据,一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。
22.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
23.*t*t解析:函数中首先让n=strlen(s),所以while循环的循环条件表达式中*(s+n)指向字符串s的结束标志'\\0'处,而该处应该等于字符串t的第1个字符,另外循环体中让s和t指向下一个字符,即s+n和t同时被移动到下一个位置,所以该处应该填*t,即t所指内容。当t指向字符串结束标志'\\0'的时候,整个循环条件表达式的值也为0(“假”)了,循环结束。正好满足将t所指字符串复制到s所指的字符串的尾部。
24.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或给abs赋1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或给a,b,s赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了—个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1,定义一个变量s存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到s中,所以说,在该题的空格处应该填写将a、b和s赋初值的语句,即为a=1;b=1;s=1:(说明:语句的顺序可任意)或a=b=s=1;(说明:变量的顺序可任意)或a=1,b=1,s=1(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。
25.2222解析:C语言里char类型占1个字节,int类型占2个字节,float类型占4个字节,double类型占8个字节,因此变量a在内存中所占字节数=1*6+4*2+1*8=6+8+8=22。
26.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。
27.x=11x=11解析:在对无符号数的右移是高位补0。
28.2525解析:#NAME?
29.关系关系
30.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。
31.00解析:函数getchar()是从键盘得用户输入的一个字符。用户输入的第1个字符a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。
32.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y-1时,*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。
33.k-1k\r\n-1解析:程序山使用了整型变量i、j、k,使用前应先声明,因此第1个空应填变量k。i和j作为下标的值,i被赋初值为0,j应为下标的最大值,下标的最大值为数组的长度减1。
34.1351\r\n3\r\n5解析:本题考查了for循环语句的使用,break语句用在本题中是结束for循环直接跳出循环体外。当i=1时,因为if语句条件不满足,所以直接执行printf('%d\\n',i++);输出1,同时i自加1;执行第二次for循环时,i=3;同样的if语句条件不满足,所以直接执行printf('%d\\n',i++);输出3,同时i自加1;执行第三次for循环时,i=5,if语句条件满足,所以执行printf('%d\\n',i),输出5,然后break语句跳出了for循环。
35.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。
36.s[j]=s[i];j++;s[j]=s[i];j++;解析:本题中相当于字符串s中存储着含有空格的字符,当发现空格的时候就用这个空格字符后面的字符前移覆盖这个空格字符,依次类推向后继续。因此,应填s[j]=s[i];j++;两条语句。
37.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
38.输出输出解析:测试用例曲测试输入数据(输入值集)和与之对应的预期输出结果(输出值集)两部分组成。
39.aua。a,ua。解析:test是结构体数组,每个元素均可看作是一个结构体变量,主函数将结构体数组元素test[0]中的name域下标为1的元素以字符形式输出,将结构体数组元素test[2]中的name域从地址name+3开始以字符串的形式输出。
40.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。
41.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。
42.C解析:在模块化设计中,要求将一个大程序按人们能理解的大小规模进行分解,使每个模块都能易于理解,各模块的功能尽量单一,各模块之间的联系尽量的少。因此,选项A中的说法是错误的。自顶向下、逐步细化的设计过程,主要包括两个方面:一是将一个复杂问题的解法分解和细化成由若干模块组成的层次结构;二是将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句或某种机器指令。即在自顶向下、逐步细化的设计过程中,是按照先全局后局部,先整体后细节、先抽象后具体的方法设计程序。因此.选项B中的说法也是错误的。\u3000在模块化程序设计中.每一个模块完成一个功能,相对独立,要求一个模块内部的控制结构也要符合结构化原则。因此,选项C中的说法是正确的。由于在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则,因此,在程序设计过程中,结构化程序设计方法与模块化程序设计方法是要同时采用的。因此,选项D中的说法是错误的。
43.B解析:“后进先出”表示最后被插入的元素最先能被删除。选项A中,队列是指允许在—端进行插入、而在另一端进行删除的线性表,在队列这种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除,队列又称为“先进先出”的线性表,它体现了“先来先服务”的原则:选项B中,栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素,栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。队列和栈都届于线性表,它们具有顺序存储的特点,所以才有“先进先出”和“后进先出”的数据组织方式。双向链表使用链式存储方式,二叉树也通常采用链式存储方式,它们的存储数据的空间可以是不连续的,各个数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。所以选项C和选项D错误。本题的正确答案为选项B。
44.D解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。
45.B解析:本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为'\ue008j<=i\ue009',而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。
46.A解析:本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和0进行异或运算不会产生任何变化。
47.D
48.D解析:本题考核的知识点是二维数组的定义和初始化。在定义中如果对所有元素赋初值,其第1维的长度可以省略,故选项B正确;二维数组初始化也可以只对每行或前若干个行的前若干个元素赋初值,故选项A和选项C正确;在二维数组定义时不能省略第二维的长度,故选项D错误。所以,4个选项中选项D符合题意。
49.A解析:本题考查的是排序算法。
for(i=0;i<3;i++)
for(j=2;j>i;j--)
if(x[j+1],x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;}
该段程序的作用是将数组元素x[0]~x[3]中的数由大到小排列,得到x[]{7,5,3,1,2,4,6,0}。
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
该段程序的作用是将数组元素x[4]~x[7]中的数由小到大排列,得到x[]={7,5,3,1,0,2,4,6}。因此输出结果为75310246。
50.A解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A)正确。
51.A解析:本题int型占2个字节,即16位,unsignedint所能表示的数据范围是0~(2(上标)16-1),即0~65535。
52.A
53.A解析:C语言中[]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的'*'结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。
54.C
\n在C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16位机中(也就是在标准c中),若int类型数据占2个字节,则float类型数据占4个字节,double类型数据占8个字节。
\n
55.D解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句退出循环。
56.C解析:执行while循环,使指针变量ps指向字符串“xyz”的字符串结束标志,然后执行for循环,先执行“ps--”,使ps指向字符“z”,故puts(ps)输出结果为“z”:再次执行“ps--”,使ps指向字符“y”,故puts(ps)输出结果为“yz”:再次执行“ps--”,使ps指向字符'x',故puts(ps)输出结果为“xyz”,退出循环。所以,C选项正确。
57.C解析:本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。
58.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
59.B解析:改变文件位置的指针函数fseek()的调用形式为:fseek(fp,offset,position);。fseek函数参数说明:“fp”是指向该文件的文件型指针;“offset'’为位移量,指从起始点position.到要确定的新位置的字节数。也就是以起点为基准,向前移动的字节数。ANSIC要求该参数为长整型量;“position”为起始点,指出以文件的什么位置为基准进行移动,position的值用整型常数表示,“0”表示文件的开头,“1”表示文件的当前位置,“2”表示文件的末尾。
60.A
61.B
62.C
63.A题目给出的结构体包含两个成员,一个为整型变量,一个为整型指针。定义了一个结构体数组aa,aa的大小为4,定义结构体指针p。题目要求输出“++p->x”,“(++p)->x”,“++(*p->y))”的值。“++p->x”是将p指向的结构体变量中的成员n的值加1,然后使用p的初始值为aa,“++p->x”为将aa[0].x的值加1,结果为11。“(++p)->x”是将p的指针加1,指向aa[1],再将aa[1].x输出,结果为20。“++(*p->y))是求出当前p所指向的结构体变量中y地址中的值,再加1,当前p所指的是aa[1],aa[1].y的值为&dt[1],该地址内数据的值为2,进行加1运算后得到3,输出结果为11,20,3。
64.C在函数fun(intx)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的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。
65.B
66.C由题目的语句P=&a[1]可知,P指向a数组中下标为1的元素“4”,又因为P为指针变量,所以P[x]与*(p+x)等价,因而在for循环语句中,第一次循环P[1]指向a数组中下标为2的元素“6”,第二次循环p[2]指向a数组中下标为3的元素“8”,所以y=6+8=14,因而选项C为正确答案。
67.B本题考查do-while语句,当X-23时,执行do后的语句,x--的表达式值为x=x-1,此时X的值为22,而!X为0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 古镇改造砖运输协议模板
- 服装服饰运输合同
- 农业抗旱物资运输合同
- 学校建筑石材配送协议
- 产业基地自动扶梯装修合同
- 文旅融合发展项目居间协议
- 丹阳六年级下数学试卷
- 桥梁液压爬模专项施工方案
- 铁路接触网拆除施工方案
- 北海中学期末数学试卷
- 北京市丰台区2024-2025学年九年级上学期期末语文试题(含答案)
- 二零二五年度能源行业员工劳动合同标准范本3篇
- 计划供货时间方案
- 2024年石柱土家族自治县中医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 西藏事业单位c类历年真题
- 2024人教新目标(Go for it)八年级英语下册【第1-10单元】全册 知识点总结
- 2025中国移动安徽分公司春季社会招聘高频重点提升(共500题)附带答案详解
- 七年级英语下学期开学考试(深圳专用)-2022-2023学年七年级英语下册单元重难点易错题精练(牛津深圳版)
- 杭州市房地产经纪服务合同
- 放射科护理常规
- 新时代中小学教师职业行为十项准则
评论
0/150
提交评论