版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年浙江省嘉兴市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下面关于编译预处理的命令行中,正确的是()。
A.#defineintINT
B.##defineeps0.001
C.##DEFINETRUE
D.#defineE2.88
2.某某二叉树的中序序列和后序序列正好相反,则该二叉树一定是______的二叉树
A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子
3.
4.有下列程序:程序执行后的输出结果是()。A.1,0B.1,1C.1,4D.4,4
5.在下面栈的基本运算中,不是加工型运算的是______。
A.初始化B.进栈C.退栈D.判栈空
6.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序运行后的输出结果是()。
A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3
7.
8.下列字符数组初始化语句中,不正确的是()。A.A.charc[]='goodmorning';
B.charc[20]="goodmorning";
C.charc[]={'a','b','c','d');
D.charc[]={"ffgoodmorning"};
9.以下选项中不能作为C语言合法常量的是()
A.0.1e+6B.‘cd’C.“\a”D.‘\011’
10.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()
A.多对多B.一对一C.多对一D.一对多
11.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序运行后的输出结果是()。
A.y=0B.y=-1C.y=1D.while构成无限循环
12.以下说法正确的是()。
A.C语言只接受十进制的数
B.C语言只接受二进制、八进制、十六进制的数
C.C语言只接受二进制、十进制、十六进制的数
D.C语言只接受八进制、十进制、十六进制的数
13.表达式“a+=a-=a=9”的值是()。
A.18B.-9C.0D.9
14.下列叙述中正确的是()。
A.数据的逻辑结构与存储结构必定是一一对应的
B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构
D.以上三种说法都不对
15.需求分析最终结果是产生
A.项目开发计划B.需求规格说明书C.设计说明书D.可行性分析报告
16.
17.有以下程序:main(){intp[7]={11,13,14,15,16,17,18),i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k)}执行后的输出结果是______。
A.58B.56C.45D.24
18.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。structnode{hardata;structnode*next;)*P,*q,*r;现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;
B.q-:>next=r;q->next=r->next;r->next=q;
C.q-:>next=r->next;r->next=q;p->next=r;
D.q-:>next=q;p->next=r;q->next=r->next;
19.有以下程序段:main(){intx[M][N];...Arrlet(x);...}则作为函数Arrlet的形参,以下表示形式非法的是()。
A.intx[M][]B.int(*x)[N]C.intx[][N]D.intx[M][N]
20.下面程序的运行结果是
#include<stdio.h>
voiddelch(char*s)
{inti,j;
char*a;
a=s;
for(i=0,j=0;a[i]!=′\n′;i++)
if(a[i]>=′0′&&a[i]<=′9′)
{s[j]=a[i];j++;}
s[j]=′\0′;}
main()
{char*item="a34bc";
delch(item);
printf("\n%s",item);}
A.abcB.34C.a34D.a34bc
二、2.填空题(20题)21.表示条件;10<x<100或x<0的C语言表达式是【】。
22.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
23.已有定义:charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&Ra;后b的值为______。
24.以下程序输出的结果是【】。
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
25.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
26.为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【】。
27.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen(【】);。
28.设有以下定义和语句,则*(*(P+2)+1)的值为【】。
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
29.下述程序的输出结果是【】。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0||x==1)
return3;
else
p=x-fun(x-2);
returnp;}
voidmain()
{printf("\n%d",fun(9));}
30.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。
31.设有如下变量说明,则a+(int)((int)b+c)>>(int)(b-c)的值为【】。
inta=5;floatb=7.2,c=3.6;
32.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s<t时返回负值。请填空。
My_cmp(char*s,char*t)
{while(*s==*t)
{if(*s==′\0)return0;
++s;++t;
}return【】;
}
33.以下程序中,for循环体执行的次数是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
34.以下程序的运行结果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:case2:return1;
}
return(fib(g-1)+fib(g-2));
}
main()
{longk;
k=fib(5);
printf("k=%d\n",k);
}
35.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。
36.以下程序的定义语句中,x[1]的初值是[9],程序运行后输出的内容是[10]。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");
}
37.请读程序片段:
inta=17;
printf("%d,%o\n",a,a);
以上程序片段的输出结果是【】。
38.设有如下宏定义
#defineMYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a,b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(【】a,b);
39.下列程序执行后输出的结果是【】。
structs
{intx,y;}data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
40.在计算机领域中,通常用英文单词“Byte'’表示【】。
三、1.选择题(20题)41.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序运行后的输出结果是
A.错误信息B.666C.888D.666,888
42.以下叙述正确的是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
43.下面程序的输出结果是______。main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4]=a,i,j,k=0;for(i=0;i<3;i++)for(j=0;j<2;j++)k=p[i][j];printf("%d\n",k);}
A.17B.18C.19D.23
44.设有声明语句chara='\72';,则变量a______。
A.包含1个字符B.包含2个字符C.包含3个字符D.声明不合法
45.有以下程序:#include<stdio.h>main(){inta[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf("y=%d\n",y);}程序的运行结果是()。
A.y=0B.y=1C.y=2D.y=3
46.以下所列的各函数首部中,正确的是______。
A.voidplay(vara:Integer,varb:Integer)
B.voidplay(inta,b)
C.voidplay(inta,intb)
D.Subplay(aasinteger,basinteger)
47.下面程序输出的结果是______。main(){inti=5,j=9,x;x=(i=j?i:(j=7));printf("\n%d,%d",i,j)}
A.5,7B.5,5C.语法错误D.7,5
48.若变量已正确说明为float型,要通过scanf("%f%f%f",&a,&b,&c);给a赋值10.0,b赋值22.0,c赋值33.0,下列不正确的输入形式是()。
A.10<回车>22<回车>33<回车>
B.10.0,22.0,33.0<回车>
C.10.0<回车>22.033.0<回车>
D.1022<回车>33<回车>
49.有以下程序:#include<stdio.h>fun(intx,inty,intz){z=x*y;}main(){inta=4,b=2,c=6;fun(a,b,c);printf("%d",c);}程序运行后的输出结果是()。
A.16B.6C.8D.12
50.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i
A.45B.50C.60D.55
51.以下程序的输出结果是
#include<stdio.h>
main()
{inta=15,b=21,m=0;
switch(a%3)
{case0:m++;break;
case1:m++;
switch(b%2)
{default:m++;
case0:m++;break;}}
printf("%d\n",m);}
A.1B.2C.3D.4
52.以下选项中不能正确把c1定义成结构体变量的是
A.typedefstruct{intred;intgreen;;intblue;}COLOR;COLORcl;
B.structcolorcl{intred;intgreen;intblue;};
C.struetcolor{intred;intgreen;intblue;}c1;
D.struct{intred;intgreen;intblue;}cl;
53.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}
A.11B.12C.13D.15
54.若有以下的说明和语句,则在执行for语句后,*(*pt+1)+2)表示的数组元素是()intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];
A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]
55.以下错误的定义语句是()。
A.intx[][3]={{0},{1},{1,2,3}};
B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3},{1,2,3}};
C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D.intx[][3]={1,2,3,4};
56.有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是
A.456B.258C.369D.789
57.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。
A.详细设计B.需求分析C.总体设计D.编程调试
58.有下列程序:
main()
{intk=5,n=0;
do
{switch(k)
{case1:case3:n+=1;k--;break;
default:n=0;k--;
Case2:case4;n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
程序运行后的输出结果是()。
A.235B.0235C.02356D.2356
59.非空的循环单链表head的尾结点(由p所指向),满足()
A.p->next==NULIB.p==NULLC.p->next=headD.p=head
60.若变量c为char类型,能正确判断出c为小写字母的表达式是______。
A.'a'<=c<='z'
B.(c>='a')||(c<='z')
C.('a'<=c)and('z'>=c)
D.(c>='a')&&(c<='z')
四、选择题(20题)61.有以下程序:
程序的运行结果是()。
A.1,2,3,4,B.1,0,7,0,C.1,4,5,9,D.3,4,8,10,
62.
63.HTTP协议是运行于()协议之上的应用层协议。
A.FTPB.SMTPC.TCPD.UDP
64.下列说法中不正确的是
A.C语言规定,不能在一个函数的内部再定义函数
B.在没有声明函数返回值类型的情况下,默认的函数返回值类型为int型
C.函数的类型可以是整型、实型、字符型,但不能是指针型
D.函数可以没有形参,但函数名后的一对圆括号不能省略
65.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
66.有以下程序:
执行时输入:aBeDefG##<;回车>;,则输出结果是()。
A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bedefgh
67.
68.
69.
70.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:
程序运行后的输出结果是()。
A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!
71.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。
A.0B.1C.2D.不知道a的值,不能确定
72.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。
A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'
73.有以下程序:
程序运行后的输出结果是()。
A.9,18B.8,11C.7,11D.10,14
74.
75.设有如下程序段
76.以下不能正确定义二维数组的选项是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}};
77.
78.
79.有以下程序:
#include<stdio.h>
intfun()
{staticintx=1;
X*=2:
returnx;
}
main()
{inti,S=1;
for(i=1;i<=3;i++)S*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是()。
A.0B.10C.30D.64
80.有以下程序:
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
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,2和Y的值不相等。例如,当x的值为1,y的值为2,z的值为3时,函数值为2.O0。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。注意:部分源程序给出如下。请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(chara){voidmain{chars[81];print{("Enterastring:\n");gets(s):fun(S);printf("Thestringafterdeleted:\n");puts(s);}
参考答案
1.D选项A中,int是关键字,不能作为用户标识符;选项B中,两个“#”错误;选项C中两个“#”错误,另外DEFINE大写也是错误的。故本题答案为D选项。
2.C
3.B
4.A&&是逻辑与运算符,x、y的取值为4、2,两个都是非零值,所以x&&y的结果为真,值为1;&是位运算符,x的二进制为0100,y的二进制为0010,0100&0010的结果为0。本题答案为A选项。
5.D
6.Dmain函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap函数。swap函数接收两个整型指针变量a、b,然后使用整型变量t交换a、b所指向的值并输出。通过指针变量的交换改变了实参i、j的值,使得i=7,j=3。指针变量tp交换a和b的值,由于a、b的值是p、q值的复制,因此这次交换只改变了形参a、b的值,对实参p、q的值没有改变,此时指针变量a指向j,指针变量b指向i。函数最后输出*a和*b,所以输出3,7。由于swap函数改变了p和q指向的值,因此main函数输出i的值为7,j的值为3,*P的值为i,*q的值为j。最终程序输出:3,7,7,3,7,3。故本题答案为D选项。
7.A
8.A本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②℃语言中没有字符串变量,只能用字符数组来存储字符串。
9.B字符串常量应该用双引号标注,即“cd”,单引号标注的单个字符表示字符常量,所以B选项中的表示方法错误。故本题答案为B选项。
10.C解析:该题考查的是实体间的联系。多对多联系(m:n):如果对于实体集A中的每个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B之间是多对多联系,记作m:n。一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之有联系,反之亦然,则称实体集A与实体集B之间是一对一联系,记作1:1。一对多联系(1:n):如果对于实体集A中每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B之间是一对多联系,记作1:n。那么根据题意可知是多对一联系。所以选项C是正确的。
11.B执行“y--”直到值为0。退出循环。由于“y--”是后缀自减运算,先使用再自减,因此退出循环时,y的值为-1。故本题答案为B选项。
12.DC语言中,整型常量可以用十进制、八进制和十六进制表示。故本题答案为D选项。
13.C首先计算表达式“a=9”;再计算表达式“a-=9”;即“a=a-9”,结果为0;最后计算表达式“a+=0”,即“a=a+0”,所以最终结果为0。故本题答案为C选项。
14.D解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的。选项A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来说,性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项B中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,但对于满二叉树与完全二叉树来说,根据完全二叉树的性质6,可以按层序进行顺序存储,即利用程序设计语言中的数组来存储,这样,不仅节省了存储空间,又能方便地确定每一个结点的父结点与左右子结点的位置。对于一般的二叉树来说,也可以将二叉树中每一个结点的左指针、右指针以及数据域分别用三个数组中的对应元素来存储,即实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。选项C中的说法也是错误的。综上所述,选项A、B与C中的说法都是错误的。
15.B解析:本题考核软件工程中的需求分析环节。需求分析应交付的主要文档就是需求规格说明书。
16.D
17.D解析:程序中while语句的循环条件为i<7&&p[i]%2。当i=0时,条件成立,k=k+p[0]=11;当i=1时,条件仍成立,k=k+p[1]=11+13=24;当i=2时,p[2]%2=0条件不成立,结束while循环,所以k=24。
18.D由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next:r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
19.AC语言规定二维数组作为实参传递时,形参必须要指明二维数组的列数,否则函数内无法识别数组的宽度,行数提供没有任何作用。“(*x)[N]”与“x[][N]”以及“x[M][N]”效果一样。通过排除法选择A选项。故本题答案为A选项。
20.B解析:考查用指针引用字符串元素的方法。指针a通过数组元素下标来从头逐个地引用字符串item中的字符,判断不是0~9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下和两个字符了。
21.(x>10&&x<100)||x<0
22.物理独立性物理独立性
23.11解析:字符空格的ASCII码不为0,所以本题中表达式!c的值为0,b=0&&1的结果显然为0。
24.00解析:本题的关键在于对变量c的赋值运算:
d=(a>b>c)
d=(5>4>3)
先算5>4,为真,得1,即:d=(1>3),此时1>3,为假,得0。
25.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
26.DIR??C*.*
27.d1.dat"rb"d1.dat,'rb'解析:打开文件的函数为fopen('文件名','mode'),其中'mode'表示文件的打开方式。如果打开的是二进制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只读方式打开。'w'表示以写方式打开,如果已存在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件。'a'为追加方式打开。若文件存在时,将打开这个文件并且在文件的末尾进行追加。当文件不存在,将创建新文件。'r+'打开一个已存在文件用于更新(可读可写)。\'w+'创建一个新文件用于更新,如果文件存在,文件被重写(可读可写)。'a+'打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填'd1.dat','rb'。
28.6060解析:本题定义了一个3行2列的二维数组a,并定义了一个指向两个元素的一维数组指针p,让p指向二维数组a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。
29.77解析:本题考查的是函数的递归调用。x=0或x=1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。
30.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。
31.11解析:在表达式a+(int)((int)b+c)>>(int)(b-c)中圆括号最优先,其次为类型转换(int)、加法+、减法-、右移运算>>。所以先看两个圆括号((int)b+c)和(b-c),前者b先被转换为int型7,然后与c相加得10.6,后者结果是3.6,现在表达式为a+(iot)10.6>>(int)3.6。C语言中,float型转换为int型是截尾取整,所以表达式进一步简化为5+10>>3=>15>>3。由于15的二进制为000011112(下标),所以15>>3的结栗是000000012(下标),即1。
32.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在s>t时,返回正值,当s<t时,返回负值。
33.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。
34.k=5k=5解析:由题可知fib(0)的值为0,fib(1)和fib(2)的值为1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。
35.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。
36.在主函数中根据整型数组x[]的定义可知,x[1]的初值等于2。在for循环语句中;当i=0时,p[0]=&x[1],p[0][0]=2;当i=1时,P[1];&x[3],p[1][0]=4;当i=2时,p[2]=及x[5],p[2][0]=6;当i=3时,p[3]=&x[7],p[3][0]=8,所以程序输出的结果为2、4、6、8。\r\n\r\n
37.1721
38.cc解析:该题考查以下两个知识点:
(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标识符字符串
(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。
39.1111解析:程序中结构体数组data首地址(即&data[0])赋值给结构体指针变量p,++(P->x)表示先将p所指向的结构体变量的成员x值加1,然后将此x(即data[0].x)输出。
40.字节字节
41.B解析:程序中的printf()函数的输出格式部分只说明了一个%d,而输出成员列表却有两个成员a和b,在这里将只输出第一个成员a值为666,所以,4个选项中选项B符合题意。
42.B解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句,exit,return等语句也能直接跳出多层循环。注意:continue和break语句在while语句中的作用。
43.C解析:p是指向长度为4的一维数组的指针变量,可看作是二维数组a的行指针,可以像使用数组名一样通过p带数组下标的形式来引用数组中元素,变量k最后是元素a[2][1]的值。
44.A解析:转文字符常量'\\xx'可以把'\\'后面的数字转换为对应的ASCII字符。
45.D解析:本题主要考查一维数组及数组元素的地址。程序中定义数组a后知,a[0]=1,a[1]=2,a[2]=3,a[3]=4;在定义指针p时给其赋值为a[3]的地址。执行--p;语句后,p指向数组元素a[2];然后执行y=*p;语句,y的值为指针p所指向的变量的值为3。
46.C解析:除选项C项外,其他各项都没有按照C语言中的函数定义规则定义函数。
47.A解析:条件表达式的—般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i=j,不等,执行j=7;然后执行x=7。故本题为A。
48.B解析:在scanf('%f%f%f,&a,&b,&c);中,格式描述为'%f%f%f,当输入数据时,数据之间可用空格、制表符和回车符作为间隔符,而逗号不是合法的间隔符。
49.B解析:本题考查函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值,即本题中c的值未改变,仍然是6。
50.C解析:本题中fun()函数通过一个for循环来累计形参数组x的前n个元素之和。在主函数中,第1次调用fun(a,5)时,返回的值应该是数组a的前5个元素的和,而第2次调用fun(b,4)时,返回的值除了本次累计的数组b前4个元素的和外,还要加上上次累计的值。所以,最后输的s的值为数组a所有元素之和的两倍加上数组b所有元素之和,结果是60。故应该选择C。
51.A解析:考查switch语句的使用。switch语句的条件是'a%3=15%3=0',所以执行case0后面的语句,m++;m=1,然后就执行break,跳出switch语句,所以最后输出m的值为1\ue009。
52.B解析:结构体类型的定义格式为:
stract结构体名
成员说明列表};
结构体变量的定义有3种形式:第一种,定义结构体类型的同时定义结构体变量,如:street结构体名{成员说明列表}变量;第二种,先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strectstudent{成员说明列表};student变量;第三种,定义一个无名称的结构体类型的同时定义结构体变量,如:strectstudent{成员说明列表}变量;。
53.B解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。
54.C
55.C解析:若在定义二维数组的同时对数组进行初始化,可以不指定一维长度.但二维长度不能省略,因此选项C是错误的。如果数据不足,系统将自动给后面的元素自动补初值0。
56.C解析:本题考核的知识点是二维数组的定义,赋值及数组元素的引用。变量k的初值为2,循环执行了3次,分别输出m[2][0]、m[2][1]和m[2][2],其值分别为3,6,9。所以,C选项为所选。
57.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。
58.B解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,输出0,k减1;这时n=0,k=4,程序进行第2次循环,执行case4:这个分支,结果是n=2,k=3,打印出2:这时n=2,k=3,程序进行第3次循环,执行case3:这个分支,结果是n=3,k=2,打印出3;这时n=3,k=2,程序然后进行第4次循环,执行case2:case4:这个分支,结果是n=5,k=1,打印出5,这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。所以在屏幕上打印出的结果是0235。
59.C
60.D解析:字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCII码表中都是连续的,大写字母A到Z是从65到90,小写字母a到z是97到122,所以只要变量c大于a并且小于z就能保证其为小写字母。
61.B该题目中fun函数的功能是将二维数组
a中符合条件的值赋给一维数组的符合条件的元素。主函数
的功能是将符合条件的一维数组的元素进行输出。
62.A
63.C
64.C本题主要考查函数定义的基本知识。函数是C语言的基本组成部分,用来完成子程序的功能。一个完整的C程序包括一个main()函数(主函数)和若干个其他函数,C程序从main()函数开始执行。
在C语言中,函数定义是平行的,函数不能嵌套定义,即一个函数不能在另一个函数内部定义,函数之间没有从属关系。函数定义表达的一般形式为:
<函数返回值类型>函数名(<类型名><形式参数1>,<类型名><形式参数2>,……)
{
函数体变量定义部分;
函数体语句部分;
}
其中,<函数返回值类型>部分可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国塑机辅机行业应用趋势与前景动态预测报告
- 中国成人体重管理指南重点总结2026
- 2025-2030中国四螨嗪TC市场深度调查与未来前景趋势研究报告
- 7.1 小小鞋店 课件 2025-2026学年三年级下册数学北师大版
- 七年级数学教学工作总结15篇
- 七年级数学教学工作总结模板(34篇)
- 2026年海南高考文综真题试卷+答案
- 2025年吉林省八年级地理生物会考真题试卷(+答案)
- 2026年贵州高考理科综合试题(附答案)
- 2026年广西壮族自治区贵港市中考英语试卷含答案
- 2026山东省鲁信投资控股集团有限公司校园招聘30人备考题库附答案详解(a卷)
- 2026年心血管内科(正-副高)题库检测模拟题含完整答案详解【名校卷】
- 2025-2030照明电器行业市场发展分析及投资布局指南
- 2026年湖南益阳市中心医院人才引进67人笔试参考题库及答案解析
- 2026宁波广播电视集团招聘7人考试参考试题及答案解析
- 全国数据集团发展蓝皮书2025
- 2026年广东省深圳市21校联考九年级中考一模化学试卷(含答案)
- 2026春季四川成都环境投资集团有限公司下属成都市兴蓉环境股份有限公司校园招聘47人笔试备考试题及答案解析
- 涉税专业机构内部制度
- 中国颈部按摩仪消费群体画像与定价策略研究报告
- 2025年建信期货招聘笔试真题及答案
评论
0/150
提交评论