版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年甘肃省白银市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.微型计算机的运算器、控制器及内存储器组合在一起,称之为()
A.ALUB.CPUC.MPUD.主机
2.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
3.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A.scanfB.getcharC.getsD.getc
4.若x=10010111,则表达式(3+(int)(x))&(~3)的运算结果是()。
A.10011000B.10001100C.10101000D.10110000
5.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()
6.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}
A.3B.4C.5D.6
7.下列选项中不是字符常量的是()。
A.'\v'B.'\x2a'C.'a'D."\0"
8.设有一个栈,元素依次进栈的顺序为A、B、C、D、E。下列()是不可能的出栈序列。
A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A
9.若有定义“inta=1234,b=-5678;”,用语句“printf("%+-6d%+-6d",a,b);”输出,以下正确的输出结果是()。
A.+1234-5678(中间有一个空格,最后有一个空格)
B.+1234-5678(最前面有一个空格,中间有一个空格)
C.+-1234+-5678(最前面和最后均无空格)
D.1234-5678(中间有两个空格,最后有一个空格)
10.以下叙述中错误的是()
A.在C程序中,APH和aph是两个不同的变量
B.C程序中的变量,代表内存中的一个存储单元,它的值可以根据需要随时修改
C.在C程序中,无论是整数还是实数,都能准确无误地表示
D.在C程序中,一个正整数可以用十进制、八进制和十六进制的形式来表示
11.对于n个元素,下列哪种操作时间复杂度不是O(nlogn)()
A.凸包计算B.LC搜索C.有序序列数字查找D.基于比较的排序
12.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
13.
14.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。
A.7.5B.31.5C.程序有错,无输出结果D.14.0
15.
16.带头结点的双向循环链表L为空的条件是()。
A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L
17.一个顺序表的第一个元素的存储地址是100,每个元素的长度为5,则第7个元素的地址是()。
A.130B.125C.120D.135
18.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序运行后的输出结果是()。A.0B.1C.2D.3
19.设一棵二叉树有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为()
A.12B.13C.14D.15E.16F.17
20.下面叙述中错误的是()。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
二、2.填空题(20题)21.函数调用语句:“fgets(buf,n,fp);”从fp指向的文件中读入,n个字符放到buf字符数组中,函数返回值为______。
22.若有以下定义和语句:
intw[10]={23,54,10,33,47,98,72,80,61},*p;
p=w;
则通过指针p引用值为98的数组元素的表达式是【】。
23.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
24.下面程序的运行结果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
25.已知字符A的ACSII码值为65,以下语句的输出结果是______。
charch='B';
printf("%c%d\n",ch,ch);
26.要求使下列程序输出5个整数,请填空。
for(i=0;i<=______;printf("%d\n",i+=2));
27.以下程序的输出结果是【】。
main()
{inta=177;
printf(“%o\n”,A);
}
28.下面程序的运行结果是【】。
#include<stdio.h>
fun(intt[],intn)
{inti,m;
if(n==1)returnt[0];
else
if(n>=2)|m:fun(t,n-1);returnm;}
}
main()
{inta[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
29.数据结构分为逻辑结构与存储结构,线性链表属于【】。
30.一个模块直接调用的其他模块的模块个数称为______。
31.若x和n均是int型变量,且x=12,n=5,则执行y=x%=(n%=2)表达式后y的值为()。
32.设当前盘为A盘,当前系统提示符为“>”在不改变当前盘情况下,显示C盘的当前目录路径,应使用命令【】。
33.当输入1、3、2时,程序运行的结果为【】。
#include<math.h>
main()
{floata,b,c,disc,x1,x2,p,q;
do
{scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
}while(disc<=0);
p=-b/(2*a);q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("\nx1=%6.2f;x2=%6.2f\n",x1,x2);
}
34.以下程序运行后的输出结果是【】。
#include<stdio,h>
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=c;c=t;
if(a<e&&b<c)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,e);
}
35.以下程序输出的最后一个值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
36.问题处理方案的正确而完整的描述称为______。
37.以下程序中select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#defineN3
#defineM3
select{inta[N][M],int*n;
{inti,j,row=l,eolum=l;
for(i=0;i<N;i++
forj=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j:}
*n=______;
return______;
}
main()
{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj
max=select(a,&n);
printf("max=%d,line=%d\n",max.n;
}
38.存储300个16×16点阵的汉字信息需要【】字节。
39.定义长度为12的数组,下面四种方法中正确的有【】。
①intx[12];②intn=12;③constintn=12;④intx[]={1,2};
intx[n];intx[n];
40.以下程序的运行结果是______。
#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=%51d\n",k);}
三、1.选择题(20题)41.以下能正确定义字符串的语句是()。
A.charstr[]={'\064'};
B.charstr="kx43";
C.charstr=";
D.charstr[]="\0";
42.下面程序输出的结果是______。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
43.下列4组选项中,均不是C语言关键字的选项是______。
A.definesumtype
B.getccharprintf
C.includescanfcase
D.whilegopow
44.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()
A.控制流B.加工C.存储文件D.源和潭
45.以下程序的输出结果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,21
D.11,41,21.12,42,22
46.若有以下定义和语句:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是______。
A.p+=2,*(p++)B.P+=2,*++pC.P+=3,*p++D.P+=2,++*p
47.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);为使程序不陷入死循环,从键盘输入的数据应该是______。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
48.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
49.在说明语句:int*f();中,标识符f代表的是
A.一个用于指向整型数据的指针变量
B.一个用于指向一维数组的行指针
C.一个用于指向函数的指针变量
D.一个返回值为指针型的函数名
50.执行以下语句的结果为______。intx=3,y;int*px=&x;y=*px++;
A.x=3,y=4B.x=3,y=3C.x=4,y=4D.x=3,y不知
51.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A.INPUTx、v、z;
B.scanf("%d%d%d",&x,&y,&z);
C.scanf("%d%d%d",x,y,z);
D.read("%d%d%d",&x,&y,&z);
52.以下正确的程序段是
A.cgarstr[20];scanf("%s",&str);
B.char*p;scanf("%s",p);
C.charstr[20];scanf("%s",&str[2])
D.charstr[20],*p=str;scanf("%s",p[2]);
53.若已知a=10,b=20,则表达式!a<b的值为______。
A.10B.1C.20D.30
54.若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。
A.intB.int*C.(*int)D.(int*)
55.下列程序的输出结果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
56.若有语句:char*line[5];,以下叙述中正确的是
A.定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C.定义line是一个指针数组,语句中的。号称为间址运算符
D.定义line是一个指向字符型函数的指针
57.若x=3,y=z=4,则下列表达式的值分别为()(1)(z>=y>=x)?1:0(2)y+=z,x*=y
A.024B.18C.08D.112
58.能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式是
A.a>=10ora<=0
B.a>=0|a<=10
C.a>=10&&a<=0
D.a>=10||a<=0
59.用树形结构来表示实体之间联系的模型称为()。
A.关系模型B.层次模型C.网状模型D.数据模型
60.已有定义int(*q)(),指针q可以()。
A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型
四、选择题(20题)61.
有以下程序:
main
{union
{charch[2];
intd;
}s;
d=0x4321;
printf("%x,%x\n",S.ch[0],S.ch[l]);
}
在16位编译系统上,程序执行后的输出结果是()
A.21,43B.43,21C.43,00D.21,00
62.下列程序中c的二进制值是()。chara=2,b=4,c;c=a^b>>2;A.00000011B.00010100C.00011100D.00011000
63.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。A.
B.
C.
D.
64.
65.有以下程序:
#include<stdio.h>
main()
{chara[5][10]={"one","tw0","three","four","five"};
inti,j;
chart:、
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[i][O]>a[j][0])
{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)
puts(a[1]);
}
程序运行后的输出结果是()。
A.fwo
B.fix
C.two
D.owo
66.下列叙述中正确的是()。
A.一个逻辑数据结构只能有一种存储结构
B.逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率
67.下列说法正确的是()。
A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
B.在c语言中,数组元素的个数可以不确定,允许随机变动
C.在C语言中,数组元素的数据类型可以不一致
D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数
68.以下定义语句中正确的是()。
A.inta=b=0;
B.charA=65+1,b=’b’;
C.floata=1,*b=*a,*C=&b;
D.doublea=0.0;b=1.1;
69.下列程序的输出结果是()。
char*p1="abcd",*p2="ABCD",str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A.xyabcABB.abcABzC.ABabczD.xycdBCD
70.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
71.在长度为n的有序线性表中进行顺序查找,最坏情况下需要比较的次数是
A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)
72.有如下程序段
#include"stdio.h"
typedefunion
{longx[2];
inty[4];
charz[8];
}atx;
typedefstructaa
{longx[2];
inty[4];
charz[8];
}stx;
main()
{printf("union=%d,structaa=%d\n",sizeof(atx),sizeof(stx));}
则程序执行后输出的结果是
A.union=8,structaa=8
B.union=8,structaa=24
C.union=24,structaa=8
D.union=24,structaa=24
73.下列排序方法中,最坏情况下比较次数最少的是()。
A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序
74.
75.设有定义:
76.
77.
78.
79.
80.算法的空间复杂度是指()。
A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法需要的内存空间
五、程序改错题(1题)81.写出下列程序的运行结果。
fun(inta,intb)
{if(a>b)return(a);
Elsereturn(b);}
main
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#defineM4#include<stdio.h>intfun(inta[][m]){}voidmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};printf(“max=%d\n”,fun(arr));}
参考答案
1.D
2.A解析:在C语言中,动态存储区域中存放的变量在使用时才分配内存空间,函数调用时返回的地址和自动类局部变量等存放在动态存储区域中。auto变量和register变量都属于自动类局部变量,因此选项A正确。static说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern说明的变量为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。
3.C解析:C语言提供了许多输入函数,其中有:getchar(输入字符)、scanf(格式输入)和gets\u3000(输入字符串)等。题目要求输入的是字符串,所以可以排除getchar,而且要求输入的字符串中包含空格,而scanf函数默认将输入的空格字符作为分割符,所以空格不会被输入,故可排除scanf。getc的作用是从文件中输入一个字符,故也不可取。gets函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择C。
4.A解析:本题主要考查运算表达式的运算。3+(int)(x)的结果是10011010,~3的结果是11111100,二者逻辑与得10011000。
5.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指定的文件中读入一个字符,并把它作为函数值返回。
6.B解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。
7.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。
8.C
9.Aprintf函数参数包括格式控制字符串和输出参数,其中格式控制字符串中除了格式控制字符外,其他字符原样输出。本题中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之间,“+”号表示输出的数字带正负号号表示输出数据向左对齐,“6”表示输出宽度,如果输出数据的宽度不够6,那么左对齐,右边补空格。所以本题输出+1234-5678(中间有一个空格,最后有一个空格)。本题答案为A选项。
10.C
11.C
12.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。
13.D
14.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。
15.A
16.D
17.A
18.D
19.B
20.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。故答案为A选项。
21.buf的首地址buf的首地址解析:考查fgets()函数的功能,fgets()函数用来从文件中读入字符串。调用格式为:fgets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fgets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。
22.*(p+5)
23.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。
24.x=11x=11解析:在对无符号数的右移是高位补0。
25.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。
26.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。
27.261261解析:在控制格式符中“o”代表的是将数据按八进制数输出,十进制数的177代表的八进制数是261。
28.1111解析:main函数调用fun函数时,将10赋给n,形参数组t与实参数组a共用一段内存空间。执行if-else语句时,n=10,所以执行else子句。由于n>=2成立,执行m=fun(t[0],9),递归调用fun函数,m=fun(t[0],8),m=fun(t[0],7),…,m=fun(t[0],2),m=fun(t[0],1),当n=1时满足if(n=1)的条件,执行return语句,返回数组首地址指向的值t[0],所以答案为11。
29.存储结构
30.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。
31.00解析:n%=2等价于n=n%2,结果为1:x%=1等价于x=x%1,结果为0。
32.CDC:(CD与C:中间至少要有一个空格)CDC:(CD与C:中间至少要有一个空格)
33.x1=-1.00;x2=-2.00
34.45994599解析:要注意每条证语句后面是三条语句,而不是一条语句。执行第一条if语句时,条件表达式不成立,执行a=c;c=t;,此时a=5,c=99;执行第二条if语句时,条件表达式成立,执行t=b;b=a;a=t;交换a,b的值,输出结果为4,5和99。
35.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:
①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。
③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋初值)
④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。
本题中函数的功能是:与for语句一起求一个整数的阶乘。
36.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。
37.rowa[row][colum]row\r\na[row][colum]解析:通过对题意的分析,在select()函数中,变量row的作用是用来记录最大元素的行下标,column的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colmnn中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][columa]作为函数值返回。
38.800800解析:一个16x16点阵的字形码需要16x16/8=32字节的存储空间,所以300个汉字信息需要9600个字节。
39.①③
40.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。
41.D解析:字符串必须以‘\\0’为结束符。
42.A解析:条件表达式的一般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。
43.A解析:本题各选项中的关键字只有三个:char,case,while。
44.AA)【解析】数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。
45.B解析:尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次,应注意表达式。(z++)的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。注意:指针作为参数的函数调用的执行过程。
46.A解析:引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。B、C的内容为a[3],D将a[2]前自加,结果为4。
47.D解析:do-while循环是先执行循环体再进行条件判断,当执行了一次循环以后,t变成了-1,每次循环后t都减2,t将永远为负奇数,又循环结束的条件是n=t,因此只有当n为负奇数时才不会陷入死循环。
48.A解析:C语言规定,赋值号的右边可以是一个赋值表达式.因此选项C)、选项D)正确:在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式:选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。
49.D解析:带回指针值的函数,其一般定义形式为:
类型标识符*函数名(参数表);
例如;int*f(x,y);
其中,f是函数名,调用它以后能得到一个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧分别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。
50.B解析:++和*的运算优先级别相同,且从右到左结合,y=*px++也就是y=*(px++),++运算只对px有效。这里++是后置的,应当先将px所指向的变量*px(也就是变量x)的值赋给变量y,然后px才增1。
51.B解析:scanf函数的一般格式是:
scanf(格式控制,地址表列)
该格式中,地址表列中应是变量地址,而不是变量名。注意:调用putchar和getchar函输出和输入字符。
52.C解析:scanf输入字符串有一点要注意的是,格式控制串必须用%s。注意:gets函数和puts函数的作用。
53.B解析:!的优先级高于<,!a的值为0,0<b显然成立,该表达式的值为1。
54.D解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。
55.B解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。
56.A解析:C语言中[]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的“*”结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。
57.A
58.B解析:条件表达式本题考查C语言的逻辑表达式及逻辑或('||')运算符的用法。''表示或的意思,'|'是按位或的意思,'&&'是并且的意思,C语言中没有'or'。
59.B解析:在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。目前常用的数据模型有3种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。所以,本题的正确答案是B。
60.A解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。
61.A
\ns是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。
62.A本题主要者查右移运算和按位异或。把b化为二进制数为00000100,右移两位后为00000001,a的二进制为00000010,两者异或为00000011。
63.A表达式k=a>b?(b>c?1:0):0表示:如果(a>b)条件为真,则k取值(b>c?1:0),否则k取值0;当a>b的情况下,如果b>c,则k值为1,否则为0。所以该表达式与选项A)功能相同。
64.D
65.A\nFor循环完成的功能是把二维数组a的第一列的字母按从小到大排序,其他列的字母不变。
\n
66.D数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。
67.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。
68.BA选项语句中b变量还没有定义不能直接用于给a变量赋值。c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春季工厂设备防火安全培训
- 农业电商发展应用:策略、实践与未来趋势
- 2025 高中信息技术数据与计算之数据仓库的 ETL 数据转换规则优化课件
- 2026年第三代半导体碳化硅八英寸衬底国产化突破路径
- 2026年长江经济带多式联运中心建设与水运长三角提升方案
- 2026年液流电池人才需求与培养体系构建
- 2026年数据经纪人试点示范项目申报
- 2026年数据资产评估国际比较研究
- 病情告知规范与技巧课件
- 2026年突发事件应急预案编制导则第1部分通则GB T 46793.1解读
- 呼吸与危重症患者实时监护CDSS方案
- 南京工业大学研究生学位论文格式的规定
- 研发技术劳务合同范本
- 连云港市宁海街道社区工作者招聘考试真题
- 眼科患者围手术期护理要点
- 青贮机械出租合同范本
- 初中历史选择题专项训练200题
- 《利用勾股定理解决最短路径问题【转化思想】》专题课件
- 口腔科合理用药知识培训课件
- 教师政治站位方面存在的问题及整改措施
- 2025至2030中国水务行业发展分析及投资前景与战略规划报告
评论
0/150
提交评论