2022年安徽省阜阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2022年安徽省阜阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2022年安徽省阜阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2022年安徽省阜阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2022年安徽省阜阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年安徽省阜阳市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义int?x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。A.(x-y<0|x-y>0)B.(x-y<0)C.(x-y>0).D.(x-y==0)

2.

3.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序运行后的输出结果是()。A.2B.1C.0D.3

4.有以下程序:voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main{char*s1="abe",*s2="123":swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。A.123,abeB.abc.123C.1bc,a23D.321,cba

5.以下叙述中错误的是()。

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量

6.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

7.有以下程序:

程序运行后的输出结果是()。

A.4B.34C.31D.32

8.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是A.5670B.656667C.567D.ABC

9.对于函数声明“voidfun(intarray[4],int*ptr);”,以下叙述中正确的是()。

A.array、ptr都是指针变量

B.调用fun函数时,实参的值将逐一复制给array

C.调用fun函数时,array按值传送,ptr按地址传送

D.array是数组,ptr是指针,它们的性质不同

10.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

11.一个函数返回值的类型是由()决定的。

A.return语句中表达式的类型B.定义函数时指定的函数类型C.在调用函数时临时指定D.调用函数的主调函数的类型

12.下列叙述中错误的是()。

A.用户定义的函数中可以没有return语句

B.用户定义的函数中可以有多个return语句,以便调用一次返回多个函数值

C.用户定义的函数中若没有return语句,则应当定义函数为void类型

D.函数的return语句中可以没有表达式

13.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

14.二进制数1110111.11转换成十进制数是()。

A.119.375B.119.75C.119.125D.119.3

15.设一棵二叉树共有50个叶子结点(终端结点),则共有___个度为2的结点。

A.25B.49C.50D.51

16.若有以下定义,则能使值为3的表达式是intk=7,x=12;

A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)

17.已知shortint类型变量占用两个字节,若有定义:shortintx[10]={0,2,4};,则数组x在内存中所占字节数是()。

A.3B.6C.10D.20

18.有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf(“%d”,t[2-i][i]);}程序的运行结果是()。

A.357B.753C.369D.751

19.

20.有以下程序:#include<stdio.h>main(){inti,j=0;chara[]=“ab123c4d56ef7gh89”;for(i=0;a[i];i++)if(a[i]>=‘0’&&a[i]<=‘9’)a[j++]=a[i];a[j]=‘\0’;printf(“%s”,a);}程序运行后的输出结果是()。

A.123456789abcdefgh

B.abcdefgh

C.123456789

D.1234567896ef7gh89

二、2.填空题(20题)21.以下程序运行后输出结果是______。

voidswap(intx,inty)

{

intt;

t=x;x=y;y=t;printf("%d%d",x,y");

}

main()

{

inta=3,b=4;

swap(a,b);printf("%d%d\n",a,b);

}

22.软件开发环境是全面支持软件开发全过程的【】集合。

23.仅依据规格说明书描述的程序功能来设计测试实例的方法称为【】。

24.以下程序统计从终端输入的字符中大写字母的个数。用#号作为输入结束标志,请填空。#include<stdio.h>#include<ctype.h>main(){intnum[26],i;charc;for(i=0;i<26;i++)num[i]=0;();while(c!='#'}{if(isupperC)num[c-65]+=1;}for(i=0;i<26;i++)if(num[i])printf("%c,%d\n",i+65,num[i]);}

25.以下程序运行后的输出结果是【】

#include<stdio,h>fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

inti,a=5;

for(i=0;i<3;i++)prinff("%d%d",i,fun(a));

printf("\n");

}

26.下列程序的输出结果是______.

#include<stdio.h>

fun()

{staticinta=O;

a+=3;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

27.栈的3种基本运算是:入栈、退栈和______。

28.下面程序的输出结果是【】。

#include<stdio.h>

main()

{staiccharb[]="Goodbye";

char*chp=&b[7];

while(--chp>=&b[0])putchar(*chp);

printf("\n");

}

29.下面程序的输出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

30.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。

31.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

32.下列程序的运行结果是______。

#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));

}

33.以下程序的输出结果是______。

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.Of\n",fun((int)fun(a+c,b),a-c));}

34.写出下列程序的输出结果______。

main()

{int=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

35.与结构化需求分析方法相对应的是【】方法。

36.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

37.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

38.有以下程序:

#include<string.h>

structSTU

{charname[10];

intnum;};

voidf(char*name,intnum)

{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};

num=s[0].num;

strcpy(name,s[0].name);

}

main()

{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;

p=&s[1];f(p->name,p->num);

printf("%s%d\n",p->name,p->num);

}

程序运行后的输出结果是【】。

39.以下程序的定义语句中,x[1]的初值是(),程序运行后输出的内容是()。#include<stdio.h>main(){intx[]={1,2,3,4,5,6,7,8,9,10,1l,12,13,14,15,16},*p[4],i;for(i=0;i<4;i++){p[i]=&x[2*i+1],printf("q%d”,p[i][0]);}printf("\n");}

40.以下程序的输出结果是【】。

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

printf("%d\n",m);

}

三、1.选择题(20题)41.设有定义语句:charc1=92,c2=92;,则以下表达式中值为零的是()。

A.c1c2

B.c1&c2C.~c2D.c1|c2

42.有下面程序段#include"stdio.h"#include"string.h"main(){chara[3][20]={{"china"};{"isa"},{bigcountry!"}};chark[100]={0},*p=k;inti;for(j=0;j<3;i++){p=strcat(p,a[i]);}i=strlen(p);printf("%d\n",i);}则程序段的输出结果是

A.18B.19C.20D.21

43.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<CR>45678<CR>则输出结果是()。

A.1267B.1256C.1278D.1245

44.下面程序的运行结果是#include<stdio.h>main(){chara[]="morning",t;inti,j=0;for(i=1;i<7;i++)if(a[j]<a[i])j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts[a];}

A.mrgninrB.moC.moringD.morning

45.设x,y,z,(均为整型变量,现有如下语句x=y=z=1;t=++x‖++y&&++z;,则执行这个语句后t的值为

A.2B.1C.0D.不定值

46.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

47.设有程序段:intk=12:while(k=1)k=k-1:则下列描述中正确的是()。

A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

48.有以下程序:#include<string.h>main(){charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";strcpy(p+strlen(q),r);strcat(p,q);printf("%d%d\n",sizeof(p),strlen(p));}程序运行后的输出结果是()。

A.209B.99C.2011D.1111

49.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。

A.if((a>B)&&(b:>C))k=l;elsek=0;

B.if(a>B)‖(b>C)k=1;elsek=0;

C.if(a<=B)k=0;elseif(b<=e)k=1;

D.if(a>B)k=1;elseif(b>C)k=1;elsek=0;

50.下列二维数组的说明中,不正确的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

51.t为int型变量,进入下面的循环之前,t的值为0,则以下叙述中正确的是()while(t=1){…}

A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对

52.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

53.下列表达式中,可以正确表示x≤0或x≥1的关系是()。

A.(x>=1)‖(x<=0)B.x>1‖x=0C.x>=10Rx<=0D.x>=1&&x<=0

54.有下列程序:

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

55.下列不是合法的C语言语句是()。

A.a=5B.{inti;i++;}C.;D.{;}

56.12.以下说法中正确的是()

A.#define和printf都是C语句

B.#define是C语句,而printf不是

C.printf是C语句,但#define不是

D.#define和printf都不是C语句

57.以下程序的输出结果是main(){charx=040;printf("%o\n",x<<1);}

A.100B.80C.64D.32

58.设有如下程序:charsub(char*q){while(*q,='\0'){if(*q>='A'&&*q<='Z')*q=*q+32;elseif(*q>='a'&&*q<='z')*q=*q-32;printf("%c",*q);q++;}}main(){char*s="abcABC";sub(s);}则程序运行后的输出结果是()

A.ABCabcB.abcABCC.abcabcD.ABCABC

59.有以下程序main(){inta[]={1,2,3,4,5,6,7,8,9,0},*P;for(p=a;p<a+10;p++)printf("%d,",*p);}程序运行后的输出结果是

A.1,2,3,4,5,6,7,8,9,0,

B.2,3,4,5,6,7,8,9,10,1,

C.0,1,2,3,4,5,6,7,8,9,

D.1,1,1,1,1,1,1,1,1,1,

60.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

四、选择题(20题)61.以下关于宏的叙述中正确的是()。

A.宏替换没有数据类型限制

B.宏定义必须位于源程序中所有语句之前

C.宏名必须用大写字母表示

D.宏调用比函数调用耗费时间

62.

63.(45)信息隐蔽的概念与下述哪一种概念直接相关()

A.软件结构定义

B.模块独立性

C.模块类型划分

D.模拟耦合度

64.

65.

下列程序的运行结果是()。

#include<stdio.h>

main

{inta=2,b=3,c=4:

if(a<b)

if(b<0)C=0:

elsec++;

printf("%d\n",c);

}

A.2B.3C.5D.4

66.

有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

程序执行后的输出结果是()。

A.7B.3C.2D.0

67.设有定义:intx=3;,以下表达式中,值不为l2的是()。

A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x.x+=6

68.有以下程序:

程序运行后的输出结果是()。

A.1B.11C.6D.21

69.

70.有以下程序:

I程序运行后的输出结果是()。

A.0B.3C.7D.8

71.有以下程序段以下关于程序段执行情况的叙述,正确的是()。

A.当产生的随机数n为0时结束程序运行

B.当产生的随机数n为4时结束循环操作

C.当产生的随机数n为1和2时不做任何操作

D.for循环语句固定执行8次

72.设有宏定义:

73.

74.下列函数的功能是()

75.

76.在单链表中,增加头结点的目的是()。A.A.方便运算的实现B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性的链式存储实现

77.现有定义inta;doubleb;floatc;chark;,则表达式a/b+C—k值的类型为:()。

A.intB.doubleC.floatD.char

78.

79.已知一棵二叉树前序遍历和中序遍历分别为ABDEFGCHI和DBFEGACIH,则该二叉树的后序遍历为

A.DFGEBHICAB.DGEBHFCAIC.DFGEBIHCAD.DGEBFIHCA

80.有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是()。

A.a%(int)(x-y)B.a=x!=y;C.(a*y)%bD.y=x+y=x

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头2个元素进行排序,然后把第3个字符插入到前2个字符中,插入后前3个字符依然有序;再把第4个字符插人到前3个字符中,待排序的字符串已在主函数中赋予。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数fun,其功能是:找出一维整型数组元素中最大的值所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名,n是x中的数据个数,max存放最大值。index存放最大值所在元素的下标。

注意:部分源程序给出如下。

请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。

试题程序:

参考答案

1.A条件表达式:x=表达式1:表达式2:表达式3的含义是:先求解表达式1.若为非0(真),则求解表达式2.将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3.将表达式3的值赋给x。在本题中与表达式1:(x-y)等价的是(x-y<0|x-y>0)。

2.D

3.C在ifelse语句中else,总是与离它最近的配对。本题目中x劝1所以!x为0,所以执行else龉句中的内容,判断(x==0)是否成立,因为x为1所以条件不成立,所以else部分的近.else语句不再执行,所以y的值还是初始值0。

4.C本题考查swap函数,它的作用是把x、Y所指的内容互换,其他的不变,因此当执行完调用函数后,仅仅a与1互换,其他的没有变。

5.C在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量。

6.C解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

7.C本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。

8.C

9.A声明函数fun“voidfun(intarray[4],int*ptr);”,第1个参数虽然是数组类型,但是会退化为指针,并且形参数组的个数没有用;第2个参数是指针。两个形参都是指针,传递的都是地址,可知选项B、C、D错误。故本题答案为A选项。

10.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

11.B

12.B函数的值只能通过return语句返回主调函数。函数中允许有多个return语句,但每次只能调用一个return语句,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为void。故本题答案为B选项。

13.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

14.B

15.B难易程度:易

16.D解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。注意:强制类型转换表达式。

17.D

18.A二维数组t[][3]即t[3][3]={{9,8,7},{6,5,4},{3,2,1}}。执行循环for语句,当i=0时,t[2][0]=3;当i=1时,t[l][1]=5;当i=2时,t[0][2]=7;当i=3时,循环结束,即t[2][0]=3、t[1][1]=5、t[0][2]=7。故本题答案为A选项。

19.B

20.C题干中定义了字符数组a,它包含数字字符和字母字符。通过for循环,将a中所有的数字字符前移,舍去其他字符,并在数字字符后添加字符串结束符‘\\0’,for循环结束后,字符串a的值为:123456789。故本题答案为C选项。

21.43344334解析:本题考查的是函数的传值调用。在C语宫中函数是传值调用的,印在函数中修改形参变量的内容,不会影响传给函数的实参变量的内容。题目中首先让a=3,b=4,然后调用swap()函数,该函数首先交换两个参数的值,然后输出交换后的值,即输出4和3,然后在主函数中再次输出a和b的值,由于传值调用不会影响实参的值,所以最后输出的是3和4。

22.软件工具软件工具

23.黑箱法黑箱法

24.c=getchar()

25.1011121210111212解析:用static关键字声明的变量称为静态局部变量。静态局部变量只在编译时赋一次初值,以后再次调用函数时不再重新赋初值,而是保留上次函数调用结束时的值。程序中的变量c为静态变量,当再次调用fun函数时,变量c不再被赋初值,变量c的值为上次调用fun函数时所保留下来的值,具体在程序运行过程中的体现如下:

当i=0时,第一次调用fun(5),这时a=5,b=0,c=3,执行b++,c++,得到b=1,c=4,则a+b+c=10,返回主函数输出010;当i=1时,第二次调用fun(5),这时a=5,b=0,c=4,执行b++,c++,得到b=1,c=5,则a+b+c=11,返回主函数输出111;当i=2时,第三次调用fun(5),这时a=5,b=0,c=5,执行b++,c++,得到b=1,c=6,则a+b+c=12,返回主函数输出212;当i=3时,循环结束,所以输出结果为:010111212。

26.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完子函数之后,变量a所做的改变都要保存。

27.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。

28.eybdooG

29.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

30.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。

31.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

32.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。

33.本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。

本题可按部就班地逐步运算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

34.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做;n++是先取n的当前值和I做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=0<=1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3。退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加1,即程序结束后得到n=4,但输出的是3。

35.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

36.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

37.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

38.SunDan20042SunDan20042解析:f函数中形参1用的是显式传地址的方式,因此p->name的值发生改变,而形参2用的传值的方式,在调用时不改变实参的值,因此p->num的值不发生变化。

39.2246822468解析:p为指向数组的指针变量,数组x[1]为数组x[]的第二个元素,值为2;进入for循环i=0时,p[0]=&x[1]…直到循环完毕,指针分别指向数组x[]中的第2、4、6、8个元素,所以第二个空白处应填2468。

40.4040解析:本题中指针s1和s2都指向同一个内存中的地址。因此语句“*s2=20;”执行后,*\u3000s1=*s2=20。所以m最后的值为40。

41.A解析:选项A为异或运算符,如果参加运算的两个位相同,结果为0,否则为1。显然选项A中参加运算的c1和c2相同,故其值为0。选项B为位与运算,如果参加运算的两位都为1,则结果为1,否则结果为0,选项B中参加运算的c1和c2都为真,所以该结果为1。选项C为取反运算,用来对一个二进制取反,显然c2取反后不为0,选项D为位或运算,参加运算的两位只要有一个为1,那么运算结果为1,显然参加运算的c1和c2都不为0,故运算结果不为0。所以,4个选项中选项A符合题意。

42.B解析:字符串连接函数strcat的调用形式如下:strcat(s1,s2)。此函数用来把s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。

43.D解析:当用scanf函数从键盘输入数据时,每行数据的末尾按下回车键(Enter键)之前,可以任意修改。但按下回车键putchar(c1)(Enter键)之后,scanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入123<CR>时,变量c1、c2、c3的值分别为1、2、3,当输入45678<CR>时,变量c5、c6的值4和5。所以用输出函数putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。所以选项D)为正确答案。

44.B解析:本题考查了一维数组元素的引用方法。题中数组a为一字符串数组,通过数组首地址和下标可以引用数组中的每个元素。因为字符数组相当于字符串,所以可以用字符串输出函数puts()来输出字符数组中的各个字符。

45.B解析:逻辑与(&&)优先于逻辑或(‖)优先于赋值运算符。由于逻辑运算符的结果为逻辑值,真为1,假为0,题目中的逻辑值为真。

46.D软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、通信资源、辅助资源等。(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成任务,它是其他资源的基础资源。(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无关。(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对象开发的Rose软件,它主要是软件开发的工具。通过对上述分析的总结,可以知道本题的正确答案选D。

47.C本题考查while,while循环表达式k-1是个赋值表达式而不是逻辑表达式,k的初值为l2不符合循环条件,所以循环体语句一次也不执行。

48.C解析:题目中p+strlen(q)的作用是在数组元素p[0]地址的基础上向后移动三位,然后再将r所指字符串内容复制到p所指的存储空间中,字符d被覆盖,p[20]={'a','b','c','a','b','c','d','e')。然后通过“strcat(p,q);”将q所指的字符串内容连接到p所指的字符串后面,p[20]={'a','b','c','a','b','c','d','e',a','b','c',}。在输出语句中strlen(p)是求字符串的长度,值为ll;sizeof(p)用来求数组p占多少字节,值为20。

49.A解析:分析题目中给出的表达式可知,如果a>b和b>c同时成立,k=1,否则k=0。所以,4个选项中选项A符合题意。

50.D解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:类型说明符数组名[常量表达式][常量表达式]。

51.B

52.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

53.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是“‖”。

54.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。

55.A解析:选项A)是一个表达式,它后面没有分号结尾(C语言中规定语句必须以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,也是一个空语句。

56.CC[解析]#define是宏命令,而不是C语句

57.A解析:本题考核的知识点是位运算符的应用.首先将八进制040转换成二进制数000100000,在将此;进制数左移一位为001000000,输出时转换成八进制数100。所以,4个选项中A为所选。

58.A

59.A解析:本指针访问数组元素,在for循环中,首先指针p指向a[0]的地址,输出语句即输出a[0]的值,然后指针p依次后移一位,依次指向数组a中各元素的地址,所以程序依次输出数组a的各元素值。

60.C解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和非过程性语言的关系,过程性语言的特点。

61.A宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此B)选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,因此c)选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此D)选项错误。

62.D

63.B

64.A

65.C

\n本题考查if…else语句。第一个if语句,先判断条件,发现a<b条件成立,则执行第二个if语句,再判断条件,发现b<0条件不成立,则执行与其配对的else语句c++,c自加1,得c=5。

\n

66.C

\n在函数funlintx)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的p=x-fun(x-2)递归函数。当在主函势中调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的输出结果为2。

\n

67.D本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为”自左至右”。A)选项和c)选项的结果是一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论