版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年河南省漯河市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.数据字典(DD)所定义的对象都包含于()。
A.软件结构图B.方框图C.数据流图(DFD图)D.程序流程图
2.下列程序段的时间复杂度为()。A.O(3n)B.O(n)C.O(n2)D.O(log3n)
3.设有定义:charpE]={’1’,‘2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
4.以下选项中可作为C语言合法常量的是_____。A.-80B.-080C.-8e1.0D.-80.Oe
5.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
6.有以下程序:#include<stdio.h>voidfun(int*s){staticinti=0;do{s[J]=s[J]+s[j+I];}while(++j<2);}main(){intk.a[l0]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)pfintf("%d",a[k]);printf("\n");}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745
7.对线性表进行折半查找时,必须要求线性表()。
A.顺序方式存储B.链式方式存储C.以顺序方式存储,且结点按关键字有序排列D.以链式方式存储,且结点按关键字有序排列
8.有以下程序
#include<stdio.h>
voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/
{intt,i,j;
for(i=0;i<n-1;j++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序的运行结果是
A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
9.表达式“(int)((double)9/2)-9%2”的值是()。
A.0B.3C.4D.5
10.程序中已构成如下不带头节点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表节点,指针变量s总是作为指针指向链表的第1个节点。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;该程序段实现的功能是()。
A.删除尾节点B.使尾节点成为首节点C.删除首节点D.使首节点成为尾节点
11.下列程序的输出结果是()structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}
A.3B.4C.5D.6
12.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()
A.n*eB.n+eC.2nD.2e
13.对于下述说明,不能使变量p->b的值增1的表达式是______。structexm{inta;intb;floatc}*p;
A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++
14.按照“先进后出”原则组织数据的结构是()。
A.队列B.栈C.双向链表D.二叉树
15.下列描述中正确的是()。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
16.软件调试的目的是A.发现错误B.改正错误C.改善软件的性能D.验证软件的正确性
17.有以下程序:#include<stdio.h>intfun{staticintx=1;x+=1;returnX;}main{inti,S=1;for(i=1;i<=S;i++)s+=fun;printf("%d\n",s);}程序运行后的输出结果是()。A.11B.21C.6D.120
18.有定义语句:“int*p[4];”,以下选项中与此语句等价的是()。
A.intp[4];B.int**P;C.int*(p[4]);D.int(*p)[4];
19.能在O(1)时间内访问线性表的第i个元素的结构是()
A.顺序表B.单链表C.单向循环链表D.双向链表
20.在线索化树中,每个结点必须设置一个标志来说明它的左、右链指向的是树结构信息,还是线索化信息,若0标识树结构信息,1标识线索,对应叶结点的左右链域,应标识为()。
A.00B.01C.10D.11
二、2.填空题(20题)21.下面程序的输出是【】。
main()
{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;
printf("%d\n",z);
}
22.性结构中,队列的操作顺序是先进先出,而栈的操作顺序是______。
23.实体之间的联系可以归结为一对一联系、一对多(或多对多)的联系与多对多联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于______的联系。
24.下面的函数strcat(str1,str2)实现将字符串str2拼接到字符串str1后面的功能。请填空使之完整。
char*strcat(str1,str2)
char*str1,*str2;
{char*t=str1;
while(【】)str1++;
while(【】);
return(t);}
25.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。
26.阅读下面语句,则程序的执行结果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
27.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=【】;
}
returnm;
}
main()
{printf("m=%d\n",【】)};
28.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。
29.以下程序的输出结果是【】。
main()
{chars[]=“abcdef”;
s[3]='\0';
printf(“%s\n”,s);
}
30.软件设计模块化的目的是______。
31.以下程序的输出结果是【】。
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));}
32.有以下程序
voidf(inty,int*x)
{y=y+*x;*X=*X+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
执行后输出结果是______。
33.以下程序中函数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");
}
34.以下程序的运行结果是:【】。
#include<stdio.h>
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
35.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
36.已定义charch='$';inti=1,j;,执行j!=ch&&i++以后,i的值为______。
37.在面向对象方法中,类之间共享属性和操作的机制称为______。
38.以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b+*;break;
}
printf("%d%d\n",a,b);
}
39.结构化程序设计的3种基本结构分别是顺序、选择和______。
40.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
三、1.选择题(20题)41.以下叙述中错误的是()
A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B.在程序结束时,应当用fclose函数关闭已打开的文件
C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D.不可以用FILE定义指向二进制文件的文件指针
42.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
43.有以下函数fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是______。
A.计算a和b所指字符串的长度之差
B.将b所指字符串连接到a所指字符串中
C.将b所指字符串连接到a所指字符串后面
D.比较a和b所指字符串的大小
44.下面一组中都是C语言关键字的是______。
A.doubleIntfor
B.mainwhilegoto
C.volatilebreakstatic
D.mallocsizeofnew
45.在微机中,应用最普遍的字符编码是()
A.BCD码B.ASCII码C.汉字骗码D.补码
46.有以F程序#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是
A.741B.963C.852D.875421
47.下列叙述中正确的是()。
A.C程序由函数组成
B.C程序由主函数构成
C.C程序由函数和过程构成
D.在C程序中无论是整数还是实数,都可以正确无误的表示出来
48.以下程序的输出结果是()main(){inta=2,k;for(k=0;k<3;k++)printf("%4d",f1(a));}f1(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}
A.777B.71013C.7911D.789
49.一个数据元素第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
A.110B.108C.100D.120
50.下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}
A.121,0,4B.2,2,2C.0,2,4D.0,2,2
51.若变量已正确定义,要求通过scanf("%c%d%c%d",&c1,&a,&c2,&B)语句给变量a和b分别赋32和45,给变量c1和c2分别赋字符A和B;下列选项中数据从第1列开始输入,正确的输入形式是()。
A.A32<CR>B45<CR>B.A45<CR>B32<CR>C.A32B45<CR>D.A32B45<CR>
52.有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}
A.1B.2C.3D.4
53.若程序执行时的输入数据是"2473",则下述程序的输出结果是
#include<stdio.h>
voidmain()
{intcs;
while((cs=getchar())!=;'\n')
{switch(cs-'2')
{case0
case1:putchar(cs+4);
case2:putchar(cs+4);
break;
case3:putchar(cs+3);default:putchar(cs+2);}}}
A.668977B.668966C.6677877D.6688766
54.有以下程序:#include<stdio.h>intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;seanf("%d",&X);x=fun(x);pfinff("%d\n",x);}执行程序时,给变量x输入10,程序的输出结果是()。
A.55B.54C.65D.45
55.定义int*swap()指的是______。
A.一个返回整型值的函swap()
B.—个返回指向整型值指针的swap()
C.一个指向函数swap()的指针,函数返回一个整型值
D.以上说法均错
56.若要说明一个类型名STP,使得定义语句STP轧等价于char*s;,以下选项中正确的是()。
A.typedefSTPchar*s;
B.typedef*charSTP;
C.typedefSTP*char;
D.typedefchar*STP;
57.表达式'8'-'2'的值是()。
A.整数6B.字符6C.表达式不合法D.字符8
58.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()
59.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不确定C.voidD.float
60.在C语言中,函数返回值的类型最终取决于()。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
四、选择题(20题)61.
62.
有下列程序:
intfun(intn)
{if(n==1)}return1;
else
return(n+fun(n-1));
}
main
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x);
)
执行程序时,给变量x输入10,程序的输出结果是()。
A.55B.54C.65D.45
63.
64.
65.
66.
67.结构化程序设计所规定的三种基本控制结构是()。
A.for、while、switchB.输入、输出、处理C.顺序结构、选择结构、循环结构D.主程序、子程序、函数
68.以下程序段完全正确的是()。
69.执行下列程序中的输出语句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13
70.(15)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()
A.概要设计
B.详细设计
C.可行性分析
D.需求分析
71.
若输入“abcdef”“abdef”,下述程序的输出结果为()。
#include<stdio.h>
#include<string.h>
main
{intn;
chars1[20],s2[20],*p1,*p2;
scanf("%s",s1);
scanf("%S",s2);
p1=s1;
p2=s2;
n=strcmp(p1,p2);
printf("Vood\n",n);
}
A.-1B.0C."abcdef"D."abdef"
72.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是()。A.A.isupper(c)B.'A'<=c<='Z'
C.'A'<=c&&c<='Z'
D.c<=('z'-32)&&('a'-32)<=c
73.
74.(2)以下数据结构中不属于线性数据结构的是()
A.队列
B.线性表
C.二叉树
D.栈
75.算法的空间复杂度是指()。
A.算法在执行过程中所需要的计算机存储空间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
76.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1: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
77.下列链表中,其逻辑结构属于非线性结构的是()0、
A.双向链表
B.带链的栈
C.二叉链表
D.循环链表
78.
有以下程序
#include<stdio.h>
inta=1;
intf(intc)
{staticinta=2:
c=c+1:
return(a++)+C;
}
main
(inti,k=0;
for(i=0;i<2;i++){inta=3;k+=f(a);}
k+=a:
printf("%d\n",k);
}
程序运行结果是()。
A.14B.15C.16D.17
79.以下程序的输出结果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21
80.
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。
例如,输入opdye,则应输出deopy。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
intproc(charstr[])
{
charc;
unsignedi,j;
for(i=0;i<strlen(str)-1;i++)
for(j=i+1;j<strlen(str);j++)
if(str[i]>str[j])
{
c=str[j]:
//****found****
str[j]=str[i++];
str[i]=c;
}
}
voidmain
{
charstr[81];
system("CLS");
printf("\nPleaseenteracharacter
string:");
gets(str);
printf("\n\nBeforesorting:\n%s",str);
proc(str);
printf("\nAftersortingdecendingly:\n
%s",str);
}
六、程序设计题(1题)82.数组point中存放着m个人的成绩,请编写函数fun().它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。例如,当point数组中的数据为50,60,65,70.75,80.88,90,95时,函数返回的人数应该是5,high中的数据应为75,80,88,90,95。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。注意:部分源程序给出如下。试题程序:
参考答案
1.C数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
2.D
3.A根据题目中的定义可以知道sizeof(p),计算的是数组P中所有元素所占用的字节数,而不是ch”型数据所占字节数。
4.A解析:C语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表示法,是合法的。
5.B本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。
6.D本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。
7.C
8.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。
9.B先将int型数据9强制转换成double型,然后除以2,得到的结果与double型保持一致,即4.5;然后将4.5强制转换成int型数据4,再计算9%2的值为1;最后计算4-1的值为3。故本题答案为B选项。
10.D程序中,指针s指向了它的下一个节点。题目中说明了s总是指向链表的第1个节点。然后while循环找到链表的最后一个元素,最后一个元素指向了之前链表的头节点,之前头节点指向了空节点。所以本题实现的是使首节点成为尾节点。故本题答案为D选项。
11.D
12.D
13.D解析:p->b应作为一个整体看待,++p->b和p->b++都使变量b增1,++(p++)->b先使b增1,再使p后移,D中表达式的含义是使p+1所指结构体变量中的成员b的值增1。
14.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。
15.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。
16.B本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题;测试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软什中的错误。本题的正确答案是选项\u3000B。
17.B本题考查静态变量,C语言中静态变量的生存期是从程序的开始到结束。本题中静态变量x,随着每次进入循环不断增长5次,返回的值分别为2、3、4、5、6。所以S=1+2+3+4+5+6=21,选B。
18.D本题int*p[4]的作用是声明一个指针数组,每个元素都是int*型指针。
19.A
20.D
21.66解析:本题变量z的值应为最后一次给它赋的值,且最后一次for循环使prt指向a[2]
22.先进后出先进后出解析:队列和栈都是线性结构,但是不同之处在于队列的操作顺序是先进先出,而栈的操作顺序是先进后出。
23.一对多或1:N。一对多或1:N。
24.*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++”。
25.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。
26.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。
27.=-ffun(10)=-f\r\nfun(10)解析:本题要求调用fun()函数计算m的值,故在主函数中的空白处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值个数,故在主函数中的空白处应该填fun(10),在fun()函数中用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+…+[(-1)的i-1次方]*i,所以在fun()函数的空白处应该填使f改变符号的语句,故应填-f或其他等价形式。
28.队尾队尾解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
29.abcabc解析:字符串的结束标记'\\0',当输出一个存放在字符数组中的字符串时,只需输出到'\\0'为止,而不管其后有什么数据。本题给字符数组s的元素s[3]赋值为'\\0',故只能输出3个字符“abc”。
30.降低复杂性降低复杂性
31.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。
32.8484解析:本题考核的知识点是函数的调用、值传递和地址传递的区别。“值传递”指实参将值传递给形参后,实参与形参再无联系。也就是说对行参的改变将不影响实参;地址传递是指地址或数组名作为形参时的参数传递,这种情况下对形参的改变将对实参产生影响.函数f(Y*x)的作用是让y的值加上指针x所指向变量的值,让指针x所指向变量的值加上y的值。由于形参y是传值的,形参x是传地址的,故调用该函数后,作为实参的y的值将不改变,而实参x的值将改变,故最后输出的y的值为4,而x的值为8。
33.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。
34.efghefgh解析:函数*ss的作用是使字符串指针往后移strlen(s)/2个位置。形参指针a指向字符串'abcdefeh',调用函数*ss后,指针指向e,所以输出为efgh。
35.22
36.11解析:在执行逻辑表达式“j=!ch&&i++”时,首先判断j=!ch的值,因为“ch='$'”不为0,所以“j=!ch=0”,编译系统便不再计算表达式“i++”的值,i的值不变,仍为1。
37.继承继承
38.2121解析:本题考查switch语句。首先x=1,执行switch(y),因为y=0,所以执行case0:a++;break;此时a=1执行case2:a++;b++;这时a=2,b=1;最后输出结果是21。
39.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。
40.参照完整性参照完整性
41.D解析:顺序文件只能从头读写,二进制文件可以随机读写,选项A正确:文件在使用后应关闭,当程序结束时,应当把打开的文件关闭,选项B正确:用fread()函数可以一次性地读取同类型的很多数据,选项C正确;在C语言中指向各种文件的文件指针都是通过FILE来定义的,故选项D是错误的。所以4个选项中选D
42.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。
43.D解析:本题的函数fun的最后一个语句是“return(*a-*b);”,也就是返回指针a所指单元的值与指针b所指单元的值的差。显然这不可能是计算a和b所指字符串的长度之差,因此选项A的说法是错误的。由于函数中并没有出现。a=*b的赋值操作,所以选项B的连接字符串的说法也是错误的。同理,由于没有*a现*a=*b的赋值操作,所以选项C的复制字符串的说法也是错误的。排除了三个选项后,就可以断定正确选项是D。
44.C解析:C语言中的关键字有32个关键字(参见C语言教程),本题中只有C符合题意。
45.B
46.C解析:本题考查变量的自加“++”和自减“--”问题。当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式--y的值,y的自减要先于输出语句执行,故输出结果为852。
47.A解析:本题涉及C语言最基本的两个知识点:①C程序是由函数构成的,有且仅有一个主函数,也可以有其他的函数;②整数在允许的范围内可以准确无误的表示出来,但计算机的存储能力有限,不能表示无限精度的实数。
48.D解析:程序中使用一个for循环,3次输出函数f1(2)的返回值。f1()函数中存在一个静态局部变量c,第1次调用f1()函数返回a+b+c=2+1+4=7,c变为4,第2次调用返回2+1+5=8,c变为5,第3次返回2+1+6=9。所以正确答案是D。
49.B解析:数据元素的存储位置均取决于第一个数据元素的存储位置,即:
LOC(aj)=LOC(a)1+(i-1)C
↑↑
基地址一个数据元素所占的字节数
所以第5个元素的地址=100+2×(5-1)=108。
50.B解析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;constb=12;,其中数据类型可以缺省,默认为整型;enumc{a1,a2};定义了—个枚举类型enumc,a1,a2为枚举元素,在C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。
51.D解析:本题考查scanf函数的基本格式。当需要从键盘上输入数据时,输入的数值之间需要有间隔符(空格符号、制表符号、回车符号),间隔符号的使用数量不限。直到按下回车键,scanf函数才会接受从键盘输入的数据。
52.B解析:本题考查swish语句。第一个switch语句,因为a=6,a%2=0,所以执行case0,将m加1,遇到break语句跳出switch语句,结束循环。
53.A解析:本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。
54.A解析:函数调用将实参x=10传给形参n,语句n=1不成立,执行else语句,递归调用fun函数。fun函数共被调用8次,即fun(9),fun(8),…,fun(2),由此可得n=10+9+…+1=55,所以x=55。
55.B解析:一个函数可以带回一个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。
56.D解析:指针类型的自定义的形式如下:typedef类型说明符*用户类型名。不难看出只有选项D是正确的定义形式。所以,D选项为所选。
57.A解析:在C语言中,虽然字符都是变为其对应的ASCII码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符8和字符2的ASCII码值相差仍是6。
58.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。
59.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。
60.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。
61.A
62.A
\n本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为
\nfun(10)=10…fun(9)=104-94-fun(8)=104-9+84-fun(7)
\n=10+9++8++7++fun(6)=10+9++
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学生实践教学合同
- 2025年度新能源电池材料采购与技术转移合同3篇
- 2025年度车辆保养与节能改造服务合同范本4篇
- 二零二四年度长途汽车租赁及保险合同987363篇
- 2025年仓库租赁及设备管理合同
- 二零二四年南通房产交易平台商品房买卖合同3篇
- 二零二四年度医疗器械研发合同
- 2025年度传统医学诊疗技术传承合同范本3篇
- 蒙医女性齐素综合症的文献研究
- 二零二五年度原创剧本著作权转让及影视制作合同
- 班级建设方案中等职业学校班主任能力大赛
- 纤维增强复合材料 单向增强材料Ⅰ型-Ⅱ 型混合层间断裂韧性的测定 编制说明
- 习近平法治思想概论教学课件绪论
- 宠物会展策划设计方案
- 孤残儿童护理员(四级)试题
- 梁湘润《子平基础概要》简体版
- 医院急诊医学小讲课课件:急诊呼吸衰竭的处理
- 肠梗阻导管在临床中的使用及护理课件
- 调料厂工作管理制度
- 小学英语单词汇总大全打印
- 卫生健康系统安全生产隐患全面排查
评论
0/150
提交评论