版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年山西省朔州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中错误的是______。A.C程序中的#include和#define行均不是C语句
B.除逗号运算符外,赋值运算符的优先级最低
C.C程序中,j++;是赋值语句
D.C程序中,+、-、*、/、%号是算术运算符,司用于整型和实型数的运算
2.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。
A.概要设计B.详细设计C.可行性分析D.需求分析
3.有如下嵌套的if语句:if(a<b)if(a<c)k=a;elsek=C:elseif(b<c)k=b;elsek=C;以下选项中与上述if语句等价的语句是()。A.k=(a<b)?a:b;k=(b<c)?b:C;
B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D.k=(a<b)?a:b;k=(a<c)?a:c;
4.
5.下列选项中,当x为大于1的奇数时,值为0的表达式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
6.
7.在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
8.
9.
10.有n个结点的二叉树链表共有__________个空指针域。
A.n-1B.nC.n+1D.n+2
11.下列叙述中正确的是()。
A.算法的执行效率与数据存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上3种描述都不对
12.有以下程序
main()
{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是A.A.45B.20C.25D.36
13.以下叙述中错误的是()。
A.向量属于线性结构B.二叉链表是二叉树的存储结构C.栈和队列是线性表D.循环链表是循环队列的链式存储结构
14.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。
A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表
15.下列语句中,显示没有下画线的超链接的语句是()。
A.a{text—decoration:none}
B.a{text—decoration:nounderline}
C.a{underline:none}
D.a{decoration:nounderline}
16.指针可以用来表示数组元素,若已知语句:inta[3][7];则下列表示中正确的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
17.设有以下说明语句
structex
{intx;floaty;charz;}example;
则下面的叙述中不正确的是
A.struct结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.structex是结构体类型名
18.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一个文件指针,指向待读取的文件
B.一个整型变量,代表待读取的数据的字节数
C.一个内存块的首地址,代表读人数据存放的地址
D.一个内存块的字节数
19.数据在计算机存储器内表示时,如果元素在存储器中的相对位置能反映数据元素之间的逻辑关系,则称这种存储结构为()。
A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构
20.有以下程序:
程序运行后的输出结果是()。A.34B.55C.10D.18
二、2.填空题(20题)21.下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。
add(intx,inty,【】z)
{【】=x+y;}
22.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。
23.以下程序运行后的输出结果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
24.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
fov(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
25.下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
printf("%d",sum);
}
26.下列程序输出的结果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
27.如果一个工人可管理多个设备,而一个设备只被一个工人管理,则卖体“工人”与实体“设备”之间存在【】关系。
28.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
29.以下程序的输出结果是【】。
#include<stdio.h>
main()
{inti;
for(i-'a';i<'f';i++,i++)printf("%c",i-'a'+'A');
printf("\n");
}
30.以下函数用来求出数组的最大元素在数组中的下标并存放在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]);}
31.若有以下程序:
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(3,4),f(3,5));
printf("%d\n",d);
}
执行后输出结果是【】。
32.以下程序的运行结果是()。#defineS(x)x*xmain(){intk=1;while(k<=4){printf("%d,",S(k));k++;}
33.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。
34.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。
35.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
36.以下程序运行后的输出结果是______。
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
37.以下程序运行后的输出结果是______。
inta=5;
fun(intB)
{staticinta=10;
a+=b++;
printf("%d",A);
}
main()
{intc=20;
fun(C),
a+=C++;
printf("%d\n",A);
}
38.解题方案的准确而完整的描述称为______。
39.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
40.软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和()的集合。
三、1.选择题(20题)41.以下程序的运行结果是#include"stdio.h"main(){structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}
A.6B.8C.10D.12
42.设有定义intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
43.下列程序的输出结果是()。
#include<stdio.h>
intb=2;
intfunc(int*A)
{b+=*a;retumb;}
main()
{inta=1,t=2;
t+=func(&A);
printf("%d\n",t);
}
A.4B.5C.6D.8
44.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
45.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
46.下列程序执行后的输出结果是()。#include<stdio.h>voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}
A.6B.7C.8D.9
47.下面的程序段运行后,输出结果是
inti,j,x=0;
staticinta[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
A.9B.不确定值C.0D.18
48.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
49.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。
A.2B.4C.6D.8
50.下列描述中正确的是()。
A.在C语言程序中预处理是指完成宏替换和文件包含指定的文件的调用
B.预处理指令只能位于C源程序文件的首部
C.预处理命令可以放在程序中的任何位置
D.预处理命令结尾需要加分号
51.对于下述程序,在方式串分别采用"wt"和"wb"运行时,两次生成的文件TEST的长度分别是
#include<stdio.h>
voidmain()
{FILE*fp=fopen("TEST",);
fputc(′A′,fp);fputc(′\n′,fp);
fputc(′B′,fp);fputc(′\n′,fp);
fputc(′C′,fp);
fclose(fp);}
A.7字节、7字节B.7字节、5字节C.5字节、7字节D.5字节、5字节
52.在C语言中,while和do…while循环的主要区别是()。
A.do…while的循环体不能是复合语句
B.do…while允许从循环体外转到循环体内
C.while的循环体至少被执行一次
D.do…while的循环体至少被执行一次
53.以下程序的运行结果是______。main(){chart=02;printf("%d\n",t=++t>>2);}
A.0B.1C.2D.3
54.若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);则输出结果是()。
A.20,10B.20,20C.10,20D.10,10
55.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A.大写字母B.连接符C.数字字符D.下划线
56.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=8,v2=8,v3=8,v4=8
57.视图设计一般有3种设计次序,下列不属于视图设计的是______。
A.自顶向下B.由外向内C.由内向外D.自底向上
58.已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。
A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述三种说法都不对
59.已知i、j、k为iht型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。
A.scanf("%d%d%d",&i,&j,&k);
B.scanf("%d,%d,&d",&i,&i,&k);
C.scanf("%2d%2d%2d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
60.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是
A.x&&y
B.x<=y
C.x||++y&&y-z
D.!(x<y&&!z||1)
四、选择题(20题)61.
62.
63.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表
64.有以下程序:执行时输入:0<;回车>;后,则输出结果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.
65.有以下程序:
fun(inta[],intm,intn)
{inti;
for(i=m;i<n;i++)
a[i+1]=a[i]+3;
returna[i+1];
}
voidmain()
{
inti,a[6]={2,4,6,8,10,12};
fun(a,2,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
程序运行后输出的结果是()。
A.24691315B.24691215C.249121518D.249121415
66.结构化程序设计主要强调的是
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性
67.
68.
69.数据库概念设计的过程中,以下各项中不属于视图设计设计次序的是()。
A.自顶向下
B.由整体到个体
C.由内向外
D.由底向上
70.以下能定义为用户标识符的是()。
A.printfB.charC._8abcD.Void
71.有以下程序:
程序运行后的输出结果是()。
A.2,2,3,4,5,
B.6,2,3,4,5,
C.1,2,3,4,5,
D.2,3,4,5,6,
72.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序运行后的输出结果是()。A.6B.10C.11D.15
73.有以下程序#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.1B.0C.2D.3
74.
75.有以下程序:
程序的运行结果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,1,
D.0,1,2,3,4,5,6,7,8,9,
76.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
77.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()
A.a++;B.b++C.c++;D.d++;
78.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A.6B.7C.8D.9
79.
80.下列是用户自定义标识符的是()。
A._wlB.3_xyC.intD.LINE-3
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
例如,若学生的成绩是:8576698591726487,则平均分应当是:78.625。注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。
参考答案
1.D解析:“%”是求余运算符,其两侧的数值只能为整型,所以它不能用于实型的运算,故选项D错误。
2.D解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。本题的正确答案为D。
3.C条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式做真/假检测,然后根据结果返回两个表达式中的一个作为运算的结果。<表达式1>?<表达式2>:<表达式3>。在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
4.A
5.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项D)等于关系表达式的结果为假,即等于0。
6.D
7.B
8.A
9.A
10.C
11.C在程序设计中,算法执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需存储空间。
12.C解析:统计1~9九个数中的奇数和,此题考察指向数组的指针,C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。
13.D循环链表是线性表的一种链式存储结构,循环队列是队列的一种顺序存储结构。因此D选项叙述错误。本题答案为D选项。
14.D
15.A
16.D
17.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。
18.Cfread函数中的参数buffer是内存块的首地址,输入的数据存入此内存块中。
19.C
20.D题干中,函数fun的功能是通过递归,将数组a中下标为0~n-1位置的元素累加,作为函数返回值返回。main函数调用fun时,传入的a+2作为数组参数,传入n的值是4,所以函数返回值是元素a[2]、a[3]、a[4]、a[5]的和,程序输出18。本题答案为D选项。
21.int**zint*\r\n*z解析:函数希望通过形参z带回结果,形参z必须是指针类型的。由于返回整型结果,所以第一处填int*;函数返回前必须先把结果通过形参z间接引用传回,第二处应填*z。
22.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。
23.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。
24.1212解析:本题通过第一个for循环将数组arr[0]=arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12:
25.无定值无定值解析:for(i=1;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。
26.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。
27.一对多一对多解析:实体之间的联系有3类:一对一,一对多,多对多。设有两个实体集E1和E2,如果E2中的每一个实体与E1中的任意个实体(包括零个)有联系,而E1中的每一个实体最多与E2中的一个实体有联系,则称这样的联系为“从E2到E1的一对多的联系”,通常表示为“l:n的联系”。由此可见,工人和设备之间是一对多关系。
28.p=p+7或p+=7p=p+7或p+=7解析:本题考查通过指针引用数组元素。值为36的数组元素在a数组中是第8个元素,即a[7]。在程序中,p=a;语句将数组a的首地址赋给了指针变量p,则可以用*(p+i)来表示数组元素,*(p+i)与a[i]等价,a[7]可表示为*(p+7)。要使指针p指向a[7],可以用p=p+7移动指针,故填写p=p+7或p+=7。
29.ACEACE解析:题目中for循环的循环变量i从字符'a'变到字符'e',但由于每次循环后都连续执行了两次i++,所以for循环将执行3次,循环变量i的值依次为'a'、'c'、'e'。循环体中是一条输出语句,按字符输出表达式i-'a'+'A'。因为大小写字母的ASCII码是连续的,例如'b'+1='c'、'W'-1='V',而且小写字母的ASCII码比大写字母的大。所以,同一个字母的大小写字符之差是一个固定值。由此可见,将一个字符从小写转换为大写,只需将其减去这个固定值,而将大写转为小写可以加上这个固定值。固定值可以通过任一字符的小写减去大写来得到。所以本题的i-'a'+'A'=i-('a'-'A'),即让i减去了此固定值,从而使整个表达式的值为i所代表的小写字母的大写形式。故本题的输出结果是ACE。
30.for(I=0;I<t;I++)0for(I=0;I<t;I++),0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。
31.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)×3=3,f(3,5)返回值为(5-3)×3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)×3=9。因此d被赋值为9;所以输出9。
32.149161,4,9,16,解析:分析程序执行过程,第1次循环,k=1时,此时s(1)=1*1=1,然后k的值加1;第2次循环,k=2时,s(2)=2*2=4,然后k的值加1;第3次循环,k=3时,s(3)=3*3=9,然后k的值加1;第4次循环,k=4时,s(4)=4*4=16,然后k的值加1;当k=5时,条件不满足,退出循环。
33.完整性控制完整性控制
34.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。
35.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:根据题意和程序可知要填空的内容是:将字符申s中的数字字符放入d数组的条件。
36.24
37.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。
38.算法算法解析:算法是指对解题方案的准确而完整的描述。
39.t*10或10*tt*10或10*t解析:本题要求累加一系列有规律的数,从输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每次循环等于“填空内容”加上循环变量i,又因为i在5次循环中分别等于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填空内容”应是t*10。
40.相关文档相关文档解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档。程序足对计算机的处理对象和处理规则的描述,是软件开发入员根据用户需求开发的、用程序语言描述的、适合计算机执行的指令序列。数拼是使程序能正常操作信息的数据结构。文档是为了便于了解程序所需的资源说明,是与程序的开发、维护和使用有关的资料。
41.A解析:在解答本题时应该考虑两个问题:结构体变量的长度及sizeof()求字节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,structdate中包含year,month,day三个整型变量。一个整型变量所占的字节数为2。
42.A解析:题面中各变量定义后,指针变量p指向了变量n2所在的存储单元,指针变量q指向了变量n1所在的存储单元,要使得n1的值赋n2,可用指针变量q所指向的存储单元的值赋给指针变量p所指向的存储单元,即*p=*q。
43.B解析:本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行时b=2+1=3,最终t=2+3=5。
44.C解析:栈是一种后进先出表,选项C中,先出栈的是3,说明此时栈内必然有1,2,由于1先于2进浅,所以1不可能在2之前出栈,故选项C这种出栈序列是不可能的。
45.B解析:题目中定义了一个指针变量作为函数f()的参数。主函数main()中调用f()函数,当i=0时,执行语句“(*q)++;”,此处*q就代表数组a[0]的地址,也即将q进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f()中并未对指针变量q做任何变动,即*q仍代表数组元素a[0]的值,所以此次(*q)++即为2+1,a[0]的值变为3;直到i=4时,执行(*q)++后a[0]的值变为6,最后输出数组a的结果为6、2、3、4、5。
46.A解析:函数的实参分别为变量a的地址和b数组名,函数调用时将变量a的地址传给指针变量a,数组名b作为实参,形参也为b数组,当数组中各元素的值发生变化,实参数组元素的值也随之发生变化,所以输出的b[0]应为6。
47.C解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:
012
234
456
由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。
48.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。
49.B解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。
50.C解析:本题考查预处理命令的特点,编译预处理命令的特点:①为了区别一般的语句,预处理命令行都必须以“#”号开始,结尾不加分号;②预处理命令可以放在程序中的任何位置;③在程序中凡是以“#”号开始的语句行都是预处理命令行。
51.B解析:以'wt'方式写入的是字符文件,转义字符\'\\n\'被看作两个字符来处理。而'wb'方式写入的是二进制文件,转义字符\'\\n\'是一个字符。
52.D解析:本题考查while和do…while循环的区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体:在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
53.A解析:t的二进制形式是00000010,前置加之后,t值的二进制形式为00000011,右移两位,最后两个1将移出,t值最后是0。
54.D解析:本题考查指针变量的赋值。
**pp是定义了一个指向指针的指针变量,语句pp=&p的意思是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,即b的值。
55.B解析:在C语言中,用户标识符命令规则规定:变量名只能由字母、数字或下划线3种字符组成,且第一个字符必须为字母或下划线。在C语言中,大写字母和小写字母被认为是两个不同的字符。据此规定A)、D)、C)三个选项是正确的,而B)选项是连字符,不在C语言规定的命名变量标识符的范围内。
56.C解析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。
57.B解析:视图设汁一般有3种设计次序,它们分别是自顶向下、自底向上和由内
向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以
单独使用也可混合使用。
注意:数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后
对局部视图进行集成得到概念模式。
58.A解析:字符数组a[]中用字符串常量“xyz”进行初始化,字符数组a[]的长度为字符的个数,所以其值为3,并不包括字符串结束标记'\\0';字符串数组b[]用3个字符'x'、'y'、'z'来初始化,所以其字符串的长度等于3。
59.A解析:scanf函数中格式控制后面应为变量地址列表,因此选项C和选项D都错误,选项B中“&d”是指针变量d的地址,与题目不符。由题目可知指针变量d中存放的是变量c的地址,所以正确答案为选项A。
60.D解析:该题考查逻辑与'&&'和逻辑或'||'以及逻辑非'!'符号的用法。选项A)即3&&4为真;选项B)即3<=4为真;选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真;此时选项C)变为1&&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。
61.C
62.D
63.A\r\n二分法又叫折半(对分)查找法,只适合于顺序存储的有序表(是指线性表中的元素按值非递减排列)。二分法的基本思想是:设有序线性表的长度为n,被查元素为X,则二分查找的方法如下:
将X与线性表的中间项进行比较:若中间项的值等于x,则说明找到,查找结束;若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;若X大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找、这个过程-直进行到查找成功或于表长度为0,(说明线性表中没有这个元素为止)顺序存储的线性袁在计算机中-般用一个-维数组来表示,在数组中我们可以通过数组名和下标来对数组中的任意一个元素进行访问,而在链表(不管是有序还是无序)中,要对元素进行访问必须从表头结点开始,顺着链条一个一个结点进行搜索,因此选项A正确
64.C”anf(”%c”,&c),输入的字符,题目中输入了0,字符0,对应于ASCIl码为48,因此for循环中,i的范围从0~5,均小于48,if条件不成立,直接执行下一条语句,执行语句prinff,因此得到的结果是0,1,2,3,4。故答案为C选项。
65.B函数的功能是将数组的某个区域内的元素加3,赋给后一个元素,然后返回;题目是从a[2]到a[5]调用函数,a[2]=6,所以a[3]=6+3=9,a[4]=9+3=12,a[5]=12+3=15,所以结果为B
66.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。
由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。
结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。
67.B
68.C
69.B\n数据库概念设计的过程中,视图设计一般有三种设计次序,它们是:
\n自顶向下。这种方法是先从抽象级别高且普遍性强的对象开始逐步细化、具体化与特殊化。
\n由底向上。这种设计方法是先从具体的对象开始,逐步抽象,普遍化与一般化,最后形成一个完整的视图设计。由内向外。这种设计方法是先从最基本与最明显的对象着手逐步扩充至非基本、不明显的其他对象。本题答案为B)。
\n
70.B用户自定义标识符不能与关键字相同。但可以与库函数名相同,只是一般不建议用户这么做。
71.B本题考查的是指针作为函数的参数和函数的调用。题目中定义了一个指针变量作为函数f的形参。主函数main中调用f函数,当i=0时,执行语句(*q)++,此处*q代表的就是数组元素a[O]的值,即将1进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f中并未对指针变量q作任何变动,也即*q仍代表了数组元素a[0]的值,所以此次(*q)++即2+1,所以a[O]的值变为3;……直到i=4时,执行(*q)++(即5+1)后a[0]的值变为6。所以最后的输出结果为:6,2,3,4…5
72.C本题考查数组的使用。本题定义了两个数组,注意数组的下标是从0开始的,进行第1次for循环:当i=0时,b[0]为数组b中第l个元素,结果为0,那么a[0]也是数组a中第l个元素,结果为1,所以S的值为1。第2次循环:i此时自加为l,b[1]为数组的第2个元素,值为2,所以可求出a[2](数组中的第3个元素)的值为3,s=s+3,所以S的值为4。进入第3次for循环,依此类推,第3次for循环结束时s的值为6。第4次for循环,s的值变为l0。第5次for循环时,此时i的值为4,s的值变为ll,i=5不符合题意,所以跳出循环,输出结果,所以本题答案为C。
73.A虽为嵌套的for循环,但“m=m%j”只执行1次,即当i=3时,内层循环条件成立,m=55%3=1,故选A。
74.D
75.A在c语言中函数参数的传递是”传值”的,即形参和实参是两个没有关系的变量,函数fun虽然看似交换了参数值,但是只交换了形参的值,其结果不会传递给实参,因此数组c没有变化。主函数中给数组c元素赋值l,2,…,9,0。第一个for循环语句中调用fun函数,该函数功能是交换变量的数值,注意循环变量i的增量。第二个for循环语句将数组c中元素的值进行输出。
76.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。
77.D++是自增运算符,作用是使变量的值增加1,选项D中的d不是变量,而是一个标识符,它代表常量2,常量是不允许进行自增运算的。故本题答案为D。
78.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b为逗号表达式,运算后取a+b的值为5,c++为3,故函数调用后输出结果为8。
79.B
80.Ac语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项S),D)是错的;此外,C语言不允许用户将关键字作为标识符,而选项c)中的int是c语言的关键字。
81.(1)错误:t=1.0-1/i;
正确:t-=1.O/i;
(2)错误:;
正确:returnt;
【解析】从题目中的公式可知,整数rl每增加1,其结果为上一次的结果减1/i,因此,“t=1.0-1/i;”应改为“t-=1.0/i;”;由函数的定义可知,函数proc()要把最后所得到的结果返回给主函数,因此要在函数proc()最后加上“returnt;”。
82.
【考点分析】
本题考查:链表的操作,对链表的主要操作有以下几种:建立链表、结构的查找与输出、插入一个结点、删除一个结点。
【解题思路】
题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均分。遍历链表时应定义一个指向结点的指针P,因为“头结点”中没有数值,所以程序中让P直接指向“头结点”的下一个结点,使用语句STREC+P=h÷next。2021年山西省朔州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中错误的是______。A.C程序中的#include和#define行均不是C语句
B.除逗号运算符外,赋值运算符的优先级最低
C.C程序中,j++;是赋值语句
D.C程序中,+、-、*、/、%号是算术运算符,司用于整型和实型数的运算
2.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。
A.概要设计B.详细设计C.可行性分析D.需求分析
3.有如下嵌套的if语句:if(a<b)if(a<c)k=a;elsek=C:elseif(b<c)k=b;elsek=C;以下选项中与上述if语句等价的语句是()。A.k=(a<b)?a:b;k=(b<c)?b:C;
B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D.k=(a<b)?a:b;k=(a<c)?a:c;
4.
5.下列选项中,当x为大于1的奇数时,值为0的表达式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
6.
7.在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
8.
9.
10.有n个结点的二叉树链表共有__________个空指针域。
A.n-1B.nC.n+1D.n+2
11.下列叙述中正确的是()。
A.算法的执行效率与数据存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上3种描述都不对
12.有以下程序
main()
{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是A.A.45B.20C.25D.36
13.以下叙述中错误的是()。
A.向量属于线性结构B.二叉链表是二叉树的存储结构C.栈和队列是线性表D.循环链表是循环队列的链式存储结构
14.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。
A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表
15.下列语句中,显示没有下画线的超链接的语句是()。
A.a{text—decoration:none}
B.a{text—decoration:nounderline}
C.a{underline:none}
D.a{decoration:nounderline}
16.指针可以用来表示数组元素,若已知语句:inta[3][7];则下列表示中正确的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
17.设有以下说明语句
structex
{intx;floaty;charz;}example;
则下面的叙述中不正确的是
A.struct结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.structex是结构体类型名
18.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一个文件指针,指向待读取的文件
B.一个整型变量,代表待读取的数据的字节数
C.一个内存块的首地址,代表读人数据存放的地址
D.一个内存块的字节数
19.数据在计算机存储器内表示时,如果元素在存储器中的相对位置能反映数据元素之间的逻辑关系,则称这种存储结构为()。
A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构
20.有以下程序:
程序运行后的输出结果是()。A.34B.55C.10D.18
二、2.填空题(20题)21.下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。
add(intx,inty,【】z)
{【】=x+y;}
22.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。
23.以下程序运行后的输出结果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
24.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
fov(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
25.下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
printf("%d",sum);
}
26.下列程序输出的结果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
27.如果一个工人可管理多个设备,而一个设备只被一个工人管理,则卖体“工人”与实体“设备”之间存在【】关系。
28.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
29.以下程序的输出结果是【】。
#include<stdio.h>
main()
{inti;
for(i-'a';i<'f';i++,i++)printf("%c",i-'a'+'A');
printf("\n");
}
30.以下函数用来求出数组的最大元素在数组中的下标并存放在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]);}
31.若有以下程序:
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(3,4),f(3,5));
printf("%d\n",d);
}
执行后输出结果是【】。
32.以下程序的运行结果是()。#defineS(x)x*xmain(){intk=1;while(k<=4){printf("%d,",S(k));k++;}
33.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。
34.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。
35.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
36.以下程序运行后的输出结果是______。
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
37.以下程序运行后的输出结果是______。
inta=5;
fun(intB)
{staticinta=10;
a+=b++;
printf("%d",A);
}
main()
{intc=20;
fun(C),
a+=C++;
printf("%d\n",A);
}
38.解题方案的准确而完整的描述称为______。
39.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
40.软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和()的集合。
三、1.选择题(20题)41.以下程序的运行结果是#include"stdio.h"main(){structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}
A.6B.8C.10D.12
42.设有定义intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
43.下列程序的输出结果是()。
#include<stdio.h>
intb=2;
intfunc(int*A)
{b+=*a;retumb;}
main()
{inta=1,t=2;
t+=func(&A);
printf("%d\n",t);
}
A.4B.5C.6D.8
44.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
45.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
46.下列程序执行后的输出结果是()。#include<stdio.h>voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}
A.6B.7C.8D.9
47.下面的程序段运行后,输出结果是
inti,j,x=0;
staticinta[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
A.9B.不确定值C.0D.18
48.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
49.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。
A.2B.4C.6D.8
50.下列描述中正确的是()。
A.在C语言程序中预处理是指完成宏替换和文件包含指定的文件的调用
B.预处理指令只能位于C源程序文件的首部
C.预处理命令可以放在程序中的任何位置
D.预处理命令结尾需要加分号
51.对于下述程序,在方式串分别采用"wt"和"wb"运行时,两次生成的文件TEST的长度分别是
#include<stdio.h>
voidmain()
{FILE*fp=fopen("TEST",);
fputc(′A′,fp);fputc(′\n′,fp);
fputc(′B′,fp);fputc(′\n′,fp);
fputc(′C′,fp);
fclose(fp);}
A.7字节、7字节B.7字节、5字节C.5字节、7字节D.5字节、5字节
52.在C语言中,while和do…while循环的主要区别是()。
A.do…while的循环体不能是复合语句
B.do…while允许从循环体外转到循环体内
C.while的循环体至少被执行一次
D.do…while的循环体至少被执行一次
53.以下程序的运行结果是______。main(){chart=02;printf("%d\n",t=++t>>2);}
A.0B.1C.2D.3
54.若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);则输出结果是()。
A.20,10B.20,20C.10,20D.10,10
55.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A.大写字母B.连接符C.数字字符D.下划线
56.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=8,v2=8,v3=8,v4=8
57.视图设计一般有3种设计次序,下列不属于视图设计的是______。
A.自顶向下B.由外向内C.由内向外D.自底向上
58.已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。
A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述三种说法都不对
59.已知i、j、k为iht型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。
A.scanf("%d%d%d",&i,&j,&k);
B.scanf("%d,%d,&d",&i,&i,&k);
C.scanf("%2d%2d%2d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
60.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是
A.x&&y
B.x<=y
C.x||++y&&y-z
D.!(x<y&&!z||1)
四、选择题(20题)61.
62.
63.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表
64.有以下程序:执行时输入:0<;回车>;后,则输出结果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.
65.有以下程序:
fun(inta[],intm,intn)
{inti;
for(i=m;i<n;i++)
a[i+1]=a[i]+3;
returna[i+1];
}
voidmain()
{
inti,a[6]={2,4,6,8,10,12};
fun(a,2,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
程序运行后输出的结果是()。
A.24691315B.24691215C.249121518D.249121415
66.结构化程序设计主要强调的是
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性
67.
68.
69.数据库概念设计的过程中,以下各项中不属于视图设计设计次序的是()。
A.自顶向下
B.由整体到个体
C.由内向外
D.由底向上
70.以下能定义为用户标识符的是()。
A.printfB.charC._8abcD.Void
71.有以下程序:
程序运行后的输出结果是()。
A.2,2,3,4,5,
B.6,2,3,4,5,
C.1,2,3,4,5,
D.2,3,4,5,6,
72.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序运行后的输出结果是()。A.6B.10C.11D.15
73.有以下程序#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.1B.0C.2D.3
74.
75.有以下程序:
程序的运行结果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,1,
D.0,1,2,3,4,5,6,7,8,9,
76.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
77.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()
A.a++;B.b++C.c++;D.d++;
78.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A.6B.7C.8D.9
79.
80.下列是用户自定义标识符的是()。
A._wlB.3_xyC.intD.LINE-3
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
例如,若学生的成绩是:8576698591726487,则平均分应当是:78.625。注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。
参考答案
1.D解析:“%”是求余运算符,其两侧的数值只能为整型,所以它不能用于实型的运算,故选项D错误。
2.D解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。本题的正确答案为D。
3.C条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式做真/假检测,然后根据结果返回两个表达式中的一个作为运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理实习中的护理沟通技巧
- 2026届浙江省衢州市五校联盟学业水平考试化学试题模拟仿真卷(5)含解析
- 护理服务创新:智能化护理模式
- 护理操作规范与流程
- 2026年人教版2024新教材八年级下册生物期末复习全册必背考点提纲新版
- 护理礼仪的礼仪精神
- 广东省肇庆市2026届高三上学期二模数学试题
- 船台总装竣工移交方案
- 护理实践中的团队协作
- 赤泥综合利用项目施工方案
- 2026文化和旅游部恭王府博物馆招聘应届毕业生4人考试备考试题及答案解析
- 昆明供电局项目制用工招聘笔试真题2025
- 2026年新国考公共基础知识专项试题及答案
- 教育教学综合实践活动调研报告
- 原材料检测试验监理实施细则
- 人工智能知到章节答案智慧树2023年复旦大学
- 世界社会主义五百年
- 无人机组装调试与检修 第五章 无人机系统调试
- SAP风电行业解决方案探讨V1.1
- 站场路基施工方案
- GBZ/T(卫生) 262-2014核和辐射突发事件心理救助导则
评论
0/150
提交评论