(21)以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到s>1000为止。
程序运行后,不能得到正确结果,以下修改方案正确的是( )。
A.把while(s>lOOO);改为while(s<=1000);
B.把s=1;改为s=0;
C.把n=1;改为n=0;
D.把n=n+1;改为n=n$n;
(22)有以下程序:“
J
则以下函数调用语句错误的是( )。.
k=f(a,B.;
B.k=add(a,B.;
C.k=(*f)(a,B.;
D.k={f(a,B.;
(24)若有定义语句:
正确的输入语句是( )。
scanf(”%lf%If'’,X,Y);
B.scanf(”%f%f¨敝,曲);
C.scanf(”%f%f¨,X,y);
D.scanf(”%lf%le”,px,PY);
(25)以下定义数组的语句中错误的是( )。
A.int num[][3]={{1,2},3,4,5,6};
B.int nUITI[2][4]={{1,2},{3,4},{5,6}};
C.int num[]={1,2,3,4,5,6};
D.int num[][4]={1,2,3,4,5,6’};
(26)有以下程序:
(27)有以下程序:
,
程序运行后的输出结果是( )。
A.10
B.16
C.6
D.12
(28)有以下程序:
程序运行后的输出结果是( )。
A.1
B.2
C.3
D.O
(29)函数fun的功能是在a所指的具有n个元素的数组中查找值并返回给调用函数,函数不完整。
在if语句下划线处应填人的选项是( )。
A.O>sB.* P>*sC.a[p]>a[s]D.p—a>P—s
(30)有以下程序:
程序运行后的输出结果是( )。
A.10,One{Drealn!
B.9,One*Drealll!
C.9,One*World
D.10,One*World
(31)有以下程序:
程序运行后的输出结果是( )。
A.Beijing!
B.toBeijing]
C.WelcomeyoutoBeijingI
D.youtoBeijingI
(32)有以下程序:
程序运行后的输出结果是( )。
A.3,5,B.3,6,C.3,7,D.0,3,
(33)有以下程序:
程序运行后的输出结果是( )。
A.2
B.1C.3 D.O
(34)有以下程序:
程序运行后的输出结果是( )。
A.4,5,2,4,1,3,
B.4,4,2,2,1,1,
C.5,5,3,3,2,2,
D.4,4,2,2,1,3
(35)以下与存储类别有关的四组说明符中,全部属于静态类的一组是( )。
A.extem和static
B.aut0和static
C.register和static
D.register和ex[erll
(36)为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)则在
( )处填入的选项是( )。*struetlink{ehardata;( )node;
A.struetlink*next;
B.linknext;
C.link$next;
D.struetlinknext;
程序运行后的输出结果是( )。
A.Qian,f,350,Sun,f,350
B.Qiamf,350,Qian,f,350
C.Qian,f,350,Sun,m,370
D.Zha0,m,290,Sun,m,370
(38)有以下程序:
程序运行后的输出结果是( )。
A.5
B.1
C.20
D.18
(39)以下叙述正确的是( )。
A.表达式sizeof(FILE*)==sizeof(int*)的值为真
B.文件指针的值是一个整数,它的值一定小于文件字节数
C.文件指针的值是所指文件的当前读取位置
D.使用fscanf函数可以向任意类型的文件中写入任意数量的字符
40.函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。
A.fread
B.fscanf
C.fgets
D.getc
(21)A【解析】题目中程序不能实现预期功能是因为while的循环条件错误,在选项B中,把s=1,改为s=0,最终的结果s=4,与题目原意不同;在选项C中,把n=1;改为n=0;最终的结果s=2,与题目原意不同;在选项D中,把n=n+1;改为n=11 s13;最终的结果s=2,与题目原意不同;选项A,正确的修改了while循环条件,可以得到正确结果。故答案为A选项。
(22)B【解析】题目使用更相减损术求公约数,其思想:l、任意给定两个正整数,判断它们是否都是偶数。若是,则用2约简,若不是则执行第二步。2、以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。则第一步中约掉的若干个2与第二步中等数的乘积就是所求的公约数。因此。故答案为B选项。
(23)D【解析】s与()的优先级,()的优先级高于*,因为(+f)()定义函数指针f。f指向函数的指针。f=add,将函数8dd()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用t取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。答案为D选项。
(24)D【解析】%1f,%le是针对double类型的数据,如果仅甩%f,输入的数据可能不能被完全接收,数据的精度可能不足。%f主要针对float类型的变量输入,选项8错误。根据瓣Hlf(格式,变量地址),选项A,C错误。故答案为D选项。
(25)B【解析】选项8中,int Irlllm[2][4]={{1,2},
{3,4},{5,6}};定义数组是2行4列,但是初始化的结构是3行2列,因此初始化错误。故答案为B选项。
(26)C【解析】flm()函数作用冒泡法排序,fla9控制升序(0)或者降序(1)。n为参与排序的元素个数。a为数组的起始地址。因此,flm(a,4,1),数组的前四个降序排序,fun(a+4,6,O)对数组的第四项后六个元素进行升序排序。故结果为10,9,8,7,1,2,3,4,5,6。答案为C选项。
(27)D1解析】第一个for循环作用是对数组8赋初值,从0~9,第二个缸循环是计算数组前4项的a[i]+i的和。0+0,1+1,2+2,3+3,经计算的结果为l2,因此答案为D选项。
(28)C【解析】new—div()的返回值是int类型,因此,a/b+0.5(其中a,b均为double类型)的小数部分被将被截断。经计算,7.8/3.1+0.5=2.516+0.5=3.016,故打印的结果为3。故答案为C选项。
(29)B【解析】函数fun的功能是在形参a所指的具有n个元素的数组中查找值并返回。通过for循环比较,s始终指向值的那个元素。取指针的值,使用+P,因此比较使用·P和}8,需要找到值,当}8<+P时,修改指针s的指向,因此答案为B选项。
(30)A【解析】函数strlen(char·s);计算字符串s的长度,不包括’、0’在内;P指向数组的第二个元素,因此strlen(p)=10,并打印,故答案为A选项。
(31)A【解析】for循环的作用是每次遇到空格,将空格后面的移动到数组的最前面。因此数组最后的状态是“Bei-jing!、Og!\0ng!、neijing!、O”,但是pfinff(“%s”)打印遇到、0自动结束。因此,打印Beijing!。故答案为A选项。
(32)A【解析】static静态变量只在声明时初始化一次。因此,第一次调用函数f(k=O),此时n…nlk 0,经过自增操作n=1,m=1,k=1,返回值为3,第二次调用函数f(k=1),此时n=1,k=1,m=0,经过白增操作,n=2,k=2,m=1,返回值为5。故最终结果为3,5。故答案为A选项。
(33)B【解析】局部变量覆盖全局变量,但是全局变量的声明周期还存在。f()函数调用完成后,由于m为全局变量,被修改为32,即函数的返回值32,此时m=32/12,第二次调用f(a,b),函数的返回值为3,此时m=2,故输出为1。所以答案为B选项。
(34)A【解析】sizeof()是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、对象、函数等。它的功能是:获得保证能容纳实现所建立的对象的字节大小。strlen(·char)函数,要在运行时才能计算,参数必须是字符型指针(char·),当数组名作为参数传人时,实际上数组就退化成指针了,它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL,返回的长度大小不包括NULL。sizeof(a)求数组a所占空间的大小,包括字符串最后的’、0’,所以sizeof(a)=5,strlen()遇到’、0’就结束,strlen(a)=4。strlen(b)是指针指向的字符串长度,sizeof(b)是指针的大小。strlen(c)是字符串的长度,sizeof(c)是数组的长度。因此,输出4,5,2,4,l,3。故答案为A选项。
(35)A【解析】aut0用于声明变量的生存期为自动,即
将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字通常会被省略,因为所有的变量默认就是aut0的。
register定义的变量告诉编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。
static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当static用来修饰全局变量时,它就改变了全局变量的作用域。extern限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extem外部声明,该变量在其他地方有被定义过。因此,答案为A选项。
(36)A【解析】存储结构用链式存储。链式结构每个节点有个指针域,指针域指向下一个链式结构的节点,因此指针域的结构应该是该结构形式,因此应定义为struct link}next,故答案为A选项。struct是结构体的说明符,不能省略。
(37)A【解析】c语言函数参数传递大致分为:1、值传递过程中。被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中nanle是数组,做实参传递,会退化为指针,因此调用f(),b.nanle发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。
(38)C【解析】“运算符为按位异或运算符,即0^1=1,l“0=1,l‘l=0,0"0=0,因此a^b=101在进行<<操作,变为101002=2010,因此答案为c选项。
(39)A【解析】slzeof(FILE})=4,因为file·为指针,指针的大小4,sizeof(int·)=4,理由同前面。文件指针的值是地址,是一个l6进制的数,它的值不一定小于文件字节数,因此选项8错误。文件指针是所指文件的当前读取位置,而不是文件指针的值因此选项C错误。mgscanf(FILE-stream,constchar}format,[argument…]fmanf函数可以向任意类型的文件,写入任意数量不能超过系统的缓冲区,写文件先写入缓冲区,最后一起写入文件,因此选项D错误。答案为A选项。
40)D 【解析】fgets读取一个长度为(n一1)的字符串,frea按照指定的长度读取数据项,对应2进制的打开方式,fs—canf按指定格式读,对应文本打开方式,9etc从指定的文件读* a=0;//初始化a字符统计的个数* c=0;//初始化C字符统计的个数for(i=0;i(M;i+十1,,行
{
\for(j=0;j
if(t[i][j]一·A-)//字符是a,计数
(*a)++;
if(t[i][j]一-C-)//字符是C,计数
(*c)++
【考点分析】
主要考察考生对多重循环的理解与使用,以及字符串的比较。
【解题思路】
对二维数组的行列分别循环,行优先,查找数组中元素为A或者C,分别对其进行计数。