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

下载本文档

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

文档简介

2021年江苏省常州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975

2.下列能正确进行字符串赋值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%s",s);

3.

4.以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)()。

A.print[("%c\n",a-32);

B.print[("%d\n",A);

C.printf("%c\n",65);

D.printf("%c\n",B-1);

5.关于结构化程序设计原则和方法的描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOT0语句

D.语言中若没有控制结构,应该采用前后一致的方法来模拟

6.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的运行结果是()A.1B.0C.2D.3

7.下述哪一个是顺序存储结构的优点()。

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示

8.

9.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

10.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法A.A.对象B.数据结构C.数据流D.目标

11.数据结构通常研究数据的()及运算。

A.物理结构和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

12.

13.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()

A.n*eB.n+eC.2nD.2e

14.以下选项中合法的实型常数是

A.5E2.0B.E-3C.2.00E+00D.1.3E

15.下列排序算法中,()算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。

A.堆排序B.冒泡排序C.快速排序D.希尔排序

16.有以下程序:#include<stdio.h>#include<string.h>main(){printf(“%d\n”,strlen(“0\t\n\0C011\1”));}程序运行后的输出结果是()。

A.3B.13C.1D.0

17.下列程序的运行结果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}

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

18.

19.有以下函数:intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数功能叙述正确的是()。

A.将串s复制到串tB.比较两个串的大小C.求字符串s的长度D.求字符串s所占字节数

20.设有说明:charw;intx;f1oaty;doublez;则表达式w*x+z-y值的数据类型为()。

A.floatB.charC.intD.double

二、2.填空题(20题)21.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。

22.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

23.若有定义:intx=1,y=2;floata=3.7,b=2.1;则(x+y)%2+(int)a/(int)b表达式的值为()。

24.若有语句:

inti=-19,j=i%4;

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

则输出结果是【】。

25.算法的复杂度主要包括【】复杂度和空间复杂度。

26.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum,count);

}

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

main()

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

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

arr[i]=i;

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

k+=arr[i]+i;

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

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

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

29.下列程序的输出结果是【】。

main()

{

inta[]={2,4,6},*prt=&a[0],x=8,y,z;

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

z=(*(ptr+y<x)?*(ptr+y):x;

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

}

30.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotade(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=[9];[10]:a[N-1][i];}}

31.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;

}

puts(a);

printf("\n");

}

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

mazn()

{inta=5,b=4,c=3,d;

d=(a>b>C);

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

}

33.下面的程序实现的是从指针p所指向的地址的n个数中,找出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

34.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

35.下列的for语句的循环次数为______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

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

37.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

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

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

40.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

三、1.选择题(20题)41.下列叙述中,正确的一条是______。

A.putchar函数可以输出一个字符串

B.在printf("%c",c)函数中,两个c是一样的

C.语句printf("%d%%",1)的输出结果为1%

D.用scar函数输入数据时可以规定精度,例如scanf("%7.2f",&a)

42.按照“先进后出”原则组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

43.若要求从键盘读人含有空格字符的字符串,应该使用函数()。

A.getc()B.gets()C.getchar()D.scanf()

44.以下程序段的输出结果是______。char*p="abodefgh";p+=3;printf("%d\n",strlen(strcpy(p,"12345")));

A.8B.12C.5D.7

45.以下程序运行后,输出结果是______。#include<stdio.h>ss(char*s){char*p=s;while(*.p)p++;return(p-s);}main(){char*a="abded";inti;i=ss((A);print("%d\n",i);}

A.8B.7C.6D.5

46.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

47.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序运行后的输出结果是

A.错误信息B.666C.888D.666,888

48.若有说有:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.P=q;B.*p=*q;C.n=*q;D.p=n;

49.读下面程序段(字符串内没有空格字符):printf("%d\n",strlen("ATS\n012\1\\"));其输出结果是()。

A.11B.10C.9D.8

50.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

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

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

52.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

53.有以下程序main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}如果从键盘上输入6514<回车>,则输出结果为()

A.m=3B.m=2C.m=1D.m=0

54.以下程序的运行结果是()。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf("%d\n",k);}

A.10B.15C.100D.150

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

A.在面向对象的程序设计中,各个对象之间具有密切的关系

B.在面向对象的程序设计中,各个对象都是公用的

C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小

D.上述3种说法都不对

56.以下程序的输出结果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

57.有以下程序:mian(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是()。

A.1*1=11*2=21*3=3

B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9

C.1*1=1

D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9

58.设有定义语句:intx[6]={2,4,6,8,5,7),*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。

A.for(i=0;i<;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

59.设有如下程序段:intx=2002,y=2003;printf(“%d\n”,(x,y));则以下叙述中正确的是

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B.运行时产生出错信息

C.输出值为2002

D.输出值为2003

60.以下选项中合法的用户标识符是A.longB._2TestC.3DmaxD.A.dat

四、选择题(20题)61.有以下程序

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

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

}

程序的运行结果是

A.6B.8

C.12D.10

62.以下选项中不能用作C程序合法常量的是()。

63.有以下程序:

#include<stdio.h>

main

{shortC=124;

C=C_;

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

}

若要使程序的运行结果为248,应在下划线处填入的是()。

A.>>2

B.|248

C.&0248

D.<<1

64.在C程序中有如下语句:char*func(intx,inty);它是()。

A.对函数func的定义。B.对函数func的调用。C.对函数func的原型说明。D.不合法的

65.有以下程序段当执行上述程序段,从键盘上输A,555667777123后,y的值为()。

A.566.0B.55566.0C.7777.0D.566777.0

66.有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是()。A.A.45B.20C.25D.36

67.

68.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。

A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库

69.

70.以下函数按每行8个输出数组中的数据:

下划线处应填入的语句是()。

A.

B.

C.

D.

71.

72.

73.

A.a=50b=50(空格分开.B.5050(空格分开.C.a=50,b=50D.50,50

74.

75.

76.

77.若a是数值类型,则逻辑表达式(a==1)Il(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能确定

78.

79.有以下程序:

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

A.0B.10C.20D.出错

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

A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

D.链式存储结构比顺序存储结构节省存储空间

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

doubleproc(intn)

{

doublesum,s0,s1,s2,s;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

s1=0.0;

s2=1.0;

//****found****

for(k=4;k<n;k++)

}

{

s=s0+s1+s2;

sum+=S:

s0=s1;

s1=s2;

//****found****

s2=s;

returnsum;

}

voidmain

{

intn;

system("CLS");

printf("InputN=");

scanf("%d",&nJ;

printf("%f\n",proc(n));

}

六、程序设计题(1题)82.使用VC++2010打开触文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是移动字符串中的内容,移动的规则是把第1~m个字符,移动到字符串的最后,把第m+1到最后的字符移动到于符串的前面。例如,字符串中原有的内容为“ABCDEFGHIJK”,m的值为3,移动后,字符串中的内容应该是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

2.C解析:字符串存储要有结束符“\\0”且要占用一个空间,选项A)、B的空间不够:printf用来输出字符,不能输入字符串.

3.D

4.B在C语言中%d表示输出整型数值,所以答案为B。

5.C结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。其他三项为结构化程序设计的原则。

6.A虽为嵌套的for循环,但“m=m%j”只执行1次,即当i=3时,内层循环条件成立,m=55%3=1,故选A。

7.A

8.B

9.A

10.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

11.A

12.B

13.D

14.C解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。

1)一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点)。

2)指数形式的小数:指数形式的实数由尾数部分、e(E)和指数部分组成(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字;选项D中,E后面没有数字。

15.C

16.AC语言中的转义字符也是一个字符。字符串“0\\t\\n\\0C011\\1”,共有字符‘0’、‘\\t’、‘\\n’3个字符。strlen遇到‘\\0’字符计数结束,因此计数为3。故本题答案为A选项。

17.C解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第二个if语句,先判断条件,发现b<0条件不成立,则执行与其配对的else语句,c+=1,得c=5。

18.B

19.Caaa函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。当t指向结束标识处时,由于后缀“运算符,它还会被再递增1,因此“t--”语句让它回到结束标识处。最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度。故本题答案为C选项。

20.D

21.概念概念

22.1212解析:本题中n1='1'-'0'=1,n2=1×10+('2'-'0')=10+2=12。

23.22解析:本题考查表达式的运算。因为x=1,y=2,所以表达式(x+y)%2=3%2=1,(int)a/(int)b=(int)}(3/2)=1,因此整个表达式的结果为(x+y)%2+(int)a/(int)b=1+1=2。

24.-3-3解析:%运算符是求两个数相除的余数,其结果与被除数的符号一致,本题中“-19%4”的值为“-3”。

25.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

26.&a[i]或a+ia[i]或*(a+i)&a[i]或a+i\r\na[i]或*(a+i)解析:主函数中一开始定义了一个长度为20的整型数组,然后通过一个循环,循环20次给它的每个元素赋初值,所以在第一个空格处应填各个元素的地址,即填&a[i]或a+i,然后再通过一个循环执行20次,每循环一次,先判断该循环是否大于0,如果大于0将其累加到变量sum中,所以第二个空格处应该填入数组元素,所以应该填a或*(a+i)。

27.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:

28.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;

29.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系个表达式(*ptr+y)<x)?(ptr+y):x的值,再赋绐变量z,当y=O时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(pry)=2,所以z=2;当y=1时*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,*((ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

30.b[i][N-1];s[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]门实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。\r\n\r\n

31.j+=2a[i]>a[j]j+=2\r\na[i]>a[j]解析:由于要对偶数位进行排位,所以空格处应填。j+2,空13处是一个排序算法中的判断语句,经过分析后应该填a[i]>a[j]。

32.00解析:关系运算符“>”的结合方式是从左向右的,所以在本题中的表达式a>b>c;从左向右开始计算,a>b的结果为“1”,接着1和c比较假,该空格处应该填0。

33.q<p+nq<p+n解析:考查对于函数的地址传递的掌握情况。通过地址传递可以在被调函数中对调用函数中的变量进行引用。

34.1对多(或1:N)1对多(或1:N)

35.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。

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

37.调试调试

38.5555解析:分析程序执行过程,第一次循环时,i=3,i=5,因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5:第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++]):P(a[4])=P(5),输出5,之后i自加等于5。

39.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

40.本题程序的流程是:让i;j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以s[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。\r\n\r\n

41.C

42.BB.【解析】栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元索是最后被插入的元素,也是最后被删除的元素。栈是按先进后出的原则组织数据的。

【知识拓展】“栈”的形式如手枪的弹匣,最后压入的子弹总是最先被弹出,而最先压人的子弹最后才被弹出,也就是“先进后出”。

43.B解析:gete()函数是从文件指针指定的文件中读入一个字符,并把它作为函数值返回;getchar()函数是从终端(或系统隐含指定的输入设备)输入一个字符,getc()和getehar()都不能读字符串(可以与循环语句结合输入一个字符串);seanf()函数不能输入带空格的字符串;gets()函数可以从键盘读入空格字符。

44.C解析:本题主要考查strcpy()函数,char*strcpy(char*s1,char*s2)是把指针s2指向的串复制到指针s1指向的存储空间。

45.D

46.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

47.B解析:程序中的printf()函数的输出格式部分只说明了一个%d,而输出成员列表却有两个成员a和b,在这里将只输出第一个成员a值为666,所以,4个选项中选项B符合题意。

48.D解析:本越考查的知识点是指针的赋值。本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q,选项A中给指针变量p赋值小故这个赋值语句正确;选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句;选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句:选项D中p为一指针变量应该杵一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。

49.C解析:本题考查字符串的长度。printf的功能是输出'ATS\\n012\\1\\\\'这个字符串的长度,在字符串中“\\\\”代表一个“\\”,仅为一个字符,而“\\1”代表数字1,占一个字符,“\\n”是回车换行符,也占一个字符,加上A、T、S、0、1、2,一共是9个字符。

50.C解析:线性结构,是指数据元素只有一个直接前件元素和直接后件元素。线性表是线性结构。栈和队列是指对插入和删除操作有特殊要求的线性表,树是非线性结构。

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

52.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。

53.C

54.B解析:该题考查函数的宏定义及三目运算符。表达式10*MIN(i,j)利用宏展开后为:10*i<j?i:j,即100<15?10:15,其值为15,然后将15赋给k。

55.C本题考查对面向对象的理解。面向对象的程序设计是对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。

56.A解析:本题两次执行fun函数,第一次执行得f(3)=s=n-f(n-1)=3-f(2):第二次执行得s=2,通过传递返回值f(2)=2,所以s=3-2=1,即f(3)=1。

57.B解析:在一个循环体内又完整地包含了另一个循环体的,称为循环嵌套,外循环的i值分别为1、2、3,当i=1时,内循环j=1时,输出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2时,内循环j=2时,输出2*2=4;当内循环j=3时,输出2*3=6;当i=1,内循环j=3时,输出3*3=9。

58.D解析:本题中首先定义了一个了维数组并初始化,接着定义了一个指针变量p指向数组x。因此可以通过指针p的下移,即每次加1引用数组x中的元素,来指向数组中的每个元素,这样循环6次即可引用数组的每个元素。选项A和C,*和++的优先级相同且都具有右结合性,p++是先使用p的值再对p加1,即先输出*p的值,再将指针下移一位。选项B是取*(p+i)所对应的存储单元中的数据输出,随着i的递增输出x数组的6个元素。选项D中表达式为(*p)++,该表达式是先取*p的值然后将其值加1,而没有将指针下移一位,故选项D不正确。所以,4个选项中选项D符合题意。

59.D解析:逗号运算符的结合性为从左到右,其一般形式为“表达成1,表达式2”,整个表达式的值为表达式2的值。故4个选项中选项D符合题意。

60.B解析:本题考查C语言标识符的命名.在C语言中,合法的标识符由字母,数字和下划线组成,并且第一个字符必须为字母或者下划线,long为C语言的保留字,不能作为用户标识符,故选顷A错误.3Draax开头的第一个为数字,而C语言规定,第一个字符必须为字母或者下划线,故选项C错误;A.dat中的字符“.”不符合C语言中用户标识符只能由字母、数字和下划线组成的规定,故选项D错误.只有迭项B正确。

61.A本题考查结构体类型所占用的内存字节数。结构体占用的内存字节数为各个成员变量所占内存字节数的总和。题目中给出了一个结构体date,里面包括3个整型的成员变量,在TurboC中,每个整型变量占用2个字节的内存,这3个整型变量总共占用6个字节的内存。sizeof函数是返回对象所占内存的大小。要注意,对于不同的编译器,同样类型的变量所占的内存字节数不同,C语言的默认编译器

温馨提示

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

评论

0/150

提交评论