![2021-2022年湖北省随州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页](http://file4.renrendoc.com/view/d10e6ac37a11af2b9fc1040e8661acc3/d10e6ac37a11af2b9fc1040e8661acc31.gif)
![2021-2022年湖北省随州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页](http://file4.renrendoc.com/view/d10e6ac37a11af2b9fc1040e8661acc3/d10e6ac37a11af2b9fc1040e8661acc32.gif)
![2021-2022年湖北省随州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页](http://file4.renrendoc.com/view/d10e6ac37a11af2b9fc1040e8661acc3/d10e6ac37a11af2b9fc1040e8661acc33.gif)
![2021-2022年湖北省随州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页](http://file4.renrendoc.com/view/d10e6ac37a11af2b9fc1040e8661acc3/d10e6ac37a11af2b9fc1040e8661acc34.gif)
![2021-2022年湖北省随州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页](http://file4.renrendoc.com/view/d10e6ac37a11af2b9fc1040e8661acc3/d10e6ac37a11af2b9fc1040e8661acc35.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年湖北省随州市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表
2.在带头结点的单链表head为空的判定条件是()。
A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL
3.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。
A.0B.2C.3D.5
4.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
5.每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做()排序。
A.插入B.堆C.快速D.归并排序
6.C语言中的变量只能由字母、数字和下划线组成,且第一个字符()。
A.必须是字母B.必须是下划线C.必须是下划线和字母D.可以是字母.数字或下划线中任一一种
7.有如下程序段
#include"stdio.h"
#include"string.h"
#defineN10
#defineM10
char*find(char(*a)[M],intn)
{char*q;inti;
q=a[0];
for(i=0;i<n;i++)
if(strcmp(a[i],q)<0)q=a[i];
returnq;}
main()
{chars[N][M]={"tomeetme","you","and","he","china"};
char*p;
intn=5;
p=find(s,n);
puts(p);}
则执行后输出的结果为A.A.heB.andC.youD.tomeetme
8.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
9.若主调用函数类型为double,被调用函数定义中没有进行函数类型说明,而return语句中的表达式类型为float型,则被调函数返回值的类型是()。
A.int型B.float型C.double型D.由系统当时的情况而定
10.以下关于结构化程序设计的叙述中正确的是()。
A.结构化程序使用goto语句会很便捷
B.在c语言中,程序的模块化是利用函数实现的
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
11.以下叙述中,不正确的是()。
A.使用staticfloata定义的外部变量存放在内存中的静态存储区
B.使用floatb定义的外部变量存放在内存中的动态存储区
C.使用staticfloatc定义的内部变量存放在内存中的静态存储区
D.使用floatd定义的内部变量存放在内存中的动态存储区
12.在下面的字符数组定义中,哪一个有语法错误()。A.chara[20]=”abcdefg”;
B.chara[]=”x+y=55.”;
C.chara[15];
D.chara[10]=’5’;
13.在以下的叙述中,正确的是()。
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
14.若有定义:“inta=4,b=5;floatx=3.4,y=2.1;”,则下列表达式的值为()。(float)(a+b)/2+(int)x%(int)y;
A.5.5B.55C.5.500000D.55.00000
15.设有宏定义“#defineIsDIV(k,n)((k%n==1)?1:0)”,且变量m已正确定义并赋值,则宏调用“IsDIV(m,5)&&IsDIV(m,7)”为真时所要表达的是()。
A.判断m是否能被5和7整除
B.判断m被5和7整除是否都余1
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
16.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==3‖i==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n",s);程序运行后的输出结果是()。
A.10B.13C.21D.程序进入列循环
17.设有如下函数定义:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句“n=fun(3);”,则函数fun总共被调用的次数是()。
A.2B.3C.4D.5
18.线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构
19.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
20.某二叉树结点的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为()
A.3B.2C.4D.5
二、2.填空题(20题)21.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
22.若有定义:inta=4,b=5,c=6;然后顺序执行下列语句后,变量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
23.下列程序执行后输出的结果是【】。
f(intA)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
24.若下面程序的输出结果是4,请填空。
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
25.下列程序的运行结果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
26.下面函数用来求两个单精度数之和,并通过形参将结果传回,请填空。
voidsub(floatx,floaty,【】z)
{【】=x+y;}
27.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n,p+9);
}
28.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
29.以下程序的输出结果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}
30.若x为血类型,请写出与!x等价的C语言表达式______。
31.以下程序运行后输出结果是【】。
#include<stdio,h>
voidswap(y)
{intt;
t=x;x=y;y=t:printf("%d%d",x,y);
}
main()
{ihta=3,b=4:
swap(a,b);prinff("%d%d",a,b);
}
32.函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请补全程序。
S=1-1/3+1/5-1/7+…+1/(2n+1)
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;
}
【】=s;
}
33.若输入字符串:(图片),则以下while循环体将执行【】次。
while((ch=getchar())=='e')printf("*");
34.以下程序调用invert函数按逆序重新放置a数组元素的值。a数组中的值在main函数中读入。
#include<stdio.h>
#defineN10
invert(s,i,j)
int*s,i,j;
{intt;
if(i<j)
{t=*(s+i);
*(s+i)=(s+j);
*(s+j)=t;
invert(s,【】,j-1);
}
}
main()
{
inta[N],i;
for(i=0;i<N;i++)scanf("%d",a+【】);
invert(a,0,N-1);
for(i=0,i<N;i++)printf("%d",a[i]);
printf("\n")
}
35.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
36.有以下程序,若运行时从键盘输入:18,11<回车>,则程序的输出结果是【】。
main()
{inta,b;
printf("Entera,b:");scanf("%d,%d",&a,&b);
while(a!=b)
{while(a>b)a-=b;
while(b>a)b-=a;
}
printf("%3d%3d\n",a,b);
}
37.设有下列宏定义:
#defineA2
#defineB(A+3)
则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。
38.设有以下定义和语句:
inta[3][2]={1,2,3,4,5},*p[3];
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是【】。
39.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
40.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
三、1.选择题(20题)41.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量
B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D.它们的运算对象可以是char型变量、int型变量和float型变量
42.在微机中,应用最普遍的字符编码是()
A.BCD码B.ASCII码C.汉字骗码D.补码
43.下列叙述中正确的是______。
A.一个逻辑数据结构只能有一种存储结构
B.数据的逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理效率
44.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。
A.只读B.追加C.读或读写D.以上均正确
45.以下程序的输出结果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}
A.99B.520C.1320D.2020
46.第
13
题
设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次
47.需求分析阶段的任务是()
A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能
48.下列程序的输出结果是()。
#include<stdio.h>
main()
{stmctst
{inty,x,z;
};
union
{longi;
intj;
chark;
}un;
printf("%d,%d\n",sizeof(stmctst),sizeof(un));
}
A.6,2B.6,4C.8,4D.8,6
49.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。
A.n-1B.nC.n+1D.2n
50.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()
A.0B.1C.-1D.一个非0值
51.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}
A.12B.23C.14D.32
52.若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
53.下列关于栈的描述中,正确的是()
A.在栈中只能插入元素B.在栈中只能删除元素C.只能在一端插入或删除元素D.只能在一端插入元素,而在另一端删除元素
54.下列能正确定义且赋初值的语句是()。
A.intn1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
55.在软件设计中,不属于过程设计工具的是()。
A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图
56.下列程序的输出结果是______。main(){intk=17;printf("%d,%0,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,Ox11,021D.17,21,11
57.若有定义:inta[4][10];,则以下选项中对数组元素a[i][j]引用错误的是______。(0<=i<4,0<=j<10)
A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)
58.下面程序执行后的输出结果是(小数点后只写一位)______。main(){doubled;floatf;long1;inti;i=f=1=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);}
A.666.06.0B.666.76.7C.666.06.7D.666.76.0
59.下列叙述中正确的是A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,不一定使用break语句
60.下列程序的运行结果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}
A.正数B.负数C.零D.不确定的值
四、选择题(20题)61.对建立良好的程序设计风格,下面描述正确的是
A.程序应简单、清晰、可读性好B.符号名的命名只需符合语法
C.充分考虑程序的执行效率D.程序的注释可有可无
62.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
63.有下列程序:
main()
{inti,j,x=0;
for(i=0,i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++:
}
x++:
}
printf("x=%d\n"x);
}
程序执行后的输出结果是()。
A.x=4B.x=8C.x=6D.x=12
64.
以下程序的输出结果是()。
main
{charst[20]="hello\0\t\\\";
printf("%d%d\n",strlen(st).sizeof(st));
}
A.99B.520C.1320D.2020
65.为了避免嵌套的条件分支语句if—else的二义性,C语言规定:C程序中的else总是与_____组成配对关系。
A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if
66.
67.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
68.下面程序的输出结果是()。
#include<stdio.h>
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
执行后输出结果是()。A.A.a[1][3]=6
B.a[1][3]=-3
C.a[1][3]=2
D.不确定
69.
70.(71)算法分析的目的是______。
A.找出数据结构的合理性
B.分析算法的效率以求改进
C.分析算法的易懂性和可靠性
D.找出算法中输入和输出之间的关系
71.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
A.函数调用可以嵌套和递归
B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参
72.面向对象方法中,不属于对象基本特点的是()。
A.标识唯一性B.分类性C.封装性D.一致性
73.下列对队列的叙述正确的是()。
A.队列按“先进后出”原则组织数据
B.队列属于非线性表
C.队列在队尾删除数据
D.队列按“先进先出”原则组织数据
74.
有以下程序
#include<stdio.h>
main
{inty=9;
for(;y>0;y--)
if(y%3==0)printf("%d",--y);
}
程序的运行结果是()。
A.741B.963C.852D.875421
75.
76.
77.下面程序的运行结果是()。
A.gaeB.gaC.LanguageD.有语法错
78.(27)程序流程图(PFD)中的箭头代表的是()
A.数据流
B.控制流
C.调用关系
D.组成关系
79.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是______。
A.12353514B.12353513C.12343514D.12343513
80.以下叙述中正确的是
A.C语言比其他语言高级
B.C语言可以不用编译就能被计算机识别执行
C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D.C语言出现得最晚,具有其他语言的一切优点
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(m)例如,n中的值为l0,则应输出0.817962。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:将str所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abcdel23,则应输出aBcDe123。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A
2.B
3.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。
4.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。
5.A
6.C
7.B在本题中,首先定义了两个宏N和M,大小都为10,然后定义了一个返回指针的函数find,该函数带有两个形参,第一个为字符型的指针数组,第二个为整型变量,在函数体中,首先定义了一个指针变量q,并将形参中指针数组的第一个元素赋值给q,然后执行for循环,在循环体中,首先执行条件判断语句,其条件为strcmp(a[i],q)<0(strcmp函数的作用是比较两字符串的大小,如果相等,则返回0值,如果参数中的第一个字符串大,则返回正值,否则返回负值),如果结果为真,说明指针数组当前元素所指向的字符串比q所指向的字符串小,此时,程序执行将当前指针数组元素赋值给p,最后返回p,通过上面的分析我们可以看出,find函数的作用是找出指针数组中各元素所指向字符串的最小字符串。
在主函数中,定义了一个二维数组s,并赋了初值,然后定义一个指针变量p,用来存放函数find的返回值。调用函数find的参数分别为s和5,结合形参看find函数,不难知道调用find函数就是找出二维数组s中各字符串中最小的字符串,那么应该为and。此时,指针变量p指向字符串“and”的首地址,然后执行puts(p),完成该字符串的输出。因此,本题正确的答案是B。
8.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。
9.A
10.B滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。
11.B
12.D
13.B
14.C在计算(float)(a4-b)/2时,由于通过强制类型转换将(a+b)转换成了float型,所以应先将2转换成float型,再进行计算,得4.500000。在计算(int)x%(int)y时,先将x和y通过强制类型转换成int型,再进行求余运算,结果为1。又因为4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到5.500000。类型转换的一般规则是:低级类型从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:char→int→unsigned→log→float→double。
15.B逻辑与运算两边运算对象的值都为真时,结果才为真。所以需要m能被5和7整除都余1。故本题答案为B选项。
16.D解析:程序第1次执行for循环时,i=0,两条if语句中的表达式都不成立,执行i++;s+=i;此时i为1,s为1第2次循环,两条if语句中的表达式也不成立,执行i++,s+=i,此时i为2,s为3;……;当i=3时,执行continue,结束本轮循环,不执行i++;继续执行下一轮循环,这样一来i值始终为3,继续continue,无终止条件,进入死循环。
17.B执行调用语句“n=fun(3);”,3被当作实参传递进去,进行了一次调用。3被当作实参传进去后,程序会执行“elsereturnfun(k-1)+1;”,函数被调用了第2次,参数是3-1,也就是2。2被当作参数传进去后,程序会执行“elsereturnfun(k-1)+1;”函数被调用了第3次,参数是2-1,也就是1。1被当作实参传进去后,程序会执行“elseif(k==1)return1;”,函数不再被递归调用。所以最终结果为3次。故本题答案为B选项。
18.A
19.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
20.C
21.参照完整性参照完整性
22.11解析:本题考查的是基本赋值运算符和赋值表达式。a-=(b-5)等价于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1确定为1。
23.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。
24.-2-2解析:题目中定义并初始化了变量k为0,最后输出k的值,要求为4,而在此期间只有k+=-(i+j);这条语句改变了k的值,即要求表达式-(i+j)的值为4。所以,答案应该为-2,因为只有i=j=-2时,表达式-(i+j)的值才为4。
25.2424解析:本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1-24。
26.float**zfloat*\r\n*z解析:C程序中可以通过传送地址的方式在被调用函数中直接改变被调用函数中变量的值,从而达到函数之间数据的传递。
27.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。
28.调试调试
29.C
30.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。
31.43344334解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。
32.-1或-1.0*sn-1或-1.0\r\n*sn解析:由于在对S求和时,相邻两项的符号刚好相反,而在函数fun中没有对数据进行取反的操作,故第—空的目的是对数据进行取反,以保证序列中相邻两项的符号不同。故第—个应填-1或-1.0。在执行完循环体后,要将求和结果通过指针参数的形式传递绐调用fun的函数,故第二空应填*sn。
33.00解析:函数getchar()是从键盘得到用户输入的一个字符。用户输入的第1个字符是a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。
34.i+1i
35.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。
36.1111解析:首先,程序通过scanf()函数将18和11分别读入到变量a和b中。然后,因为a!=b为真,进入外层while循环。此时a>b为真,执行a-=b;,a的值变为18-11=7:接下来b>a也为真,执行b-=a;,b的值变为11-7=4。此时a!=b还是为真,第2次进入外层循环。a>b为真,执行a-=b;,a的值变为7-4=3。b>a为真,执行b-=a;,b的值变为4-3=1接下来a!=b为真第3次进入外层循环。a>b为真,执行a-=b,a的值变为3-1=2。b>a为假,不执行b-=a;;然后第4次进入外层循环,a>b为真,执行a-=b,a的值变为2-1=1。b>a为假,不执行b-=a;此时a和b均为1了,a!=b条件为假,外层循环结束。故本题输出的结果是11。
37.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。
38.a[1][1]a[1][1]解析:p是一个指针数组,p[0]指向数组a[1][0]。*(p[0]+1)代表数组a[1][1]。
39.55解析:分析程序,当a=3;b=4;c=5时,判断语句a>b不成立,所以不执行后面的语句,直接执行“printf('%d\\n',c);”语句,输出c的值,输出结果为5。
40.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。
41.D本题主要考查自加与自减运算符。在C语言中,自加与自减运算符具有以下性质:
(1)自加运算符“++”和自减运算符“--”的运算本身是一种赋值运算,其结果是使运算对象的值增1或减1。
(2)++、--运算符是单目运算符,运算对象可以是整型变量或字符型变量,也可以是实型变量,但不能是常量和表达式。
(3)自加、自减运算符无论是作为前缀还是后缀运算符,对于变量而言,其效果相同,但作为表达式来说,其值不同。
(4)++和--运算符的结合方向是“自右向左”。
(5)不要在一个表达式中对同一个变量进行多次自增或自减运算。可以知道本题正确的答案是D。
42.B
43.D解析:逻辑结构是反映了元素之间的逻辑关系的数据结构,存储结构是逻辑结构在计算机中的存放形式,它们都具有线性结构和非线性结构。逻辑结构有顺序、链接、索引等存储结构,采用不同的存储结构,数据处理的效率不同。
44.D解析:fgetc函数是指从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。fgetc函数的调用形式为:ch=fgetc(fp);。
45.B解析:C语言中字符串是以'0'字符结束的,且strlen()函数计算的是'0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有投有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。
46.C本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。
47.DD)【解析】需求分析是软件定义时期的最后一个阶
\n段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。
48.B解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。
49.C解析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。
50.A解析:文件尾测试函数feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。此时如果读数据,将会出现错误。为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),它的功能是测试fp指向的文件是否到达文件尾。若到达文件尾,返回值为非0,否则返回值为0。在本题中fP指向的某文件还没有到了文件尾,因此返回0。
51.D解析:本题中是一个含有两个结点的循环链表。
C语言中结构体的定义为:
struct结构题类型名
{
成员项表;
};
52.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值;当a为假时,其值等于表达式c的值。
表达式运算过程:第1个表达式:w=2<x=3为真,所以返回w的值,即m=w=2;第2个表达式:m=2<z=5为真,所以返回m的值,即m=2;第3个表达式:w=2<y=4为真,所以返回m的值,即m=2。
53.C\nC)【解析】栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的~端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
\n
54.B解析:C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。在选项A)中在给n1和n2进行赋初值,但变量02没有定义;在选项C)中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C)错误:在选项D)用指数表达式的常量中,字母E后面的数应该为整数,而不应该为小数形式。因此,选项B)正确。
55.D解析:PDL一种设计性语言,用于书写软件设计规约。它是软件设计中广泛使用的语言之一。N-S图是无线的流程图,是算法描述工具;PAD图是问题分析图,它用二维树状结构的图表示程序的控制流,将这种图转换为程序代码比较容易。此3类均是过程设计工具,数据流图(DataFunctionDiagram):又名数据功能图表,简称DFD,是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
56.D
57.B解析:本题中选项B是错误的引用,*(a+i)+j只代表了a[i][j]的地址。
58.A
59.D解析:break语句除了能用于switch语句外,还可以用于循环语句中,因此选项A不正确。在switch语句中,可以使用default来执行所有case均失配时的分支,也可以不使用default,此时若所有case均失配则跳出switch,因此选项B不正确。在switch语句中,每个case的作用就是标出一个执行的起点,当符合某个case时,程序就从该case所标出的起点处开始执行,若没有break语句中断执行的话,程序会一直执行到switch的最后一条语句,而不是碰到下一个case就跳出switch。虽然break与case的配对使用会让所有case分支互不重叠条理明确,但不配对使用在C语言中也是允许的。因此选项C不正确,应该选择D。
60.A解析:本题考查字符串比较函数和两个字符串比较的原则两个知识点,①原则是依次比较两个字符串同一位置的对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。②strcmp(s1,s2)的返回值,当str1<str2时,返回值<0;当str1=str2时,返回值为0;当str1>str2,返回值>0。
61.A具有良好的程序设计风格是一个程序员必不可少的素质。我们在编写程序时要养成良好的程序设计习惯,对程序的要求不仅能够在计算机上正确运行,而且要便于阅读和被别人理解,便于程序的调试和维护。好的程序设计风格有助于提高程序的正确性、可读性、可维护性和可用性。要使程序具有良好的风格,必须做到以下几点:
(1)合理的标识符的命名。由于一个程序中必然有很多标识符,特别是在一个大型复杂的程序中,标识符可能成千上万,对标识符作用的正确理解是读懂程序的前提,如果程序员随意命名标识符,程序的可读性会很差。因此,在命名标识符时要注意其可理解性。
(2)在程序中添加一定的注释。注释是程序员与日后的程序读者之间询通的重要工具,它用自然语言或伪码描述。它说明了程序的功能,特别是在维护阶段,对理解程序提供了明确指导。因此,一定的注释是程序必不可少的组成部分。
(3)程序的编辑风格。为了使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰,便于对程序的理解。
(4)语句的结构。在结构化程序设计中,单个语句结构是编码阶段的任务,语句结构追求简单直接,不能为了追求效率而使代码复杂化。
总之,程序应简单、清晰、可读性和可理解性好。
62.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备维护助理工作总结
- XXX电子科技有限公司员工安全手册(安全操作规程)
- 2025-2030全球汽车主动夜视系统行业调研及趋势分析报告
- 2025年全球及中国台式振动台行业头部企业市场占有率及排名调研报告
- 2025-2030全球监视雷达系统行业调研及趋势分析报告
- 2025-2030全球碳纳米粉行业调研及趋势分析报告
- 2025年全球及中国三重四级杆液质联用仪行业头部企业市场占有率及排名调研报告
- 2025-2030全球DRM数字版权保护技术行业调研及趋势分析报告
- 2025年全球及中国细胞活力检测试剂盒行业头部企业市场占有率及排名调研报告
- 2025-2030全球可重复使用垫料气囊行业调研及趋势分析报告
- 湘教版七年级上册数学期末考试试卷带答案
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 中国游戏发展史课件
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- 第三单元名著导读《骆驼祥子》整本书阅读教学设计+2023-2024学年统编版语文七年级下册
- 工程数学试卷及答案
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
- 第01讲 直线的方程(九大题型)(练习)
- 《基础会计》教学课件-整套教程电子讲义
- 人教版七年级上册数学全册课时练习带答案
- GB/T 44143-2024科技人才评价规范
评论
0/150
提交评论