版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年山西省临汾市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}
A.sum=18B.sum=10C.sum=9D.sum=25
2.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的运行结果是()。
A.acc,bbxxyy
B.accbbxxyy,bbxxyy
C.accxxyy,bbxxyy
D.accxyy,bbxxyy
3.对一个有A,B,C,D随机组成的序列进行哈夫曼编码,据统计,各个元素的概率分别为:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,请问该编码的平均期望编码长度为()bits。
A.1.45B.1.74C.1.85D.1.92
4.若有定义“inta,b;”,通过语句“scanf(“%d;%d,”&a,&b)能把整数3赋给变量a、5赋给变量b的输入数据是()。
A.35B.3,5C.3;5D.35
5.以下叙述中正确的是()。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
C.每个C程序必须在开头包含预处理命令行:#include
D.C语言的预处理不能实现宏定义和条件编译的功能
6.执行下面的程序段后,变量k中的值为()。intk=3,s[2];s[0]=k;k=s[1]*10;
A.不定值B.33C.30D.10
7.表达式9!=10的值为()。
A.非零值B.trueC.0D.1
8.在多媒体计算机系统中,不能用以存储多媒体信息的是A.光缆B.软盘C.硬盘D.光盘
9.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置()(脚注(10)表示用10进制表示)。
A.688B.678C.692D.696
10.以下叙述中错误的是()。
A.在一个函数内的复合语句中定义的变量在本函数范围内有效
B.在一个函数内定义的变量只在本函数范围内有效
C.在不同的函数中可以定义相同名字的变量
D.函数的形参是局部变量
11.下面函数的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}
A.求字符串的长度B.比较两个字符串的大小C.将字符串x复制到字符串y中D.将字符串x连接到字符串y后面
12.有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是
A.A.331
B.41
C.2
D.1
13.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。
A.线性结构B.树形结构C.图状结构D.集合
14.下列程序的输出结果是()main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5
15.以下选项中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
16.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。
A.x=10.200000y=-3.200000
B.x=6.700000y=-13.700000
C.x=7.000000y=-3.500000
D.x=13.400000y=-7.000000
17.
18.具有20个结点的二叉树,其深度最多为_______。
A.4B.5C.6D.20
19.深度为5的二叉树至多有C个结点。
A.16B.32C.31D.10
20.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。
A.两个语句都是将变量a的值赋予变量P
B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D.两个语句都是使P指向变量a
二、2.填空题(20题)21.有以下程序段:
inta[l0]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是【】。
22.有以下程序:
intsub(intn){return(n/10+n%10);}
main()
{intx,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若运行时输入:1234<回车>,程序的输出结果是【】。
23.软件测试方法中,黑盒测试法和白盒测试法是常用的方法,其中黑盒测试法主要是用于测试【】。
24.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组b。请填空。
#include<stdioh>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(i;0;i<9;i++)
{if(i%4==0)primf("\n");
printf("%3d",b[i];
}
}
25.下面程序的运行结果是【】。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
26.面向对象的模型中,最基本的概念是对象和______。
27.函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include<stdio.h>
intsstrcmp(char*s,char*t)
{
while(*s&&*t&&*s==【】)
{s++;t++;}
rerurn【】;
}
28.在关系模型中,若属性A是关系R的主码,属性A的取值不能为空,称为约束。
29.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。
30.有以下程序:
voidfun(int*a,inti,intj)
{intt;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
fun(a,i,j);
}
}
main()
{intx[]=(2,6,1,8),i;
fun(x,0,3);
for(i=0;i<4;i++)printf("%2d",x[i]);
}
程序运行后的输出结果是【】。
31.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。
intb,c;floata;
scanf("%f,%d,c=%d",&a,&b,&c)
32.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
intmystrlen(char*str)
{inti;
for(i=0;【】!='\0';i++);
return(【】);
}
33.若a的值为1,则表达式!a‖++a的值是______。
34.以下程序用来输出结构体变量student所占存储单元的字节数,请填空。
structst
{charname[20];doublescore;
};
main()
{structststudent;
printf("studentsize:%d\n",sizeof(【】));
}
35.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。
36.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。
37.下面程序有两个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);
}
38.设有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为______。
39.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
voidfunc(intx,inty,【】z)
{*z=x+y;}
40.【】是从二维表列的方向进行的运算。
三、1.选择题(20题)41.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是
A.0B.9C.6D.8
42.若有定义:intx=0,*p=&x;则语句printf("%d\n",*p);的输出结果是()。
A.随机值B.0C.x的地址D.p的地址
43.以下程序的功能是()#include<stdio.h>main(){FILE*fp1;*fp2;fp1=fopen("filel","r");fp2=fopen("file2","w");while(!feof(fp1))fputc(fgetc(fp1),fp2);fclose(fp1);fclose(fp2);}
A.将磁盘文件的内容显示在屏幕上
B.将两个磁盘文件合为一个
C.将一个磁盘文件复制到另一个磁盘文件中
D.将两个磁盘文件合并后送屏幕
44.下列程序中c的二过值是()。chara=2,b=4,c;c=a^b>>2;
A.11B.10100C.11100D.11000
45.有以下程序:main(){inti=10,j=1;printf("%d,%d\n",i--,++j);}执行后输出结果是()。
A.9,2B.10,2C.9,1D.10,1
46.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}该程序的输出结果是
A.987B.876C.8765D.9876
47.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。
A.125B.n/2C.nD.n+1
48.在函数scanf的格式控制中,格式说明的类型与输入项的类型应该对应匹配。如果类型不匹配,系统将()。
A.不予接收B.并不给出出错信息,但不能得到正确的数据C.能接收到正确输入D.给出出错信息,不予接收输入
49.下列关于字符串的说法中错误的是
A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B.′\0′作为标志占用存储空间,计入串的实际长度
C.在表示字符串常量的时候不需要人为在其末尾加入′\0′
D.在C语言中,字符串常量隐含处理成以′\0′结尾
50.运行以下程序后,如果从键盘上输入china#<回车>,则输了结果为______。#include<stdio.h>main(){intv1=0,v2=0;charch;while((ch=getchar())!='#')switch(ch){case'a':case'h':default:vi++;case'0':v2++;}printf("%d,%d\n",v1,v2);}
A.2,0B.5,0C.5,5D.2,5
51.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);程序执行后的输出结果是()。
A.45B.50C.60D.55
52.下列程序的输出结果是______。main(){intx=10,y=10,i;for(i=0;x>8;y=++i)printf("%d,%d",x--,y);}
A.10192B.9876C.10990D.101091
53.不是面向对象程序设计的可维护性的优点的是()
A.用面向对象的方法开发的软件稳定性比较好B.易于移植C.易于和调试D.用面向对象的方法开发的软件比较容易理解
54.若定义了以下函数:voidf(…){…*p=(double*)malloc(10*sizeof(double));…}p是该函数的形参,要求通过p把动态分配存储单位的地址传回主调函数,则形参p的正确定义应当是()
A.double*pB.float**pC.double**pD.float*p
55.以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)
56.C语言源程序名的后缀是A..exeB..CC..objD..cp
57.在C语言中,不正确的int类型的常数是______。
A.32768B.0C.37D.0xAF
58.若有程序:fun(inta,intB){staticintc=0;c+=a+b;returnc;}main(){intx=5,y=3,z=7,rr=fun((y,x+y),z);r=fun(x,y);printf("%d\n",r);}上面程序的输出结果是_______。
A.23B.15C.19D.18
59.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
60.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sized(a);j=stden(a);printf(“%d,%d\n”,i,j);}程序运行后的输出结果是
A.9,9B.8,9C.1,8D.9,8
四、选择题(20题)61.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
62.
63.以下关于结构化程序设计的叙述中正确的是()。
A.一个结构化程序必须同时由顺序、分支、循环三种结构组成
B.结构化程序使用goto语句会很便捷
C.在C语言中,程序的模块化是利用函数实现的
D.由三种基本结构构成的程序只能解决小规模的问题
64.有以下程序:
程序运行后的输出结果是()。
A.120B.11C.6D.21
65.程序流程图中带有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系
66.
67.若有定义:“doublea=22;inti=0,k=18;”,则不符合C语言规定的赋值语句是()。
A.a=a++,i++;
B.i=(a+k)<=(i+k);
C.i=a%11;
D.i=!a;
68.
69.以下程序的输出结果是()。
A.678910
B.13579
C.12345
D.62345
70.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。
A.\bB.\tC.\vD.\f
71.下面的函数调用语句中func函数的实参个数是()。func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3B.4C.5D.8
72.
73.
74.以下程序的功能是
#include<stdio.h>
main()
{FILE*fp1;*fp2;
fp1=fopen("file1","r");
fp2=fopen("file2","w");
while(!feof(fp1))
fputc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
}
A.将磁盘文件的内容显示在屏幕上
B.将两个磁盘文件合为一个
C.将一个磁盘文件复制到另一个磁盘文件中
D.将两个磁盘文件合并后送屏幕
75.(33)有以下程序段
inti,n;
for(i=0;i<8;i++)
{n=rand()%5;
switch(n)
{case1:
case3:printf("%d\n",n);break;
case2:
case4:printf("%d\n",n);continue;
case0:exit(0);
}
printf("%d\n",n);
}
以下关于程序段执行情况的叙述,正确的是
A)for循环语句固定执行8次
B)当产生的随机数n为4时结束循环操作
C)当产生的随机数n为1和2时不做任何操作
D)当产生的随机数n为0时结束程序运行
76.
77.下列叙述中正确的是()。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对
78.以下对一维数组c进行正确的定义初始化的语句是
A.intc[10]=0;B.intc[10]={0}*10;
C.intc[1]={0,0,0,0,0,0,0};D.intc[10]={0};
79.下面概念中,不属于面向对象方法的是()。A.对象B.继承C.类D.过程调用
80.下列语句中,正确地执行当i等于5时执行一些语句的条件语句是()。
A.if(i==5)B.ifi=5thenC.ifi=5D.ifi==5then
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。
例如,若输入“Ab,cD”,则输出“AB,CD”。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!
六、程序设计题(1题)82.编写函数fun(),其功能是:求SS所指字符串中指定字符的个数,并返回此值。例如,若输入字符串“123412132”,输入字符为“1”,则输出3。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:
参考答案
1.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。
2.B在函数fun中,前一个while循环的作用是,如果形参指针t所指内容不为0,则让t增1,直到它指向0;后一个while循环的作用是,将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数strcat。主函数中使用fun将数组aa中的字符串连接到数组ss中原有字符串之后,所以执行完后,ss中的字符串为“accbbxxyy”。程序最后输出的结果是accbbxxyy,bbxxyy。故本题答案为B选项。
3.C
4.C输入数据的格式必须与scanf的格式控制字符串完全匹配。函数中非格式字符需要原样输入,所以输入时必须在3和5之间输入“;”。故本题答案为C选项。
5.B本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。
6.A解析:定义数组时,没有对s[1]进行初始化,因此s[1]的值不确定,所以k=s[1]*10的值也不确定。
7.D
8.A解析:光缆是传输多媒体信息的通道,不能用以存储多媒体信息。
9.C
10.A在一个函数内的复合语句中定义的变量在本复合语句块范围内有效,选项A错误,其他选项正确。本题答案为A选项。
11.A
12.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。
13.A
14.B解析:本题的执行过程是:
在While循环中,
比较xyz
第—次:3>0&&1<5142
第二次:2>0&&2<5231
第三次:1>0&&3<5320
判断条件“z-->0”不成立,也不执行“i+=2”语句,循环结束,因此,输出结果为3,2,-1。
15.C解析:C语言中字符常量是以单引号括起来的单个字符,或为以“\\”与三位八进制数值或两位十六进制数值代替单个字符。
16.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。
17.D
18.D
19.C
20.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。
21.99解析:p是一个指针变量,指向数组a的元素a[3],所以b=p[5]=a[5+3]=a[8]=9。
22.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。
23.软件外部功能软件外部功能
24.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i]小即可实现将一个数组的前项和后项之和存入另一数组。
25.1-21,-2解析:考查嵌套的循环结构。题中外层while循环的循环条件是\ue008y--!=-1\ue009,即y>=0;内层do厀hile循环的循环条件是y--,即y-->0,y>=1。
26.类类
27.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:比较两个字符串的大小方法是:从第一个字符开始依次向后比较,若对应的字符相等则接着比较下一个字符,一直到两个字符串中对应字符不等,或者有一个为“\\0”,此对应字符的ASCII码大的字符串就大。故循环条件是*s和*t不为“\\0”,且*s和*t相同,第一处应填“*t”或其他等价形式。根据题意可知第二处应填“*s-*t”或其等价形式。
28.实体完整性实体完整性
29.x/y=%dx/y=%d解析:本题考查prinff语句的输出格式。printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf('<格式化字符串>”,<参最表>)其中,格式化字符串包括两部分内容。一部分足正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一
30.81628162解析:第一次调用函数fun时,x[0]=2、xL1]=6、x[2]=1、x[3]=8,执行完函数fun后,x[0]与x[3]的值互换,即x[0]=8、x[1]=6、x[2]=1、x[3]=2;第二次调用函数fun时,i=1、j=2,故将x[1]与x[2]的值互换,即得x[0]=8、x[1]=1、x[2]=6、x[3]=2。
31.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。所以此题中输入数据的形式是5.04,c=3。
32.str[i]或str+iistr[i]或str+i\r\ni
33.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。
34.structst或studentstructst或student
35.前后件关系前后件关系解析:在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。
36.—对多—对多解析:实体之间的联系可以归结为一对一、一对多与多对多。如果一个学校有许多学生,而一个教师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系。
37.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。
38.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
39.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。
40.投影投影解析:在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交,差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。
41.C解析:函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。
42.B解析:本题考查的是指针的运用。语句intx=O,*p=&x;定义7一个int型变量x并初始化为0,同时还定义了一个int型指针p指向变量x。语句ptintf('%d\\n',*p);是按十进制整数格式输出指针p所指向的内容,即x的值0。故本题应该选择B。
43.C
44.A解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。
45.B解析:++、--运算符在变量之前是先使变量的值加1或减1,然后再使用变量的值;如果在变量之后则先使用变量之前的值,再把变量的值加1或减1。显然,程序中表达式i--的值为10,++j的值为2,所以最后输出的值为10和2,故B选项为所选。
46.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。
47.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。
48.B解析:在scanf函数的格式控制中,格式说明的类型与输入项的类型必须一一对应匹配,如不匹配将导致数据输入出现错误,但是系统并不报错。
49.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。
50.C
51.C解析:静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在main函数中调用fun(a,5),执行for循环得到sum=0+a[0]+a[1]+a[2]+a[3]+a[4]=15;然后调用fun(b,4),因为sum为静态变量,再次调用时sum保留上次函数调用结束时的值,所以sum:15+b[0]+b[1]+b[2]+b[3]=45;返回sum的值,main函数中输出的s=15+45=60。
52.D
53.B
54.C
55.D解析:feof函数的功能是判断文件指针是否已指到了文件末尾,是则返回非零值,否则返回零;ftell函数的功能是得到流式文件中文件指针的当前位置,用相对于文件开头的位移量来表示;fgetc函数的功能是从指定文件读人一个字符;rewind函数的功能是使文件指针重新返回文件的开头。fseek函数用于改变文件的位置指针,调用形式为:fseek(文件类型指针,位移量,起始点),“起始点”取值0(SEEK_SET)、1(SEEK_CUR)、2(SEEK_END)分别表示文件开始、文件当前位置、文件末尾。“位移量”是以“起始点”为基点,向前移动的字节数。函数fseek(fp,OL,SEEK_SET)的作用是将位置指针移到文件头,所以选项D)正确。
56.B解析:C语言源程序的后缀为.c;经过编译得到的目标程序文件的后缀为.obj;再将目标程序文件链接后得到可执行文件的后缀为.exe。故本题应该选择B。
57.A解析:C语言中int类型的常数的范围是:-32768~32767。C整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项A超出范围,不正确。
58.A解析:static声明的外部变量只限于被本文件引用,而不能被其他文件引用。用static来声明一个变量的作用有:①对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在;②全部变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。调用第一个fun,其两个实参的值为(3,5+3)与7即8与7,在函数fun执行结束返回15。第二次调用fun时,由于static为静态类型,其值保留,执行fun(5,3)后,其返回值为23,故选A。
59.A解析:本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。
60.D解析:本题中首先定义了字符数组a,由于它的长度省略,所以其长度由初值个数确定,为9。接着将sizeof()函数返回的值赋给i(sizeof()函数的作用是返回运算对象占用的字符数),所以i值为9;然后将strlen()函数的返回值赋给j(strlen()函数的作用是返回字符串的长度,不包括字符串的结束标记'\\0'),所以j值为8,所以最后输出的i,j的值为9,8。
61.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
62.C
63.C解析:结构化程序设计是指将待开发的软件系统划分为若干个相互独立的模块,与具体的语句结构无关。Goto语句的滥用会导致程序的可读性降低。三种基本结构构成的程序依然可以解决大规模的问题,只是不利于复用。
64.Dfun函数中的变量X为静态局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的值。也就是说,如果多次调用fun函数,x的定义只在第一次调用时有效,从第二次调用开始,x的定义相当于不存在,直接使用上次X的值。fun函数被调用了5次,每次调用后的返回值累加到s上。5次调用后,x的值为6,8的值为1+2+3+4+5+6=21。因此D选项正确。
65.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;
表示逻辑条件。
66.B
67.D
68.B
69.Achange函数的功能是将数组中的第6个元素值赋给第l个元素。第一次调用后,x[0]=x[5]=6。第二次调用实际是以x的第2个元素作为数组首元素,所以调用结束时x[1]=x[6]=7。后三次调用分别将x[2]、x[3]、x[4]赋值为8、9、10。
70.C本题考查C语言转义字符的含义。我们归类了常用的转义字符及其含义,如下,根据这些不难选出正确答案
转义字符的意义:\n回车换行、\t横向跳到下一制表位置、\v竖向跳格、\b退格、\r回车、\f走纸换页、\\反斜线符、“\”\′单引号符、\\ddd1~3位八进制数所代表的字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度国际会议及展览活动宣传推广合同3篇
- 二零二五年度建筑管道系统安装服务合同2篇
- 2025年度个人委托新能源储能技术投资合同3篇
- 商铺售后返租合同中的履约保障与争议解决(2025年版)2篇
- 二零二五年度建筑玻璃幕墙工程劳务分包及安全评估协议3篇
- 2025年度气体灭火系统研发与生产合作协议
- 二零二五年度城市绿化带植物病虫害防治合同3篇
- 2025版压路机设备翻新改造与租赁合同范本3篇
- 二零二五年度商用机动车买卖合同范本3篇
- 高速公路交通安全宣传教育活动合同(二零二五版)3篇
- 场地委托授权
- 2024年四川省成都市龙泉驿区中考数学二诊试卷(含答案)
- 项目工地春节放假安排及安全措施
- 印染厂安全培训课件
- 红色主题研学课程设计
- 胸外科手术围手术期处理
- 装置自动控制的先进性说明
- 《企业管理课件:团队管理知识点详解PPT》
- 移动商务内容运营(吴洪贵)任务二 软文的写作
- 英语词汇教学中落实英语学科核心素养
- 《插画设计》课程标准
评论
0/150
提交评论