搜档网
当前位置:搜档网 › 全国高等学校计算机等级考试(二级C语言)选择题试题库(每题都有解析)

全国高等学校计算机等级考试(二级C语言)选择题试题库(每题都有解析)

全国高等学校计算机等级考试(二级C语言)选择题试题库(每题都有解析)
全国高等学校计算机等级考试(二级C语言)选择题试题库(每题都有解析)

全国高等学校计算机等级考试(二级C语言)选择题试题库答案试题

C 1. 在C语言源程序中,以下叙述正确的是(C )。

A. main函数必须位于文件的开头

B. 每行只能写一条语句

C. 程序中的一个语句可以写成多行

D. 每个语句的最后必须有点号

C 2. 关于C语言的源程序的叙述中,错误的是( C )。

A. C语言的源程序由函数构成

B. main函数可以书写在自定义函数之后

C. 必须包含有输入语句

D. 一行可以书写多个语句

C 3. 关于C语言数据类型的叙述,正确的是()。

A. 枚举类型不是基本类型

B. 数组不是构造类型

C. 变量必须先定义后使用

D. 不允许使用空类型

C 4. C程序中main函数的位置(C )。

A. 必须在最开始

B. 必须在系统库函数后面

C. 可以在自定义函数后面

D. 必须在最后

B 5. C语言的函数体由( B)括起来。

A. ()

B. { }

C. [ ]

D. /* */

D 6. 关于C语言的叙述中,不正确的是( D)。

A. C程序可由一个或多个函数组成

B. C程序必须包含一个main()函数

C. C程序的基本组成单位是函数

D. 注释说明只能位于一条语句的后面

D 7. 以下叙述不正确的是(D )。

A. C程序的执行总是从main函数开始

B. 一个C源程序必须包含一个main函数

C. C语言程序的基本组成单位是函数

D. 在编译C程序源程序时,可发现注释中的拼写错误

C 8. 结构化程序设计的三种基本结构是( C )。

A. 函数结构、分支结构、判断结构

B. 函数结构、嵌套结构、平行结构

C. 顺序结构、分支结构、循环结构

D. 分支结构、循环结构、嵌套结构

C 9. 对于C语言源程序,以下叙述错误的是( C )。

A. 可以有空语句

B. 函数之间是平等的,在一个函数内部不能定义其它函数

C. 程序调试时如果没有提示错误,就能得到正确结果

D. 注释可以出现在语句的前面

D 10. 下面关于C语言用户标识符的描述,正确的是()。

A. 不区分大小写

B. 用户标识符不能描述常量

C. 类型名也是用户标识符

D. 用户标识符可以作为变量名

D 11. 以下( D )是正确的变量名。

A. 5f

B. if

C. f.5

D. _f5

D 12. 以下(D )是正确的常量。

A. E-5

B. 1E5.1

C. 'a12'//字符串用双引号

D. 32766L

D 13. 以下( D)是正确的变量名。

A. a.bee

B. -p11

C. int

D. p_11

C 14. 以下( C)是正确的字符常量。单引号括起来

A. "c"

B. '\\''

C. 'W'

D. "\32a"

A 15. 以下( A)是不正确的字符串常量。双引号括起来

A. 'abc'

B. "12'12"

C. "0"

D. " "

B 16. 以下( B)是错误的整型常量。

A. -0xcdf

B. 018 //八进制数不能超过8

C. 0xe

D. 011

B 17. 以下(B )是正确的浮点数。

A. e3 //e前面必须有数字,指数必须为整数

B. .62

C. 2e4.5

D. 123

A 18. 若有说明语句:char c='\95'; 则变量c包含()个字符。

A. 1 \ddd :表示1到3位八进制数所代表的字符(ASCII码值)

B. 2 \xhh表示1到2位十六进制数所代表的字符

C. 3

D. 语法错误

A 19. 若有定义:int a=2; 则正确的赋值表达式是()。

A. a-=(a*3)//a=a-(a*3)

B. double(-a) //(double)(-a)

C. a*3

D. a*4=3

C 20. 语句x=(a=3,b=++a);运行后,x、a、b的值依次为(c )。

A. 3,3,4 //逗号运算符及逗号表达式

B. 4,4,3

C. 4,4,4

D. 3,4,3

B 21. 语句a=(3/4)+3%2;运行后,a的值为(b )。

A. 0

B. 1 //注意除号/ 两边均为整型时,结果为整数(不含小数点)

C. 2

D. 3

A 22. char型变量存放的是( A)。//考查变量类型

A. ASCII代码值

B. 字符本身

C. 十进制代码值

D. 十六进制代码值

C 23. 若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为(C )。

A. 3,3 //考查逗号表达式及逗号运算符

B. 4,4

C. 4,3

D. 3,4

B 24. 若有定义:int a; 则语句a=(3 * 4)+ 2 % 3;运行后,a的值为( bB)。

A. 12///////%取余

B. 14

C. 11

D. 17

A 25. 若有定义:int a,b; double x,则以下不符合C语言语法的表达式是( Aa)。

A. x%(-3) //%两侧均应为整型数据

B. a+=-2

C. a=b=2

D. x=a+b

B 26. 若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( B )。

A. x=x*3=2 //x*3不是一个变量名

B. x=(y==1)

C. i=float(x) //应改为i=(float)x

D. i%(-3) //%两侧均应为整型数据

C 27. 设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是( C )。

A. a/b/c*e*3

B. 3*a*e/b/c

C. 3*a*e/b*c //改为3*a*e/b/c

D. a*e/c/b*3

B 28. 下面叙述正确的是( b )。

A. 2/3 与 2.0/3.0 等价

B. (int)2.0/3 与 2/3 等价//强制类型转换将2.0转换成2

C. ++5 与 6 等价//单独写++5是错误的,可以写成a=++5

D. 'A'与"A"等价

A 29. 下面叙述中,错误的是( A )。

A. 其算术运算对象不包含函数

B. %(模运算符)的运算对象只能为整型量

C. 算术运算符的结合方向是"自左至右"

D. 自加和自减运算符的结合方向是"自右至左"

A 30. 下面叙述正确的是(A)。//++ --只能用于变量,而不能用于常量或表达式

A. 强制类型转换运算的优先级高于算术运算

B. 若a和b是整型变量,(a+b)++是合法的

C. 'A'*'B' 是不合法的

D. "A"+"B"是合法的

B 31. 若有定义:int k,i=2,j=4; 则表达式 k=(++i)*(j--) 的值是(B )。

A. 8

B. 12//注意前缀后缀的区别

C. 6

D. 9

C 32. 设整型变量a为5,使b不为2的表达式是(C )。

A. b=(++a)/3

B. b=6-(--a)

C. b=a%2 //结果为1

D. b=a/2 //QUZHENG

C 33. 若有定义:int a=1,b=2,c=3; 则语句 ++a||++b&&++c;运行后b的值为()。

A. 1

B. 0

C. 2 //注意运算的不完全性

D. 3

B 34. 若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是( B )。

A. 7

B. 8

C. 9

D. 10

B 35. 若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是(b )。

A. 7////a没有被赋值成为4,所以a=2

B. 8

C. 9

D. 10

B 36. 若有定义:int m=5,n=3;则表达式(m+1,n+1,(--m)+(n--))的值是(B )。

A. 6///与上一题同理,mn没有被赋值

B. 7

C. 8

D. 9

B 37. 已知 int a;使用scanf()函数输入一个整数给变量a,正确的函数调用是( b )。

A. scanf("%d",a);

B. scanf("%d",&a);

C. scanf("%f",&a);

D. scanf("%lf",&a);

D 38. 已知 double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是( d)。

A. scanf("%ld",&a);

B. scanf("%d",&a);

C. scanf("%7.2f",&a); //输入数据时不能规定精度

D. scanf("%lf",&a);

B 39. 已知 char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是( B )。

A. scanf("%d",&a);

B. scanf("%lf",&a); //字符型变量与整型等价,但不与浮点型等价

C. scanf("%c",&a);

D. scanf("%u",&a);

B 40. putchar()函数的功能是向终端输出(B )。// char *str0;….;puts( str0);

A. 多个字符//puts()才是输出多个字符

B. 一个字符

C. 一个实型变量值

D. 一个整型变量表达式

D 41. getchar()函数的功能是从终端输入(D )。

A. 一个整型变量值

B. 一个实型变量值

C. 多个字符

D. 一个字符

D 42. 若有定义:int x=1234,y=123,z=12;则语句printf("%4d+%3d+%2d", x, y, z);运行后的输出结果为(D )。

A. 123412312

B. 12341234123412341231231231212

C. 1234+1234+1234

D. 1234+123+12

A 43. 已有如下定义和输入语句,

int a; char c1,c2;

scanf("%d%c%c",&a,&c1,&c2);

若要求a、c1、c2的值分别为10、A和B,正确的数据输入是(A )。

A. 10AB //输入数据时,遇空格、回车、TAB、及非法输入或按规定的宽度结束

B. 10 A B

C. 10A B

D. 10 AB

B 44. 已有如下定义和输入语句:

int a,b;

scanf("%d,%d",&a,&b); //“格式控制”字符串中除了格式说明还有其他字符,则输

入//时应在相应位置输入

若要求a、b的值分别为10和20,正确的数据输入是(B )。

A. 10 20

B. 10,20

C. a=10,b=20

D. 10;20

D 45. 以下程序的运行结果是( D)。void main()

{

int a=65;

char c='A';

printf("%x,%d",a,c);

}

A. 65,a

B. 41,a

C. 65,65

D. 41,65

A 46. 下面叙述中,(A )不是结构化程序设计中的三种基本结构之一。

A. 数据结构

B. 选择结构

C. 循环结构

D. 顺序结构

A 47. 下面叙述中,(A )不是结构化程序设计三种基本结构的共同特点。

A. 先判断后执行

B. 单入口,单出口

C. 程序中没有执行不到的语句

D. 无死循环

A 48. 结构化程序设计不包括( A )。

A. 最优化

B. 自顶而下,逐步细化

C. 模块化设计

D. 结构化编码

D 49. 以下运算符中优先级最高的是(D )。

A. >

B. ||

C. &&

D. + //初等运算符()[] 单目算术关系逻辑(不含!)赋值逗号

A 50. 若有定义:int x=3,y=4;则表达式 !x||y 的值为( A)

A. 1////0//非零=1

B. O

C. 3

D. 4

A 51. 若有定义:int i=7,j=8;则表达式 i>=j||i

A. 1

B. 变量i的值

C. 0

D. 变量j的值

C 52. 若希望当a的值为奇数时,表达式的值为"真",a的值为偶数时,表达式的值为"假"。则不能满足要求的表达式是( C)。

A. a%2==1

B. !(a%2==0)

C. !(a%2)//偶数时为1.奇数时为0

D. a%2

D 53. 若有定义:int x=3,y=4,z=5;则值为0的表达式是(D )。

A. 'x'&&'y'//120&&121=1

B. x<=y//1

C. x||y+z&&y-z//////3//9&&-1

D. !((x

A 54. 若有定义:int a=5,b=2,c=1;则表达式a-b

A. 0

B. 1

C. 2

D. -1

A 55. 已知double a=5.2; 则正确的赋值表达式是(a )。

A. a+=a-=(a=4)*(a=3)

B. a=a*3=2///a*3不是变量

C. a%3////%两边都要是整形变量

D. a=double(-3) 、、、(double)(-3)

A 56. 已知char a='R'; 则正确的赋值表达式是(A )。

A. a=(a++)%4

B. a+2=3

C. a+=256--

D. a='\078'

A 57. 已知int a='R'; 则正确的表达式是(A )。

A. a%10///A=82

B. a=int(3e2)

D. a=a+a=a+3与C 同属一类错误

A 58. 设单精度型变量f、g的值均为2.0,使f为4.0的表达式是( A)。

A. f+=g

B. f-=g+2

C. f*=g-6

D. f/=g*10

B 59. 若有定义:float x=3.5;int z=8;则表达式 x+z%3/4 的值为( B)。

A. 3.75

B. 3.5

C. 3

D. 4

A 60. 若有定义:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式 (x=a>b)&&(y=c>d) 的值为(A )。

A. 0

B. 1

C. 5

D. 6

A 61. 若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是( A)。//(float)(a+b)/2=2.5

A. 3.5

B. 3.0

C. 2.5

D. 2.0

C 62. 若有定义:int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是(C)。

A. 2.5 //(b/2*(int)(a+c)/2)=10 注意运算顺序

B. 3.5

C. 4.5

D. 5.5

C 63. 若有定义:int a=6,b=2;char c1='a',c2='b';则表达式a+b%5+c2-c1的值是(C)。

A. 7

B. 8

C. 9

D. 表达式错误

B 64. 以下的if语句中,x的值一定被重新赋值的是()。

A. if(x==y) x+=y;

B. if(x>y && x!=y ); //注意if语句后的空语句;

x+=y;

C. if(x!=y)

scanf("%d",&x);

else

scanf("%d",&y);

{ x++;y++; }

B 65. C语言对if嵌套语句的规定:else总是与( B)配对。

A. 第一个if

B. 之前最近的且尚未配对的if

C. 缩进位置相同的if

D. 之前最近的if

B 66. 对于整型变量x,下述if语句(B )与赋值语句: x=x%2==0?1:0;

不等价。

A. if (x%2!=0) x=0; else x=1;

B. if (x%2) x=1; else x=0;

C. if (x%2==0) x=1; else x=0;

D. if (x%2==1) x=0; else x=1;

B 67. 若有定义:int x=1,y=2,z=4;则以下程序段运行后z的值为( B)。if(x>y) z=x+y;

else z=x-y;

A. 3

B. -1

C. 4

D. 不确定

D 68. 若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为(D )。if (a

{c=a;a=b;b=c;}

A. a=1,b=2,c=3

B. a=2,b=3,c=1

C. a=2,b=3,c=3

D. a=2,b=1,c=1

D 69. 以下程序段运行后变量a的值为()。int x=6,y=5;

int a;

a=(--x==y++)?x:y+1;//X

已经被赋值为5了

A. 0

B. 1

C. 6

D. 5 、、、、、、、//2013-05-27.晚上21.13

C 70. 以下程序的运行结果是()。//注意分支中有无break的区别void main()

{

int n='e';

switch(n--)

{

default: printf("error ");

case 'a':

case 'b': printf("good "); break;//br eak.跳出 case 'c': printf("pass ");

case 'd': printf("warn ");

}

}

A. error

B. good

C. error good

D. warn

C 71. 以下程序的运行结果是( C )。void main()

{

int n='c';

switch(n++)

{

default: printf("error "); break; case 'a':

case 'b': printf("good "); break; case 'c': printf("pass ");

case 'd': printf("warn ");

}

}

A. pass

B. warn

C. pass warn

D. error

D 72. 以下程序的运行结果是()。

void main( )

{ int n=5;

if(n++>=6)先取值后运算n=6

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

else

printf("%d\n",++n);先运算后取值n=7 }

A. 4

B. 5

C. 6

D. 7

B 73. 设有整型变量x,下述语句(B)不会出现死循环。

A. for(;;x+=1);

B. for(;(x=getchar())!='\n';);

C. while(1) {x++;}

D. for(x=10;;x--);

B 74. 对于整型变量x,与while(!x)等价的是(B)。

A. while(x!=0)

B. while(x==0)

C. while(x!=1)

D. while(~x)

A 75. 对于整型变量x和y,语句

for(x=0,y=0;(y!=123)&&(x<4);x++) y++; 中的“y++;”被执行(A)。

A. 4次

B. 0次

C. 123次

D. 3次

B 76. 在c语言中while循环和do--while循环的主要区别是(B)。

A. do--while循环体内可以使用break语句,while循环体内不能使用break语句

B. do--while的循环体至少无条件执行一次,while的循环体不是

C. do--while循环体内可以使用continue语句,while循环体内不能使用continue语句

D. while的循环体至少无条件执行一次,do--while的循环体不是

B 77. 以下程序段运行后,循环体运行的次数为(BB)。int i=10,x;

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

A. 10

B. 0

C. 1

D. 无限

D 78. 以下程序段运行后变量n的值为(D)。

int i=1,n=1;

for (;i<3;i++)

{continue;n=n+i;}//continue语句结束本次循环,转而进行下一次同层的循环过程

A. 4

B. 3

C. 2

D. 1

B 79. 以下程序的运行结果是()。void main()

{

int sum = 0, item = 0;

while(item < 5)

{

item++;

sum += item;

if(sum==5)

break;

}

printf("%d\n",sum);//sum不可能等于5 }

A. 10

B. 15

C. 5

D. 6

C 80. 以下程序的运行结果是(C)。void main()

{

int sum = 0, item = 0;

while(item < 5)

{

item++;

sum += item;

if(sum>=6)

break;

}

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

}

A. 10

B. 15

C. 6

D. 7

B 81. 以下程序的运行结果是( B )。void main()

{

int sum = 0, item = 0;

while(item < 5)

{

item++;

if(item == 2)

continue;

sum += item;

}

printf("%d\n",sum);//1+3+4+5=13 }

A. 10

B. 13

C. 15

D. 1

A 82. 下列数组定义中,正确的是(A )。

A. int a[5]={0};

B. int a[]={0 1 2}; // int a[]={0 , 1,2}; 注意元素与元素之间加逗号

C. int a[5]=0; // int a[5]={0};

D. int a[]; //必须指明数组大小

A 83. 下列数组定义中,正确的是(A )。

A. int a[10];

B. int n=10,a[n]; //下标必须是常量表达式

C. int N=10;int a[N];

D. int n;scanf("%d",&n); int a[n];

A 84. 已知 int a[10]; 则对a数组元素引用不正确的是( A )。

A. a[10] //10个元素的数组下标范围从0到9 ,故此题越界

B. a[3+5]

C. a[10-10] //引用数组元素时,下标可以是整型常量或整型表达式

D. a[5]

B 85. 若有定义:int a[3]={0,1,2};则a[1]的值为(B )。

A. 0

B. 1

C. 2

D. 3

A 86. 若有定义:int a[5]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为( A)。

A. 6

B. 5

C. 1

D. 2

D 87. 以下能对一维数组a进行正确初始化的语句是( D)。

A. int a[5]=(0,0,0,0,0);

B. int a[5]=[0]; //注意使用大括号

C. int a[5]={1,2,3,4,5,6,7};//多余2个

D. int a[]={0}; //定义一个只有一个元素的一维数组,指为0

D 88. 下面程序段的运行结果是()。

int i=0,a[]={3,4,5,4,3};

do{

a[i]++;

}while(a[++i]<5);//若为假则不执行循环直接跳出。。所以i=4,5不执行for(i=0;i<5;i++)

printf("%d ",a[i]);

A. 4 5 6 5 4

B. 3 4 5 4 3

C. 4 5 5 5 4

D. 4 5 5 4 3

C 89. 下面程序段的运行结果是()。int i=0,a[]={7,5,7,3,8,3};

do{

a[i]+=2;

}while(a[++i]>5);

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

printf("%d ",a[i]);//与上题同理

A. 9 7 9 5 10 5

B. 9 5 9 3 10 3

C. 9 5 7 3 8 3

D. 7 5 7 3 8 3

A 90. 下面程序段的运行结果是( A )。int i=0,a[]={1,2,3,4,5};

do{

a[i]+=10;

}while(a[++i]>2);

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

printf("%d ",a[i]);

A. 11 2 3 4 5

B. 1 2 3 4 5

C. 11 12 13 14 15

D. 11 12 3 4 5

C 91. 设有如下程序段:

int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0;

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

for(j=0;j

s=s+a[i][j];

则执行该程序段后,s的值是( c)。//a[1][0]+a[2][0]+a[2][1]

A. 0

B. 1

C. 2

D. 3

B 92. 有如下定义

int a[][3]={1,2,3,4,5,6,7,8}; //考查二维数组的初始化则数组a的行数是( b)。

A. 2

B. 3

C. 4

D. 无法确定的

D 93. 以下数组定义中,正确的是( d )。

A. int a[2][3]={1,2,3,4,5,6,7};//多余1个

B. int a[][]={{1,2,3},{4,5,6},{7,8,9}}; //第二维长度不能省

C. int a[2][]= {1,2,3,4,5,6};

D. int a[][4]= {6};

A 94. 若有定义:int a[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为( a)。

A. 0

B. {1,2}

C. 1

D. 3

A 95. 若有定义:int a[3][3];则表达式&a[2][1]-a的值为()。

A. 7 //&a[2][1]-a 代表两者之间的元素个数,类似指向同种类型的指针相减

B. 8

C. 6

D. 9

C 96. 若有定义:int i=0,x=0;int a[3][3]={1,2,3,4,5,6,7,8,9};则以下程序段运行后x的值为( c)。

for (;i<3;i++) x+=a[i][2-i];

A. 0

B. 12

C. 15

D. 18

D 97. 若有定义int a[2][3];则对数组元素的非法引用是( D )。

A. a[0][1/2]

B. a[1][1]

C. a[4-4][0]

D. a[0][3]

C 98. 以下数组定义中,正确的是(C )。

A. int a[2][]={1,2,3,4,5}; //二维数组第二维长度不能省

B. int a[][2]={{0},{}};

C. int a[2][2]={{1,2},{3}};

D. int a[][]={1,2,3,4};

D 99. 若有定义int a[][3]={1,2,3,4,5,6,7,8,9};则表达式sizeof(a)/sizeof(a[0]) 的值为( D )。

A. 3

B. 4

C. 5

D. 9

A 100. 设有以下变量定义:

char str1[]="string",str2[8],*str3,*str4="string"; ()是正确的。

A. strcpy(str1,"China");

B. str2="China";

C. strcpy(*str3,"China");

D. strcpy(str4[0],"China");

D 101. 有如下定义:

char str[6]={ 'a','b','\0','d','e','f'}; 则语句:

printf("%s",str);

的输出结果是(D )。

A. ab\

B. abdef

C. ab\0

D. ab

C 102. 设有如下数组定义:

char str[8]={ "FuJian"};

则分配给数组str的存储空间是(C )个字节。

A. 6

B. 7

C. 8

D. 9

B 103. 若有定义:char a[]="abcdef";char b[]="xyz";则以下程序段运行后屏幕输出为( B)。

strcpy(a,b);

printf("%c",a[2]);//strcpy字符串复制

A. c

B. z

C. \0

D. d

C 104. 以下程序段运行后屏幕输出为(C)。

char a[]="abc\0mis";/\\\\\\\\\\\\\\\0字符串结束标志strlen作为计算字符串的长度printf("%d",strlen(a));

A. 5

B. 8

C. 3

D. 4

B 105. 若有定义:int a=2;则语句a=strcmp("miss","miss");运行后a的值为( B)。

A. 1 //相等返回0 ,字符串1>字符串2,返回一个正整数,否则返回负整数

B. 0 //strcmp(str1,str2)

C. -1

D. 2

B 106. 以下程序段运行后屏幕输出为(B )。

char str[]="ab\\cd"; 注意\\代表一个反斜杠字符 printf("%d",strlen(str));

A. 4

B. 5

C. 6

D. 7

A 107. 以下程序段运行后屏幕输出为(A )。

char str[80];strcpy(str,"hello");printf("%d",strlen(str));

A. 5//strcpy 复制字符串。。strlen计算字符串的大小

B. 6

C. 7

D. 80

B 108. 若有定义:char str1[6]="abcdm",*ps,*str2="abcdef";(B)是正确的。

A. strcpy(str1,str2);

B. 表达式strcmp(str1,str2)的值大于0

C. str1=str2;

D. 表达式strlen(str1)的值为6

A 109. 设有如下函数定义:

int fun(char *str)

{ char *p=str;

while ( *p != '\0') p++;

return (p-str);

}

则以下语句执行后的输出结果是()。//返回字符串个数printf("%d\n",fun("Student"));

A. 7

B. 8

C. 9

D. 10

A 110. 以下程序的运行结果是()。

int fun(int array[4][4])

{ int j;

for(j=0;j<4;j++) printf("%2d",array[2][j]); printf("\n");

}

main()

{ int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0}; fun(a);

}

A. 2 0 0 5

B. 1 0 0 4

C. 0 1 2 0

D. 0 4 5 0

C 111. 如下fun函数的类型是()。fun(float x)

{double y; int z ;

y=x * x ;

z=(int)y ;

return(z);

}

A. void

B. double

C. int

D. float

B 112. 以下程序运行后屏幕输出为()。#include

int f(int x,int y)

{

return(x+y);

}

main()

{

int a=2,b=3,c;

c=f(a,b);

printf("%d+%d=%d\n",a,b,c); }

A. 0

B. 2+3=5

C. 2+3=0

D. 3+2=5

D 113. 以下程序运行后屏幕输出为()。//考查全局变量与局部变量的区别及范围#include

int a=2,b=3;

int max(int a,int b)

{

int c;

c=a>b?a:b;

return(c);

}

main()

{

int a=4;

printf("%d",max(a,b));

}

A. 2,3

B. 2

C. 3

D. 4

B 114. 以下程序运行后屏幕输出为()。#include

void f(int i) //两个函数中的a不一样{

int a=2;

a=i++;

printf("%d,",a);

}

main()

{

int a=1,c=3;

f(c);

a=c++;

printf("%d",a); }

A. 4,3

B. 3,3

C. 4,5

D. 3,5

D 115. 若有如下函数定义://注意静态变量的使用int fun()

{

static int k=0;

return ++k;

}

以下程序段运行后屏幕输出为()。

int i;

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

printf("%d",fun());

A. 0

B. 1

C. 5

D. 6

D 116. 下面程序的输出结果是()。#include

int global=100;

fun()

{

int global=5;

return ++global;

}

void main()

{

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

}

A. 100

B. 101

C. 5

D. 6

B 117. 下列关于C语言函数的描述中,正确的是()。

A. 函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C. 函数的定义和函数的调用都可以嵌套

D. 函数的定义和函数的调用都不可以嵌套

D 118. 若有以下宏定义,#define MOD(x,y) x%y

则执行以下程序段后,z的值是()。int z,a=15,b=100;

z=MOD(b,a);

A. 100

B. 15

C. 11

D. 10

B 119. 以下叙述中,正确的是(B )。

A. “#define PRICE=30”定义了与30等价的符号常量PRICE

B. 预编译处理命令行都必须以“#”开头

C. 宏名只能包含大写字母和数字字符//可以包括小写字母

D. 在程序的一行上可以书写几个有效的宏定义

A 120. Z以下叙述中,正确的是( A)。

A. 宏展开不占用运行时间,只占用编译时间

B. 预编译处理命令行必须以分号结束

C. 一个源程序只能有一个预编译处理命令行

D. 使用带参数的宏定义时,应该说明每个参数的数据类型

C 121. 以下的叙述中不正确的是()。

A. 宏展开不占用运行时间,只占用编译时间

B. 宏名无类型

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

D. 预处理命令行都必须以#号开始

A 122. 若有定义:#define PI 3,则表达式PI*2*2的值为()。

A. 12

B. 4

C. 3

D. 不确定

C 123. 以下程序运行后,屏幕输出为()。#define MIN(a,b) ((a)<(b)?(a):(b))

main()

{int x=2,y=3,z;

z=2*MIN(x,y);

printf("%d",z);

}

A. 2

B. 3

C. 4

D. 6

A 124. 下面程序的输出结果是()。#include

#define SQR(x) (x*x)

void main()

{

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

全国计算机二级C语言操作题题库

1.程序Cmody021.c输出如下所示图形: * *** ***** ******* ********* #include void main() { int i,j;for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++)printf(" "); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 2.程序Cmody032.c的功能是:输出201-300之间的所有素数,统计总个数。#include #include void main() { int num; printf("\n"); num=fun(); printf("\nThe total of prime is %d",num); getch(); } int fun() { int m,i,k,n=0; for(m=201;m<=300;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) /**/if(m/i==0)/**/ break; /**/if(i==k)/**/ { printf("%-4d",m); n++;

if(n%10==0)printf("\n"); } } return n; } 3. 程序Cmody041.c,其功能是统计输入字符串中小写英文字母的个数。如输入:abcdEFGHIJK123 输出:4 #include #include main() { char str1[128]; /**/int i,len,sum=0;/**/ gets(str1); len=strlen(str1); for(i=0;i='a'&&str1[i]<='z')/**/ sum++; } printf("%d\n",sum); getch(); } 4.程序Cmody051.c,其功能是统计输入字符串中大写英文字母的个数。如输入:abcDEFGH123 输出:5 #include #include main() { /**/char str1[128]/**/ int i,len,sum=0; printf("Please input a string:\n"); scanf("%s",str1); len=strlen(str1); for(i=0;i='A'&&str1[i]<='Z') /**/sum++;/**/

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

新版计算机二级C语言测试题及答案解析

计算机二级C语言测试题及答案解析计算机二级C语言测试题及答案解析 C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,下面给大家整理了计算机二级C语言测试题及答案,欢迎阅读! 计算机二级C语言测试题及答案解析 1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C 开始执行。 A、程序中第一条可执行语句 B、程序中第一个函数 C、程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是( C )。

A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B ) 。 A、 C程序的工作过程是编辑、编译、连接、运行 B、 C语言不区分大小写。 C、 C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。 A、-a1 B、a[i] C、a2_i D、int t 5~8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成

数字不能作为标识符的开头 关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int 为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是( C )。 A、 %x B、a+b C、a123 D、123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

全国计算机等级考试二级C语言真题2013年3月

全国计算机等级考试二级C语言真题2013年3月 (总分40, 做题时间90分钟) 一、选择题 1. 程序流程图中带有箭头的线段表示的是______。 A 图元关系 B 数据流 C 控制流 D 调用关系 答案:C [解析] 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。 2. 结构化程序设计的基本原则不包括______。 A 多态性 B 自顶向下 C 模块化 D 逐步求精 答案:A [解析] 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。 3. 软件设计中模块划分应遵循的准则是______。 A 低内聚低耦合 B 高内聚低耦合

C 低内聚高耦合 D 高内聚高耦合 答案:B [解析] 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 4. 在软件开发中,需求分析阶段产生的主要文档是______。 A 可行性分析报告 B 软件需求规格说明书 C 概要设计说明书 D 集成测试计划 答案:B [解析] A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 5. 算法的有穷性是指______。 A 算法程序的运行时间是有限的 B 算法程序所处理的数据量是有限的 C 算法程序的长度是有限的 D 算法只能被有限的用户使用

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机二级c语言题库

一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 (D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67

计算机二级考试C语言试题及答案第一套

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。) (1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 A)PAD图 B)N-S图 C)结构图 D)数据流图 (2)结构化程序设计主要强调的是 A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性 (3)为了使模块尽可能独立,要求 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (4)需求分析阶段的任务是确定 A)软件开发方法 B)软件开发工具 C)软件开发费用 D)软件系统功能 (5)算法的有穷性是指

A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序 (7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序 (8)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性 B)关系 C)键 D)域 (9)有三个关系R、S和T如下: R B C D a 0 k1 b 1 n1 S B C D f 3 h2 a 0 k1

2016年计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 A.20 B.0或35 C.15 D.16 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 A.1:m联系 B.m:n联系 C.1:1联系 D.m:l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

(完整版)历年全国计算机二级C语言题库

50道C语言知识题 1.以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出 D)用C程序实现的算法可以既没有输入也没有输出 2.下列可用于C语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段 inta=3,b=5,c=7;

全国计算机二级C选择题试题库第34套

全国计算机二级C选择题题库第34套 1、下列叙述中错误的是 A) 数据结构中的数据元素不能是另一数据结构 B) 数据结构中的数据元素可以是另一数据结构 C) 空数据结构可以是线性结构也可以是非线性结构 D) 非空数据结构可以没有根结点 参考答案:A 数据元素是一个含义很广泛的概念,它是数据的"基本单位",在计算机中通常作为一个整体进行考虑和处理。数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合,所以数据结构中的数据元素可以是另一数据结构。 满足有且只有一个根结点并且每一个结点最多有一个前件,也最多有一个后件的非空的数据结构认为是线性结构,不满足条件的结构为非线性结构。 空数据结构可以是线性结构也可以是非线性结构。非空数据结构可以没有根结点,如非性线结构"图"就没有根结点。 故选A选项。 2、为了降低算法的空间复杂度,要求算法尽量采用原地工作(in place)。所谓原地工作是指 A) 执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化) B) 执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化 C) 执行算法时不使用额外空间 D) 执行算法时不使用任何存储空间 参考答案:A 算法的空间复杂度是指执行这个算法所需要的内存空间,包括输入数据所占的存储空

间、程序本身所占的存储空间、算法执行过程中所需要的额外空间。 如果额外空间量相对于问题规模(即输入数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。 故选A选项 3、某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为 A) m-1 B) m C) 1 D) 0 参考答案:A 循环队列长度为m,由初始状态为front=rear=m,可知此时循环队列为空。入队运算时,首先队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。特别的,当队尾指针rear=m+1时,置rear=1。退队运算时,排头指针进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。 从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列 中的元素。如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m 。该题中m-1

计算机二级C语言测试题(含答案)

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和*/ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

计算机二级c语言1-3章先择题(带答案)

1.第一章第二章 1.C语言的函数体由()括起来。 A)<> B){} C)[] D)() 2.下面叙述错误的是() A)一个C源程序可由一个或多个函数组成 B)构成C语言源程序的基本单位是语句 C)C源程序中大、小写字母是有区别的 D)若一条语句较长,可分写在下一行或多行上 3.下面叙述正确的是() A)每行最多只能写两条语句 B)main()函数必须位于源程序文件的开头C)所有语句都必须以分号;结束 D)程序中必须含有自定义函数 4.C源程序中main()函数的位置()。 A)必须位于程序的最前面 B)必须在自定义函数前面C)必须在系统库函数后面 D)可以在自定义函数后面 5.结构化程序设计不包括()。 A)最优化 B)自顶而下,逐步细化C)模块化设计 D)结构化编码 6.下面叙述中,()不是结构化程序设计中的三种基本结构之一。 A)数据结构B)选择结构C)循环结构D)顺序结构

2.第三章数据类型、运算符和表达式 1.(B )为非法的字符串常量 A)“056”B)‘123’C)““D)“case” 2.( B )为正确的用户标识符。 A)min-5 B)max_at C)3_row D)union 3.以下(D )是正确的变量名。 A) a.bee B) -p11 C) int D) p_11 4.以下(D )是正确的变量名。 A)5f B)if C) f.5 D)_f5 5.以下(D )是正确的常量。 A)E-5 B)1E5.1 C)'a12' D)32766L 6.以下(A )是不正确的字符串常量。 A)'abc' B)"12'12" C)"0" D)" " 7.以下(BC )是正确的字符常量。 A)"c" B)'\\' C)'W' D)"\32a" 8.char型变量存放的是(A)。 A)ASCII代码值 B)字符本身C)十进制代码值 D)内码值 9.( B)为合法的常量。 A)5,236 B) 1.23E+8 C)‘b_k’D) 3.21E-6.5 10.(D)为正确的字符常量 A)‘\084’B)‘bcd’C)‘165’D)‘@’ 11.若有定义:int b=-15;则(D)为正确的赋值表达式。 A)*b=6 B)b=*5 C)b+10=-5 D)b+=b*3 12.若有定义:int x=2;则正确的赋值表达式是(A )。 A)a-=(a*3) B)double(-a) C)a*3 D)a*4=3 13.若有定义:float x=2,y;int a=3 ;语句y=1*(x+a)/3;运行后,y的值为(B)。 A)2.0 B)1.666667 C)1.0 D)0 14.若有定义:int a,b=5;语句a=(b/2)+b%2;运行后,a的值为(A ) A) 3 B) 4 C)0 D)2 15.下面叙述正确的是(B) A)2/3与2%3等价 B)5/(int)4.0与5/4等价C)++2与--3等价 D)++2与3等价 16.若有定义:int a,b=6;语句a=--b;运行后,a、b的值分别是(C)。 A) 6 6 B) 5 6 C) 5 5 D) 6 5 17.若有定义:int i=3,j=6;则表达式(--i)*(j++)的值为( D)。

2020计算机二级C语言考试真题汇总

模拟卷1 1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: 参考解析: 【参考答案】 【解题思路】 填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。 填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。 填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。 二、程序修改题 2 [简答题] 下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。 例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!

参考解析: 【参考答案】 (1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1)变量k存放数组e的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三. 程序设计题 3 [简答题] 规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。 例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是: “****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 参考解析: 【参考答案】 【考点分析】 本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。 【解题思路】 对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘\0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘\0’。

全国计算机等级考试二级C语言真题库之选择题(15)

全国计算机等级考试等级考试真题库之选择题(15) 1.下列链表中,其逻辑结构属于非线性结构的是 A) 二叉链表 B) 循环链表 C) 双向链表 D) 带链的栈 参考答案:A 【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。 2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 A) 15 B) 16 C) 20 D) 0或35 参考答案:D 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。 3.下列关于栈的叙述中,正确的是 A) 栈底元素一定是最后入栈的元素 B) 栈顶元素一定是最先入栈的元素 C) 栈操作遵循先进后出的原则 D) 以上说法均错误 参考答案:C 【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或"后进先出"表,所以选择C。 4.在关系数据库中,用来表示实体间联系的是 A) 属性 B) 二维表 C) 网状结构 D) 树状结构 参考答案:B

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

二级C语言考试题

1.程序设计语言的语言处理程序是一种___A___。(1分) A 、系统软件 B 、应用软件 C 、办公软件 D 、工具软件 2. 计算机只能直接运行__C____。(1分) A 、高级语言源程序 B 、汇编语言源程序 C 、机器语言程序 D 、任何源程序 3.为解决某一特定问题而设计的指令序列称为___C___。(1分) A 、文档 B 、语言 C 、程序 D 、系统 4. 程序设计中,若用数组名作为函数调用的实参,传递给形参的是___D___。(1分) A 、数组第一个元素的值 B 、数组中全部元素的值 C 、数组元素的个数 D 、数组的首地址 5. 编制一个好的程序首先要确保它的正确性和可靠性,除此以外,通常更注重源程序的______。(1分) A 、易使用性、易维护性和效率 B 、易使用性、易维护性和易移植性 C 、易理解性、易测试性和易修改性 D 、易理解性、安全性和效率 6. 程序设计中,下列结论只有一个是正确的,它是__A____。(1分) A 、递归函数中的形式参数是自动变量 B 、递归函数中的形式参数是外部变量 C 、递归函数中的形式参数是静态变量 D 、递归函数中的形式参数可以根据需要自己定义存储类型 7.__A____是面向对象程序设计语言不同于其它语言的主要特点。 (1分) A 、继承性 B 、消息传递 C 、多态性 D 、静态联编 8. 从软件工程的观点,软件是___B___。(1分) A 、程序的集合 B 、程序、数据和文档的集合 C 、算法的集合 D 、算法和程序的集合 9. 存储器管理主要是对__A____的管理。(1分) A 、内存 B 、外存 C 、内存和外存 D 、文件 10. 设W 为二维数组,其中每个数据元素占用6个字节,行下标i 从0到8 ,列下标j 从2到5,W 中第6行的元素和第4列的元素共占用___A___个字节。(1分) A 、78 B 、72 C 、66 D 、84 11. 函数的形参和实参结合是__C____(1分) A 、传值 B 、传地址 C 、根据情况而定 D 、传名字 12. 下面关于变量的生存周期的说法错误的是_A_____(1分) A 、全局变量的生存周期从程序运行开始到程序结束 B 、局部变量的生存周期从块或函数的开始到块或函数的结束 C 、静态局部变量的生存周期与全局变量相同 D 、静态全局变量的作用域是整个程序 13. 对计算机进行程序控制的最小单位是__C____。(1分) A 、语句 B 、字节 C 、指令 D 、程序 14. 通常面向对象程序设计的英文缩写用__C____。(1分) A 、OOA B 、OOD C 、OOP D 、OOT 15. 在软件设计和编码时,采取___B____等措施都有利于提高软件的可测试性。(1分) A 、不使用标准文本以外的语句,书写详细正确的文档 B 、不使用标准文本以外的语句,采用良好的程序结构 C 、书写详细正确的文档,信息隐蔽 D 、书写详细正确的文档,采用良好的程序结构 16. 程序段和数据段的地址信息在__D____中保存。(1分) A 、进程标识符 B 、处理机状态 C 、进程调度信息 D 、进程控制信息

相关主题