




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。
A.1B.0C.2D.不知道a的值,不能确定
2.以下选项中,能用作数据常量的是______。A.o115B.0118C.1.5e1.5D.115L
3.下列哪一种图的邻接矩阵是对称矩阵()。
A.有向图B.无向图C.AOV网D.AOE网
4.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序运行后的输出结果是
A.9B.11C.19D.21
5.有以下程序:
程序执行后的输出结果是()。
A.1B.2C.3D.4
6.向一个栈顶指针为H的链栈中插入一个s所指向的结点时,需执行()。
A.H->link=s
B.s->link=H->link;H->link=s;
C.s->link=H;H=s;
D.s->link=H;H=H->link;
7.以下程序段中,输出信息不能正确反映变量大小关系的是()。
A.if(x>y)printf(“x>y”);if(x<y)printf(“x<y”);elseprintf(“x=y”);
B.if(x>=y)if(x>y)printf(“x>y”);elseprintf(“x=y”);elseprintf(“x<y”);
C.if(x>y)printf(“x>y”);if(y>x)printf(“x<y”);if(x==y)printf(“x=y”);
D.if(x>y)printf(“x>y”);elseif(y<x)printf(“x<y”);elseprintf(“x=y”);
8.第
17
题
若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
9.以下叙述中错误的是()。
A.通过指针变量存取某个变量值的方式称为“直接存取”方式
B.在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值
C.将一个指针变量中的值赋给另一个指针变量,则这两个指针变量指向同一地址
D.C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型
10.有以下程序A.6B.3C.8D.12
11.
12.if语句基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。
A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值
13.以下叙述中正确的是()。
A.文件指针是一种特殊的指针类型变量
B.文件指针的值等于文件当前读写位置,以字节为单位
C.文件指针的值等于文件在计算机硬盘中的存储位置
D.调用fscanf函数只能向文本文件中写入任意字符
14.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(fnnc(x,y),z);printf("%d\n",r);}该程序的输出结果是______。
A.12B.13C.14D.15
15.如果以链表作为栈的存储结构,则出栈操作时()。
A.必须判别栈是否满B.必须判别栈是否为空C.必须判别栈元素类型D.可不做任何判断
16.下列程序的输出结果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8
17.以下说法错误的是()。
A.散列法存储的思想是由关键字值决定数据的存储地址
B.散列表的结点中只包含数据元素自身的信息,不包含指针
C.负载因子是散列表的一个重要参数,它反映了散列表的饱满程度
D.散列表的查找效率主要取决于散列表构造时选取的散列函数和处理冲突的方法
18.有以下程序函数fun只对下标为偶数的元素进行操作.:
程序运行后的输出结果是()。A.A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
19.有以下程序:
程序的运行结果是()。
A.y=0B.y=1C.y=2D.y=3
20.若有下列说明语句int(*p)();则标识符p代表的是()
A.一个用于指向函数的指针变量,函数返回值的类型为int型
B.一个带回值类型为整型的函数名
C.一个用于指向整型数据的指针变量
D.一个带回值类型为指针类型的函数名
二、2.填空题(20题)21.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。(注:程序采用了冒泡排序算法)
#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(【】);
}
22.一棵二叉树第6层(根结点为第一层)的结点最多为______个。
23.下列程序段的运行结果是______。
charstr口="ABCD",*p=str;
printf("%d\n",*(p+3));
24.栈的3种基本运算是:入栈、退栈和______。
25.以下程序运行后的输出结果是【】。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
printf("%d\n",x);
}
26.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
27.设有如下程序段:
inti=0,sum=1;
do
{sum+=i++;}
while(i<6);
printf("%d\n",sum);
上述程序段的输出结果是【】。
28.以下程序的输出结果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
29.以下条件表达式可计算:1+|a|的值,请填空。a>=0?【】:【】
30.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行后,i,j,m,n的值分别是_______。
31.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。可行性研究阶段采用的是【】。
32.以下程序运行后的输出结果是【】。
#defineS(x)4*x*x+1
main()
{inti=6,j=8;
printf("%d\n",S(i+j));
}
33.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。
34.以下程序的运行结果是【】。
#include<stdio.h>
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
35.关系模型的数据操作即是建立在关系上的数据操作,一般有【】、增加、删除和修改四种操作。
36.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。
charch='B';
printf("%c%d\n",ch,ch);
37.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。
38.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。
#include<stdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node;
Nodefun(chars)/*建立链表*/
{……}
voiddisp(Node*h)
{Node*p;
p=h->next;
while(【】)
{printf("%s\n",P->sub);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);printf("\n");
}
39.下列程序的输出结果是【】。
intt(intx,inty,ntcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
40.软件定义时期主要包括______和需求分析两个阶段。
三、1.选择题(20题)41.请读程序:#include<stdio.h>#include<string.j>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的输出结果是______。
A.正数B.负数C.零D.不确定的值
42.有以下程序#include<stdio.h>main(){FILE*fP;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是。
A.12B.14C.1234D.123456
43.下列程序的输出结果是______。main(){floatx=3.6;inti;i=(int)x;printf("x=%f,i=%d",x,i);}
A.x=3.600000,i=4B.x=3i=3C.x=3.600000,i=3D.x=3i=3.600000
44.以下程序的运行结果是()。#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=8(p+5);printf("%d%d\n",*p,*q);}
A.运行后报错B.66C.611D.55
45.下面程序段的运行结果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
46.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。
A.chars[10]="abcdefg";
B.chart[]="abcdefg",*s=t;
C.chars[10];s="abcdefg";
D.chars[10];strcpy(s,"abcdefg");
47.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;该程序段实现的功能是()。
A.首结点成为尾结点B.尾结点成为首结点C.删除首结点D.删除尾结点
48.在位运算中,操作数每左移两位,其结果相当于()。
A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4
49.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
50.n个顶点的连通图中边的条数至少为______。A.A.0B.1C.n-1D.n
51.对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为()
A.并运算B.交运算C.差运算D.积运算
52.若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]
53.有以下程序:#include<stdio.h>charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,b),fun(b,c)));}程序的执行结果是()。
A.函数调用出错B.8C.9D.7
54.下列描述说明正确的是()
A.定义结构体时,它的每个成员的数据类型可以不同
B.不同结构体的成员名不能相同
C.结构体定义时,其成员的数据类型不能是结构体本身
D.结构体定义时各成员项之间可用分号也可用逗号隔开
55.以下程序的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d\n",fun(a+fun(d)));}
A.699B.669C.61515D.6615
56.下面四个选项中,均是不合法的用户标识符的选项是()。
A.AP_0doB.floatla0_AC.b-agotointD._123tempint
57.以下程序执行后sum的值是()。
A.15
B.14
C.不确定
D.0main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}
58.有以下程序:voidswap(char*x,char*y){cbart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。
A.123,abcB.abc,123C.1bc,a23D.321,cba
59.下面概念中,不属于面向对象方法的是()。A.对象B.继承C.类D.过程调用
60.设变量a、b、c、d和y都己正确定义并赋值。若有下列if语句
if(a<b)
if(c==d)y=0;
elsey=1;
该语句所表示的含义是()。
A.
B.
C.
D.
四、选择题(20题)61.
有以下程序
#include<stdi0.h>
voidfun(intn,int*p)
(intf1,f2;
if(n==1||n==2)*p=1;
else
{fun(n-1,&f1);fun(n-2,&f2);
*p=f1+f2;
}
}
main
{ints;
fun(3,&s);printf("%d",s);
}
程序的运行结果是()。
A.2B.3C.4D.5
62.能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是()。A.A.(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)B.(x>=1)
C.((x>=1)&&(x<=10))||((x>=100)&&(x<=110))
D.(x>=1)||(x<=10)&&(x>=100)||(x<=110)
63.有以下程序:
程序运行后的输出结果是()。
A.33B.197C.143D.28
64.有如下嵌套的语句
65.下列函数的功能是()。
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’\0
66.以下叙述中错误的是()。
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含文件stdi0.h时,可以给指针变量赋NULL
67.有以下程序:
运行时,若输入123450<回车>,则输出结果是()。
A.6566456
B.66656
C.66666
D.6666656
68.以下不合法的字符常量是()。
69.
70.
有以下程序:
voidswap(char*x,char*y)
{chart;
t=*x;*x=*y;*y=t;
}
main
{char*s1="abe",*s2="123":
swap(s1,s2);
printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是()。
A.123,abeB.abc.123C.1bc,a23D.321,cba
71.有以下程序:
程序的运行结果是()。
A.0987654321
B.4321098765
C.5678901234
D.0987651234
72.有以下程序
#include<stdio.h>
voidfun(ints[])
{staticintj=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main()
{
intk,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)fun(a);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
程序的运行结果是
A.34756B.23445
C.35745D.12345
73.有以下程序:
程序执行后的输出结果是()。
A.1B.2C.3D.4
74.以下叙述中错误的是()。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界的出错信息”
D)可以通过赋初值的方式确定数组元素的个数
75.
76.
77.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A.scanfB.getcharC.getsD.getc
78.若有以下程序段:
输出结果是()。
A.2B.4C.8D.16
79.
80.
下列程序的输出结果是()。
intfl(intx,inty){returnx>y?x:y;)
intf2(intx,inty){returnx>y?y:x;}
main
{inta=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);}
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若proc()返回1,则输出″YES″;若proc()返回0,则输出″NO″!
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main)函数,不得增行或删行,也不得,t更改程序的结构。
试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fmi()的功能是将a、b中的两个正整数合并成一个新的整数存放在c中。合并的方式是将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,a=45,b=12,调用该函数后,c=5241。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
参考答案
1.A由于a==l和a!=1两者互斥,即总有一个为真,因此二者的或也必定为真。
2.D在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—个字母l(L的小写)或L;实型常量必须用带小数点的数表示,例如3.14159、-2.71828、0.0等;选项A中字母o不符合要求,选顶B中超出八进制的范围,选项C中e后面的不为整数,因此选顶D是正确的。
3.B
4.A解析:本题考核的知识点是一维数组的定义,初始化和数组中元素的引用。函数f()的作用是形参a为偶数的时候返回0,主函数中首先定义了一个长度为8的一维数组,然后给它赋初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他没有赋值的数组元素将自动赋值为0。for循环中,当s[1]不为偶数的时,将s[i]相加,即当i=3时,s[i]=2为偶数,退出循环,此时d的值为d=s101+s[1]+s[2]=1+3+5=9,因此最后输出的d的值为9。所以,4个选项中选项A符合题意。
5.C该程序中int8pl=&a,+p2=&b,4P=&c;指定义三个指针变量,并赋值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;该条语句是给P所指的存储单元c赋值,就是pl所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a+b,等价于c=1·3=3;因此C选项正确。‘
6.C
7.A选项A中,若条件“x>y”为真,输出“x>y”;若条件“x<y”为真,输出“x<y”;若条件“x>=y”为真,输出“x=y”。选项A错误,其他选项都正确。故本题答案为A选项。
8.B解析:条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达式3其求解顺序是:先求解表达式1,若为非O(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意++、--的用法。
9.A通过指针变量存取某个变量值的方式称为“间接存取”方式,选项A错误;头文件stdio.h中定义了NULL,在程序的开头包含stdio.h后,可以给指针变量赋NULL值,表示一个空指针,选项B正确;将一个指针变量中的值赋给另一个指针变量,这两个指针变量指向同一地址,选项C正确;C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型,选项D正确。故本题答案为A选项。
10.A[解析]本题中第一次调用为fum(8.fn(5.6)),因为fun(5.6)返回值为5.所以第二次调用为fn(8.5)=6.所以选择A)。
11.B
12.D考查if循环语句。if(表达式),其中表达式是一个条件,条件中可以是任意的合法的数值。
13.A文件指针实际上是指向一个结构体类型的指针。这个结构体中包含缓冲区的地址、在缓冲区中当前存取字符的位置、对文件是“读”还是“写”、是否出错、是否已经遇到文件结束标识等信息。选项A正确,选项B、C错误;fscanf函数只能从文本文件中输入数据到内存,选项D错误。故本题答案为A选项。
14.D
15.B
16.B本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行b=2+1=3,最终t=2+3=5。
17.B
18.A由函数fun(int*a,intn)中语句if(a[j]>a[k])k=j;可知当前k是记录数组中较大数据值所在位置的下标变量,所以该函数的作用是对数组a中的下标为偶数位置的数据进行从大到小的排序,即对a[0],a[2],a[4],a[6]中的数据1,3,5,7进行从大到小的排序,其他位置的数据不变,所以答案为A)。
19.D在程序中指针变量P初始指向a[3],执行P减1后,P指向a[2],语句y=*P的作用是把a[2]的值赋给变量y,所以输出为y=3。
20.A
21.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。
22.3232解析:二叉树第k层上,最多有2k-1(k≥1)个结点。第6层的结点数最多是26-1=32。注意区别“二叉树的结点最多数”和“某一层的结点最多数”。前者的计算是深度为m的二叉树最多有2m-1个结点。
23.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。
24.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。
25.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。
26.*(p+5)或p[5]*(p+5)或p[5]
27.16
28.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。
29.1+a1-a1+a,1-a解析:考查条件运算符的使用。因为题目中求的是1+|a|的值,即1和a的绝对值之和,所以根据数学中求绝对值的规则;当a>=0时,绝对值取本身,当a<0时,绝对值取相反数,再结合条件运算符的计算规则,可得到本题的答案为a>=0。
30.611610。6,11,6,10。解析:本题考查自加的前置和后置的区别。
31.结构化分析方法结构化分析方法解析:结构化分析方法主要用于系统分析阶段;结构化设计方法主要用于系统设计阶段;结构化程序设计方法主要用于编码阶段。可行性研究属于系统分析阶段,因此,可行性研究阶段采用的是结构化分析方法。
32.8181解析:将S(i+j)展开来有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。
33.概念概念
34.99解析:本题考查宏定义与三目运算符的综合应用。宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则b+1的值为整个表达式的值(应注意后面的加1)。
35.查询查询解析:关系模型的数据操作即是建立在关系上的数据操作,一般有查询、增加、删除和修改四种操作。数据查询是指用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。数据增加仅对一个关系而言,在指定关系中插入一个或多个元组。数据修改是在一个关系中修改指定的元组和属性。
36.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。
37.4545解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过遍的从前往后扫描和遍的从后往前扫描,需要比较次数为。
38.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。
39.5656解析:本题中a,b,c,d是实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是56。
40.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。
41.A解析:函数strcmp的功能是比较字符串s1和s2,如果s1>s2,则返回个正数:如果s1<s2,则返回负数,否则返回零。由于本题中小写字母b的ASCII码值大于大写字母B,故s1>s2,所以函数的值为正数。
42.D解析:将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。
43.C
44.A解析:本题的考查点是通过指针引用数组元素。程序中没有给q分配存储单元,只是给它赋了一个NULL,所以程序的运行结果是:611NULLpointerassignment,也就是运行后报错。
45.C解析:本段程序的作用是输出字符串“lanuage”中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放‘\\0’。
46.C解析:选项A中定义了一个字符型数组并赋初值,故选项A正确;选项B定义了一个字符型数组t并初始化,然后定义了一个指针变量s并让它指向t,故选项B正确;选项C先定义?一个长度为10的字符型数组,然后在给它赋值,这时应该分别给数组中的每个元素赋值,故选项C不正确;选项D中先定义了一个长度为10的字符型数组s,然后通过字符串拷贝函数将字符串“abedefs”赋值给它,选项D正确。所以,4个选项中选项C符合题意。
47.A解析:因为刚开始时s指向a结点(链表头),所以语句q=s;使q也指向a结点。s=s->next;语句使s指向a的下一个结点b。p=s;语句使p也指向b结点。接下来是一个while循环,循环条件为p->next,即当p没有指向链表尾时执行循环体p=p->next;让p指向下一个结点,所以当循环结束时,p指向链表尾(c结点)。执行到此时,s、p、q分别指向的结点是b、c、a。然后执行p->next=q;,使c结点的后续指针指向了a结点。最后执行q->next=NULL;,使a结点的后续指针为NULL。由此可见,该程序段实现了将a结点移动到c结点之后,即首结点成为尾结点。故应该选择A。
48.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。
49.B
50.C解析:在无向图(边没有方向性的图)中,若从顶点vi到vj有路径,则称vi和vj是连通的,若该图中仟意两个顶点都是连通的,则称该图为连通图。
51.AA)【解析】关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的所有元组。
52.D解析:a是一个2行3列的二维数组,行下标和列下标都是从0开始的,数组中的元素为a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2],行下标最大值为1,列下标最大值为2,因此选项A、B、C都是错误的引用。计算选项D中数组元素的下标后得a[0][0],为正确的引用。
53.D解析:函数fun的作用是返回较小的字符。在main函数中,fun(a,b)及fun(b,c)的值作为fun函数新的参数,返回a,b,c的较小值,结果为7。
54.A
55.C解析:本题要注意静态变量d。第1次执行fun(d),即fun(1),在函数fun里对静态变量赋初值5,得到d=d+p=5+1=6并输出,返回6;第2次执行fun(a+fun(d)),即fun(3+6)=fun(9),在函数fun中直接执行d=d+p=6+9=15并输出,然后返回15再一次输出。
56.C解析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。
57.C解析:C语言中,如果对定义的变量没有赋初值,那么在后面使用时,变量的值是不确定的。所以,本程序中,没有对sum赋初值,它的值不确定。在执行了for循环语句后,sum的值也不确定的,所以,4个选项中选项C符合题意。
58.C解析:函数swap()实现的功能为交换字符指针x和y首位的数值。
59.D[答案]D
[考点]软件工程基础
[评析]
面向对象=对象+类+继承+通过消息的通信
对象:一组属性及其上的操作的封装体
类:一组有相同属性和操作的对象的集合
继承:一个类为另一个类上的扩充的方式,子类继承父类,主要目的是代码复用
消息:对象间通信的手段
D是结构化程序设计或过程式(函数式)语言中的,一般的面向对象程序设计语言兼容这种方式,但不是其特征,故最佳选项为D
60.C解析:语句if(c==D)y=0;elsey=1;是if(a<B)语句的一个子句。所以整个C语句表达式的意思是:在、a<b的情况下,如果c=d则y=0,否则y==1。所以,选项C)为正确答案。
61.A
\n在函数fun中对参数n的值进行判断,如果其值等于1或2,则*p=1,否则,函数fun进行递归调用fun(n.1,&f1);fun(13.2,&f2);*p=n+f2;在主函数调用fun函数时传递给参数n的值为3,fun函数又递归用了两次自身fun(2,&n);fun(1,&f1);所以n和f2的值都为1,通过指针P的引用,变量S的值为2。
\n
62.C本题考查逻辑与(&&)和逻辑或(||)运算符的使用。x值在[1,10]之间,C语言中可以写成“(x>=1)&&(x<=10)”;x值在[100,110]之间,C语言表达式应写成“(x>=100)&&(x<=110)”;[1,10]和[100,110]满足任意条件就可以,所以是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符连接起来即可,所以最后的表达式:((x>=1)&&(x<=10))||((x>=100)&&(x<=110))。
63.C本题考查带参数的宏定义,s为带参数的宏定义,运行S(k+j)为4*(k+j)*k+j+1=143,选项C正确。
64.Aif\r\nelse语句和“?:”可以互换,?前语句相当于i垢括号内容,?后语句相当于i垢的执行语句,冒号后语句相当于else后语句,综合以上可以看出A)符合题意。
65.A表达式*b=*a是将a所指的字符赋给b所指的空间,然后,指针a和b依次后移,直到到达指针a所指字符串的结尾。
66.C指针变量的值只能是存储单元地址,而不能是一个整数,故选项C错误。
67.Aswitch语句执行完一个case后面的语句后,流程控制转移到下一个case语句继续执行,遇到break会跳出本次循环。本题中输入l时会输出65,输入2时会输出6,输入3时会输出64,输入4时会输出5,输入5时会输出6,在输入0时不满足循环条件,程序执行结束。
68.A本题考查的知识点是字符常量中的转义字符。转义字符是以一个“\”开头的字符序列,它只代表一个字符。在选项A)中,“\
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国建盏行业市场全景分析及前景机遇研判报告
- 2025-2030年中国型材行业市场全景调研及投资价值评估咨询报告
- 建筑节能报告用指标的确定
- 税务师老师讲解课件
- 2025年中国智能防火墙行业市场发展前景及发展趋势与投资战略研究报告
- 2022-2027年中国带鱼捕捞行业市场调查研究及投资战略研究报告
- 2025年 重庆四联特种装备材料有限公司招聘考试笔试试题附答案
- 中国机动车综合测试仪行业市场调研及投资战略研究报告
- 2025年 内蒙古呼和浩特中航集团信息管理部招聘考试笔试试题附答案
- 2025年 菏泽市省属公费师范毕业生专项招聘考试笔试试题附答案
- GB/T 9799-1997金属覆盖层钢铁上的锌电镀层
- GB/T 19139-2012油井水泥试验方法
- GB/T 18314-2001全球定位系统(GPS)测量规范
- 工贸行业重点可燃性粉尘目录(2022版)
- 铁道概论试题及答案重要
- 空间几何中的平行与垂直 新高考 数学 一轮复习专项提升 精讲精练
- 近代史期末复习试题
- 教学设计 完整版:Summer holiday plans
- 2022年武汉市法院书记员招聘考试题库及答案解析
- DB34-T 4010-2021 水利工程外观质量评定规程-高清现行
- 幼儿园大班社会:《京剧》 课件
评论
0/150
提交评论