2022-2023年江西省吉安市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2022-2023年江西省吉安市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2022-2023年江西省吉安市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2022-2023年江西省吉安市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2022-2023年江西省吉安市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年江西省吉安市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义语句“inta,b;doubleX;”,则下列选项中没有错误的是()。

A.switch(X%2){case0:a++;break;casel:b++;break;default:a++;b++;}

B.switch((int)x/2.O){case0:a++;break;casel:b++;break;default:a++;b++;}

C.switch((int)X%2){case0:a++;break;casel:b++;break;default:a++;b++;}

D.switch((int)(x)%2){case0.0:a++;break;casel.0:b++;break;default:a++;b++;}

2.有下列程序:#include<stdio.h>#include"string.h"voidtim(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是()。A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

3.下列4个关于C语言的结论中错误的是()。

A.可以用do…while语句实现的循环一定可以用while语句实现

B.可以用for语句实现的循环一定可以用while语句实现

C.可以用while语句实现的循环一定可以用for语句实现

D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同

4.以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

5.

6.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

7.程序运行后的输出结果是()。A.3B.4C.1D.9

8.设有如下定义语句:intm[]={2,4,6,8,10},*k=m;以下选项中,表达式的值为6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

9.下面程序段的输出结果是______。char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果

10.当n=5时,函数输出为()A.5B.11C.29D.10

11.设二叉排序树中有n个结点,则二叉排序树的平均查找长度为()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

12.

13.设有定义“intk=0;”,以下选项的4个表达式中与其他3个表达式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

14.下列叙述中正确的是()。A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化

15.软件是指()。A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合

16.

17.下列程序的输出结果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

18.有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main{fun(7);printf("\n");}程序运行后的输出结果是()。A.137B.731C.73D.37

19.数据的独立性是指______。

A.数据库的数据相互独立

B.DBMS和DB相互独立

C.用户应用程序与数据库的数据相互独立

D.用户应用程序与DBMS相互独立

20.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

二、2.填空题(20题)21.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;bteak;}

if(【】)return("yes!");

elsereturn("no!");

}

main()

{charsb[50];

printf("Input:");scanf("%s",str);

ptintf("%s\n",【】);

}

22.下面程序的输出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)

arr[i]=i;

for(i=1;i<4;i++)

k+=arr[i]+i;

printf("%d\n"k);}

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

24.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

26.软磁盘最外边的磁道数是【】号磁道。

27.以下程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出,请填空。

#include<stdio.h>

main()

{inta[3][4]={13,-2,7,5},{1,0,4,-3},{6,8,0,2}};

intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};

inti,j,c[3][4];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

c[i][j]=【】;

for(i=0;i<3;i++)

{for(j=0;j<4;j++)

printf("%3d",c[i][j]);

printf("\n");}}

28.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

29.以下程序运行后的输出结果是______。

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

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

printf("\n");

}

30.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

31.一个关系表的行称为()。

32.阅读下面程序段,则执行后输出的结果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

33.若要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

34.执行下列语句段后,x的值是______。

int*p,x;

x=100;

p=&x;

x=*p+50;

35.选择程序中的输入输出语句,以满足题目给定的输入输出数据形式。

main()

{inta;floatb;

【】

【】}

输入形式:3.52<空格>6<回车>

输出形式:a*b=21.12

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

#include<stdio.h>

inta=5;

fun(intb)

{staticinta=10;

a+=b++;

printf("%d",a);

}

main()

{intc=20;

fun(c);

a+=c++;

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

}

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

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf('%s\n",p);

}

38.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

39.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

40.一棵二叉树第六层(根结点为第一层)的结点数最多为______个。

三、1.选择题(20题)41.以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}

A.1123581321

B.1122551010

C.1258981321

D.0112451521

42.判断字符型变量chr为小写字母的表达式是______。

A.'a'<=chr<='z'

B.(chr>='a')||(chr<='z')

C.(chr>=A)&&(chr<=z)

D.(chr>='a')&&(chr<='z')

43.若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是

A.p+1B.*(p+3)C.*(p+1)+3D.*(P[0]+2)

44.下列关于“数据库系统(DBS)”的叙述中,正确的一条是______。

A.DBS是指在计算机系统中引入数据库后的系统构成

B.DBS是帮助用户建立、使用和管理数据库的一种计算机软件

C.DBS是用户建立的若干数据库文件的集合

D.DBS是一种新颖的关系数据库管理系统

45.执行语句printf("%u\n",+12345)的输出结果是()。

A.12345B.0C.-1D.非定值

46.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序运行后的输出结果是______。

A.22111B.21021C.122D.12

47.有以下程序

#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<回车>

45678<回车>

则输出结果是

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

48.以下不合法的字符常量是()。

A.'\018'B.'\"'C.'\\'D.'\xcc'

49.若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为ints[2][3]={0},(*p)[3];p=s;

A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]

50.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下叙述中正确的是()。

A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,程序出错D.程序运行时产生出错信息

51.设已包含头文件<string.h>,下列程序段的运行结果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

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

52.有以下程序:#iaclude<stdio.h>main(){intp[8]:{11,12,13,14,15,16,17,18},i=0,j:0;while(i++<7)if(p[i]%2)j+=p[i];printf("%'d\n",j);}程序运行后的输出结果是()。

A.42B.45C.56D.60

53.请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

54.设a、b和C都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

A.'a'&&b'

B.a<=b

C.a‖+c&&b-c

D.!((a<<b)&&|c‖1)

55.下面程序段中c的二进制值是______。chara=3,b=6,c;c=ab<<1;

A.1011B.1111C.11110D.11100

56.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。

A.2B.4C.6D.8

57.下面程序段的运行结果是

char*s="abcde";

s+=2;printf("%d",s);

A.cdeB.字符′c′C.字符′c′的地址D.无确定的输出结果

58.有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是()。

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

59.下列描述中,正确的是______。

A.a[2*3+5]可以是一个数组元素

B.可以对结构体类型和结构类型变量赋值、存取或运算

C.结构一经定义,系统就给它分配了所需的内存单元

D.结构体变量和共用体变量所占的内存长度是各成员占的内存长度之和

60.以下4个程序中,完全正确的是

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main();{/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.include<stdio.h>main(){/*programming*/printf("programming!\n");}

四、选择题(20题)61.c源程序中不能表示的数制是()。

A.二进制B.八进制C.十进制D.十六进制

62.

63.若变量已正确定义,有以下程序段其输出结果是()。

A.0,1B.0,0C.1,1D.程序进入无限循环

64.

65.

66.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

67.

68.算法分析最重要的目的是

A.找出数据结构的合理性B.找出算法中输入和输出之间的关系

C.分析算法的易懂性和可靠性D.分析算法的效率以求改进

69.有以下程序

70.下列各数据类型不属于构造类型的是()。

A.枚举型B.共用型C.结构型D.数组型

71.

72.下列叙述中正确的是()。

A.只能在循环体内和switch语句体内使用break语句

B.eotinue语句的作用是结束整个循环的执行

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用got0语句

73.

74.

75.从循环体内某一层跳出,继续执行循环外的语句是:___________。

A.break语句B.return语句C.continue语句D.空语句。

76.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

77.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为()。

A.p+1B.a+1C.a++D.++p

78.

79.

80.

以下程序的输出结果是()。

intf(intA)

{returna%2;}

main

{ints[8]={1,3,5,2,4,6},i,d=0;

for(i=0;f(s[8]);i++)d+=s[i];

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

}

A.9B.11C.19D.21

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。

例如,输入opdye,则应输出deopy。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include%string.h>

#include%stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charC;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+1;j<strlen(str);j4-+)

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=C;

}

}

voidmain

{

charst/[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\nknBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%S",str);

}

六、程序设计题(1题)82.请编写一个函数voidproc(char*str),其功能是:将字符串str中所有下标为偶数位置上的字母转化为大写(若该位置上不是字母,则不转换)。例如,若输入字符串:“thankyou6verymuch”,则应输出:“TbAnKYoU6vErYMuCh”。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.CC语言中,switch语句中的表达式和case表达式都不能是浮点类型。所以选C。

2.A解析:从main函数入手,定义了指向字符串的指针数组,并赋予了初始值,调用fun()函数,函数的功能是:比较数组中各个元素的长度,按元素长度从小到大排列数组元素,所以执行fun(ss,5)函数后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},所以调用printf函数输出ss[0],ss[4]的值分别为xy,aaaacc。

3.D解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。

4.B解析:字符数组元素作函数参数是单向的值传递。函数cchar的功能是将大写字母转换为小写字母。主函数中while循环语句的条件是判断指针p当前指向的字符是否为空,若不为空,则调用函数cchar,即主函数中通过循环语句将字符串'ABC+abc=defDEF'中的大写字母全部转换为小写字母,因此printf的输出结果为选项B。

5.D

6.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

7.B[解析]每次内循环只循环一-次就结束,第一次外循环时t=t+b[][0][]=1+b[0][0]=1+0=1;第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循环时t=t+b[][2][]=2+b[2][2]=2+2=40

8.A本题考查数组和指针,*k指针是指向rn数组的首地址,所以要使表达武的值为6,只需要指针指向第m[2],所以答案选择A。-

9.C解析:语句s+=2;使指针指向字符'c',此时s中保存的便是字符'c'的地址。

10.C

11.B

12.D

13.C表达式“++k”是先使得k的值自增1后再使用。表达式“k++”是先取得k的值再将k的值自增1。所以C选项中表达式的值为0,而其他3个选项中表达式的值均为1。故本题答案为C选项。

14.C栈是先进后出的数据结构,在对栈操作的整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来完成,因此本题答案为c)。

15.D软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。因此本题的正确答案是D。

16.C

17.C本题考查do-while循环,在fun函数中,首先定义了静态变量i=0,do-while循环要实现的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不变的规则重新给b数组赋值。在主函数中,通过调用fun函数,按上面的规则对数组a重新赋值,最后输出数组a。

18.D本程序主要考查递归函数。fun(7),首先将参数代入函数,因为(7/2)>1,所以执行f(3),依此类推直到f(1.5),(1.5/2)<1,所以执行打印函数,此时X值为3,然后退出f(1.5),返回f(3),打印x值即7。所以选D。

19.C解析:修改数据库的物理结构或逻辑结构时,通过两级映像,可以使得应用程序不必修改,保证数据的独立性。数据的独立性包括物理独立性和逻辑独立性。

20.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。

21.str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:函数huiwen中开始定义了两个字符指针p1和p2,并让p1指向sb的开始位置,所以p2应该指向str的尾部,即&str[strlen(str)-1]或写成str+strlen(str)-1或者其他等价形式。然后使用一个循环,循环str的长度的一半次数,比较p1和p2的内容,并分别递增和递减这两个指针。若有不同,则让标志t为1,并跳出循环。所以最后一个if语句应该为判断标志t是否为1,即应该填t==0或者其它等价形式。在主函数中,应该输出huiwen()函数的返回结果,即最后一空应该填huiwen(str)。

22.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

23.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。

24.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在e>t时返回正值,当s<t时返回负值。

25.BCDCDDBCD\r\nCD\r\nD解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值“BCD”并换行,依次执行循环语句。

26.0

27.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:此题是双重for循环结构应用在了二维数组中。外层for循环用来控制二维数组的行,内层for循环控制二维数组的列。

28.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

29.010111212010111212解析:本题考查的是静态局部变量的运用。静态局部变量的作用域与普通局部变量一样,但它的生存期将延长到程序运行结束。本题的主函数中使用一个for循环输出循环变量i和fun(a)的值,由于a的值一直没被修改过,所以三次调用的都是fun(5)。第1次调用,b=0,c=3,所以返回值为5+1+4=10;第2次调用,因为c是静态局部变量,它仍然保存着上次调用结束时的值4,而b重新被创建和初始化为0,所以返回值为5+1+5=11;同理,第3次调用返回的是12。所以,程序最终输出为:010111212。

30.getchargetchar解析:考查了字符可以作为整型变量来对待,参与操作。题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符\ue008'y',\ue009'Y'、,'n','N'是否相等来实现的。

31.元组元组解析:一个关系表中的行称为元组,列称为属性。

32.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。

33.(double*)(double*)解析:一般用malloc函数为变量分配存储单元时,要在前面用强制类型转换符说明该存储单元中数据的类型。本题要为指向双精度浮点型数据的指针变量p分配存储单元,因此用(double*)说明。

34.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。

35.scanf("%f<空格>%d"&b&a);printf("ab=%5.2f"a*b);scanf('%f<空格>%d',&b,&a);\r\nprintf('a,b=%5.2f',a*b);

36.30253025解析:本题定义了一个fun函数,其中有语句a+=b++,b先使用,后自增,所以a=a+b。主函数中的c=20带入到fun函数中,a的值变为30,执行fun函数中的printf,输出30(注意输出函数中%d后有空格),函数调用结束,且返回main函数,此时a=5,c=20,执行a+=c++,即a=a+c,此时a值为25。

37.efghefgh解析:本题考核的知识点是通过指针引用字符串.函数“的作用是让形参指针s指向该字符串的右半部分.主函数中首先定义了一个字符型指针变量p和字符型指针str;并初始化为“abcdefgh”,然后调用函数ss,将实参str传给形参s,因此可知该函数返回的指针,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后输出指针p(指针p的值为调用函数ss(sD)的返回值)所指向的字符串为“efgh。

38.33解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。

39.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

40.3232解析:二叉树的一个性质是,在二叉树的第k层上,最多有2k-1(k≥1)个结点。由此,26-1=32.所以答案为32。

41.A

42.B解析:程序段中定义x值为1,!x值为0,因此循环执行的条件永远成立,该循环是死循环。

43.D解析:本题中定义了一个二维数组c和一个指针数组p并初始化让它指向c,显然此时p中的各元素为地址,选项A中p+1,此时其中的1代表的长度是整个;维数组c的长度,故p+1将让p指向c数组后面的元素,故不能引用c数组中的成员,故选项A错误;同理选项B和选项C都不正确,选项D中p[0]指的是指针数组中的第一个元素的地址即c的首地址,此时的1的长度代表的是数组c中一行的长度,故p[0]+2代表的是第三行的首地址,而*(p[0]+2)将代表第三行的第一个元素的地址,所以,4个选项中选项D符合题意。

44.A解析:数据库系统DBS是指在计算机系统中引入数据库后的系统构成。数据库系统是一种带有数据库的综合系统,它包括硬件、软件(如操作系统、数据库管理系统、编译系统及应用开发工具软件等)、数据库以及开发者和使用者。

45.A解析:“%u”表示输出无符号的整数(注意:如果输出值前有符号,将自动转化为相应的无符号数输出)。

46.C解析:程序中for循环了三次,第一次i=0,执行switch语句中case0:分支,直到遇到default语句,退出switch,这里共执行了三个输出语句分别输出0,0,0,第二次循环i=1,switch语句中没有匹配的分支,故只执行default语句输出1,退出switch语句;第三次循环i=2,从switch语句中的case2:开始执行,共执行了两个输出语句输出2、2。最后输出的结果为000122。

47.D解析:putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。

48.A解析:C语言的字符常量是用单引号括起来的一个字符,如'a','A','?','S'等都是字符常量。除此之外,还允许用一个“\\”开头的字符序列,如'\\ddd'表示1到3位八进制数所代表的字符,而八进制是由0~7这几个数字组成的,所以选项A)是不合法的字符常量。

49.A解析:p+i是数组s的第i+1行的首地址,而*(p+i)则是数组第i+1行第1列的元素的地址,*(p+i)+j则是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是数组元素s[i][j]的值。注意:通过建立一个指针数组来引用二维数组元素。

50.B解析:(a1,a2)是一个逗号表达式,它的值为a2的值即m,以字符格式输出表达式的值即输出小写字母m。

51.A解析:头文件<string.h>是字符串处理函数对应的头文件,要想调用C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。

strcpy(s1,s2)把s2中的字符串复制到s1中,所以结果就为s2的长度。

52.B解析:程序执行过程如下:

i=0:i++<7为真,p[i]%2即为p[1]%2,值为0,不执行j+=p[i];j=0;

i=1:i++<7为真,P[i]%2即为p[2]%2,值为1,执行j+=p[i];j=13;

i=2:i++<7为真,p[i]%2即为P[3]%2,值为0,不执行j+=p[i];j=13;

i=3:i++<7为真,p[i]%2即为P[4]%2,值为1,执行j+=p[i]];j=13+15=28;

i=4:i++<7为真,p[i]%2即为p[5]%2,值为0,不执行j+=P[i];j=28;

i=5:i++<7为真,P[i]%2即为P[6]%2,值为1,执行j+=P[i];j=28+17=45;

i=6:i++<7为真,P[i]%2即为p[7]%2,值为0,不执行j+=p[i];j=45;

i=7:i++<7为假,结束循环,输出j的值45。

可见,程序的功能是求除p[0]外的其他奇数的和。

53.B解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&A),10和5届于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&B)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

54.D解析:选项A:'a'&&'b'是字符a与b的相与,不为0;选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<b)&&!c||1),运算结果为0。

55.B解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)、左移(<<)和右移(>>)、按位与(&)、按位异或(∧)、按位或(|)。所以表达式c=ab<<1先运算b<<1得二进制值为00001100,再运算a∧00001100,最后得二进制值00001111。

56.B解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。

57.C解析:对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。

58.B解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t。在函数中通过一个while循环,在循环中依次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“*s=t'a'+'A';”(若是小写字母,则被转换成相应的大写字母)语句。在主函数中执行函数调用ss(str1,c),很显然是把str1数组中所有字符d变成大写字母,其他字符不变。所以4个选项中B正确。

59.A

60.B解析:选项A)main();的分号是错误的,不能有分号;选项C)的注释语句

温馨提示

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

评论

0/150

提交评论