当前位置:文档之家› 2009年9月计算机等级考试二级C语言笔试试题及答案解析

2009年9月计算机等级考试二级C语言笔试试题及答案解析

2009年9月计算机等级考试二级C语言笔试试题及答案解析
2009年9月计算机等级考试二级C语言笔试试题及答案解析

2009年9月计算机等级考试二级C语言笔试试题及答案解析

2009年9月全国计算机等级考试二级C语言笔试试题

一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是(C)

A)循环队列 B) 带链队列 C) 二叉树 D)带链栈

(2)下列数据结果中,能够按照“先进后出”原则存取数据的是(B)

A) 循环队列 B) 栈 C)队列 D)二叉树

(3)对于循环队列,下列叙述中正确的是(D)

A)队头指针是固定不变的

B)队头指针一定大于队尾指针

C)队头指针一定小于队尾指针

D)队头指针可以大于队尾指针,也可以小于队尾指针

(4)算法的空间复杂度是指(A)

A)算法在执行过程中所需要的计算机存储空间

B)算法所处理的数据量

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的临时工作单元数

(5)软件设计中划分模块的一个准则是(B)

A) 低内聚低耦合

B) 高内聚低耦合

C) 低内聚高耦合

D) 高内聚高耦合

(6)下列选项中不属于结构化程序设计原则的是(A)

A) 可封装

D) 自顶向下

C) 模块化

D) 逐步求精

(7)软件详细设计产生的图如下:

该图是(C)

A) N-S图

B) PAD图

C) 程序流程图

D) E-R图

(8)数据库管理系统是(B)

A)操作系统的一部分

B) 在操作系统支持下的系统软件

C) 一种编译系统

D) 一种操作系统

(9)在E-R图中,用来表示实体联系的图形是(C)

A) 椭圆图

B) 矩形

C) 菱形

D) 三角形

(10)有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为(D)

A) 选择

B) 投影

C) 交

D) 并

(11)以下叙述中正确的是

A)程序设计的任务就是编写程序代码并上机调试

B)程序设计的任务就是确定所用数据结构

C)程序设计的任务就是确定所用算法

D)以上三种说法都不完整

解析:选D。原文见高教版二级教程P2,程序设计的任务包括A、B、c及相关文档。

(12)以下选项中,能用作用户标识符的是

A)void

B)8_8

C)_0_

D)unsigned

解析:选C。标识符由字母或下划线开头,关键字不能用作标识符。

A、D为关键字,B以数字开头,所以都是错误的。

(13)阅读以下程序

#include

main()

{ int case; float printF;

printf(“请输入2个数:”);

scanf(“%d %f”,&case,&pjrintF);

printf(“%d %f\n”,case,printF);

}

该程序编译时产生错误,其出错原因是

A)定义语句出错,case是关键字,不能用作用户自定义标识符

B)定义语句出错,printF不能用作用户自定义标识符

C)定义语句无错,scanf不能作为输入函数使用

D)定义语句无错,printf不能输出case的值

解析:选A。case是关键字,关键字不能用作标识符。C语言关键字见教材附录。(注:标识符区分大小写,printf是关键字,可用作标识符,当然printF也可以)

(14)表达式:(int)((double)9/2)-(9)%2的值是

A)0 B)3 C)4 D)5

解析:选B。考点为运算符的优先级。

括号>强制类型转换int>乘除>加减

(int)((double)9/2)一(9)%2=(int)(9.0/2)-(9)%2=(int)(4.5)-1=3

(15)若有定义语句:int x=10;,则表达式x-=x+x的值为

A)-20 B)-10 C)0 D)10

解析:选B。考点为复合的赋值运算符。(注意x+x作为一个整体)

x-=x+x→x=x-(x+x) →x=-x=-10

(16)有以下程序

#include

main()

{ int a=1,b=0;

printf(“%d,”,b=a+b);

printf(“%d\n”,a=2*b);

}

程序运行后的输出结果是

A)0,0 B)1,0 C)3,2 D)1,2

解析:选D。考点为赋值表达式的使用,赋值表达式的值和变量的值是一样的。

printf在输出赋值表达式的值时,先赋值再输出。

b=a+b=l+0=1 a=2*b=2

17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是

A)if(a>b) c=a,a=b,b=c;

B)if(a>b) {c=a,a=b,b=c;}

C)if(a>b) c=a;a=b;b=c;

D)if(a>b) {c=a;a=b;b=c;}

解析:选C。考点为if句和逗号表达式的使用。

逗号运算符也称为顺序求值运算符,依次执行逗号表达式中的每个表选式。逗号表达式是一个整体,复合语句也是一个整体,当a>b时,A、B、D中if后的语句可以作为整体被执行,把a、b的值交换。C的等价语句形式为:

if(a>b) c=a;

a=b;b=c;不能实现a、b的值交换。

(18)有以下程序

#include

main()

{ int c=0,k;

for (k=1;k<3;k++)

switch (k)

{ default: c+=k

case 2: c++;break;

case 4: c+=2;break;

}

printf(“%d\n”,c);

}

程序运行后的输出结果是

A)3 B)5 C)7 D)9

解析:选A。考点为switch语句的使用。

switch语句中case和default的顺序可以任意,不影响程序结果。switch语句在循环中被执行2次。

k=l时, c+=k c=0+1=1 无break,继续执行

c++ c=2 有break,终止switch

k=2时,c++ c=3 有break,终止switch ,循环结束,输出c。

(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是

A)if((a>b)&&(b>c)) k=1;

else k=0;

B)if((a>b)||(b>c) k=1;

else k=0;

C)if(a<=b) k=0;

else if(b<=c) k=1;

D)if(a>b) k=1;

else if(b>c) k=1;

else k=0;

解析:选A。考点为条件表达式的使用。

语句的功能为:

a>b且b>c时,k=l

a>b且b<=e时,k=0

a<=b时,k=0

符合语句功能的只有A。

20)有以下程序

#include

main()

{ char s[]={“012xy”};int i,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>=’a’&&s[i]<=’z’) n++;

printf(“%d\n”,n);

}

程序运行后的输出结果是

A)0 B)2 C)3 D)5

解析:选B。考点为字符数组的使用。C语言用字符数组存放字符串,用\O作为结束标志。(\0是ASCII码值为0的字符,也即数值0)程序的功能为统计字符数组s中小写字符的个数,n为计数器。

(21)有以下程序

#include

main()

{ int n=2,k=0;

while(k++&&n++>2);

printf(“%d %d\n”,k,n);

}

程序运行后的输出结果是

A)0 2 B)1 3 C)5 7 D)1 2

解析:选D。考点为while语句的使用。该while(k++&&n++>2);的循环体为空语句,所以程序是输出退出while循环后k、n的值。k++为先使用k的值再增1。先使用k的值,k=0,逻辑与结果为。,第一次执行while循环时条件就不成立,直接退出循环,k的值增1,n的值没有任何改变。

(22)有以下定义语句,编译时会出现编译错误的是

A)char a=’a’;

B)char a=’\n’;

C)char a=’aa’;

D)char a=’\x2d’;

解析:选C。考点为字符型变量的赋值和基本概念。字符型为单引号括起的一个字符。

A为标准的字符型赋值方法,

B为把一个转义字符赋值给字符变量,也是正确的。

C为单引号括起的两个字符,不符合字符型定义。

D表面看上去是错误的,其实是正确的,也是一个转义字符。

‘/x2d’表示ASCII码值为16进制数2d的字符,即‘-’号。

(23)有以下程序

#include

main()

{ char c1,c2;

c1=’A’+’8’-‘4’;

c2=’A’+’8’-‘5’;

printf(“%c,%d\n”,c1,c2);

}

已知字母A的ASCII码为65,程序运行后的输出结果是

A)E,68 B)D,69 C)E,D D)输出无定值

解析:选A。考点为字符型数据的使用和基本知识。字符型数据在内存中存放的是字符的ASCII码值,可以作为整型数据来处理。英文字符和数字在ASCII码表中是按顺序排列的。c1=‘A’+‘8'-‘4’=‘A’+‘4’=E

c2=‘A’+‘8’-‘5’=‘A’+3=‘D’

(24)有以下程序

#include

void fun(int p)

{ int d=2;

p=d++; print f(“%d”,p);}

main()

{ int a=1;

fun(a); printf(“%d\n”,a);}

程序运行后的输出结果是

A)32 B)12 C)21 D)22

解析:选C。考点为函数参数的传递。c语言中函数参数的传递是值传递,是把实参的值传给形参,是单向传递,形参的改变不会影响到实参的值。程序中,把实参a的值传给形参p,p=1,然后p=d++,再次赋值后p=2.输出p的值2。返回到主程序中,输出a的值1。(形参p 的改变不会影响到实参a的值,a的值仍为1)

(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能

#define MIN -2147483647

int findmax (int x[],int n)

{ int i,max;

for(i=0;i

{ max=MIN;

if(max

return max;

}

造成错误的原因是

A)定义语句int i,max;中max未赋初值

B)赋值语句max=MIN;中,不应给max赋MIN值

C)语句if(max

D)赋值语句max=MIN;放错了位置

解析:选D。考点为求最大值的算法。max=MIN.不应该放在循环内,而应该放到for循环的前面。先让max取最小的整数,这样第1次循环时max就可以取得第1个数组元素的值,然后在循环中把后面的数组元素依次和max比较,让max取大值。

(26)有以下程序

#include

main()

{ int m=1,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;

printf(“%d,%d,%d,%d\n”,m,n,*p,*q);

}

程序运行后的输出结果是

A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2

解析:选B。考点为指针的基本概念。

p、q为指针,初始化时p指向m,q指向n。执行r=p; p:q;q:r;后,p和q的值交换,从而p指向n,q指向m。指针的改变不会影响m、n的值,最后*p和*q的值为n、m的值。

(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是

A)p=a

B)q[i]=a[i]

C)p=a[i]

D)p=&a[2][1]

解析:选A。考点为指向二维数组的指针的用法。

p为基类型为int的指针,指向一个整型数据,也就可咀指向一个数组元素,所以D正确。a是二维数组名,存放二维数组的首地址,但二维数组名是一个行指针,其基类型为具有10

个元素的一维数组。所以A错误,二者基类型不一致(p+1指向下一个元素,而a+l指向二维数组的下一行)。如果p定义为int(*p)[10],才可以赋值p=a。在C语言中,二维数组

a[4][10]可以看做是由4个元素组成的一维数组,这4个元素为a[0]、a[l]、a[2]、a[3],而其中每个元素又是由10个元素组成的维数组。在这里,a[i]也是一个数组名,可以表示一维数组的首地址,但a[i]是一个列指针,基类型为int.指向一维数组的第1个元素。同时,指针数组q的每个数组元素q[i]的基类型也为int,所以p、a[i]、q[i]的基类型一致,选项B、C是正确的。

(28)有以下程序

#include

#include

main()

{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];

printf(“%d,”,strlen(p));printf(“%s\n”,p);

}

程序运行后的输出结果是

A)9,One*World

B)9,One*Dream

C)10,One*Dream

D)10,One*World

解析:选C。考点为二维字符数组的使用和strlen()函数的使用。

初始化p=str[l]后,p指向第二个字符串“One*Dream!”。strlen()函数计算字符串的长度时不包括结束标志,所以strlen(p)=10。

(29)有以下程序

#include

main()

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

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

switch(i%2)

{ case 0:switch(a[i]%2)

{case 0:a[i]++;break;

case 1:a[i]--;

}break;

case 1:a[i[=0;

}

for(i=0;i<4;i++) prin tf(“%d”,a[i]); printf(“\n”);

}

A)3 3 4 4

B)2 0 5 0

C)3 0 4 0

D)0 3 0 4

解析:选C。考点为switch语句。

外部switch语句在循环中被执行4次。i=0时,执行case 0.内部switch语句也执行case 0, a[i]++ a[0]=3

i=1时,执行case 1,a[l]=0 排除法,只有C正确。

i=2时,执行case 0.内部switch语句执行case 1. a[i]-- a[2]=4

i=3时,执行case 1,a[3]=0 最后依次输出为:3 0 4 0

(30)有以下程序

#include

#include

main()

{ char a[10]=”abcd”;

printf(“%d,%d\n”,strlen(a),sizeof(a));

}

程序运行后的输出结果是

A)7,4 B)4,10 C)8,8 D)10,10

解析:选B。考点为strlen()函数和sizeof()运算符的使用。

strlen()函数计算字符串的长度时,遇到结束标志为止,且长度不包括结束标

志,所以strlen(a)=4,排除法选B。

sizeof()运算符的操作数可以是类型名或变量名、数组名等,当操作数是数组名时,其结果是数组的总字节数,所咀sizeof(a)=10。

(31)下面是有关C语言字符数组的描述,其中错误的是

A)不可以用赋值语句给字符数组名赋字符串

B)可以用输入语句把字符串整体输入给字符数组

C)字符数组中的内容不一定是字符串

D)字符数组只能存放字符串

解析:选D。考点为字符数组的使用。

字符数组名是数组首地址,是常量,不能被重新赋值,所以A正确。可以用scanf(“%s”,str)对字符串整体输入,str可以是字符数组名或者字符指针,所以B正确。C和D说法对立,必定有一个正确,用排除法A、B选项根本不用看。字符数组的所有元素可以只存放普

通字符,不存放结束标志。所以D错误。

(32)下列函数的功能是

fun(char * a,char * b)

{ while((*b=*a)!=’\0’) {a++,b++;} }

A)将a所指字符串赋给b所指空间

B)使指针b指向a所指字符串

C)将a所指字符串和b所指字符串进行比较

D)检查a和b所指字符串中是否有’\0’

解析:选A。考点为指针的概念及while循环。

While循环条件为:(*b=*a)!='\0’,执行时先把指针a所指向的字符赋给指针b所在内存单元,如果该字符不是结束标志“\0”,执行循环体a++;b++;,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在内存单元,直到遇到结束标志为止。所以正确答案为A。

(33)设有以下函数

void fun(int n,char * s) {……}

则下面对函数指针的定义和赋值均是正确的是

A)void (*pf)(); pf=fun;

B)viod *pf(); pf=fun;

C)void *pf(); *pf=fun;

D)void (*pf)(int,char);pf=&fun;

解析:选A。考点为指向函数的指针的用法。

函数名代表函数的入口地址。指向函数的指针应该定义为void(*pf)( )。如果定义为void *pf( ),则表示函数pf返回值为一个基类型为void的指针。综上,所以正确答案为A。

(34)有以下程序

#include

int f(int n);

main()

{ int a=3,s;

s=f(a);s=s+f(a);printf(“%d\n”,s);

}

int f(int n)

{ static int a=1;

n+=a++;

return n;

}

程序运行以后的输出结果是

A)7 B)8 C)9 D)10

解析:选C.考点为静态局部变量的使用。

主函数和f函数中的a都为局部变量,作用域都在本函数之内,互不影响。f函数中的a为静态局部变量,占用固定的内存单元,下一次调用时仍可保留上次调用时的值。也就是说,如果多次调用f函数,a的定义只在第一次调用时有效,从第二次调用开始,a的定义相当于不存在,直接使用a的值。主函数中调用了2次f(a),第一次调用,s=f(a)=f(3) f 函数:n=3 a=l n=n+(a++)=4 a=2 返回n,主函数s=4。第二次调用,s=s+f(a)=4+f(3)(a值为主函数中的a值) f函数n=3 a=2 n=n+(a++)=5 a=3 返回n,主函数

s=4+f(3)=4+5=9 最后输出s的值为9。

(35)有以下程序

#include

#define f(x) x*x*x

main()

{ int a=3,s,t;

s=f(a+1);t=f((a+1));

printf(“%d,%d\n’,s,t);

}

程序运行后的输出结果是

A)10,64 B)10,10 C)64,10 D)64,64

解析:选A。考点为带参数的宏定义。

宏定义中的参数授有类型,仅为字符序列,不能当作表达式运算。宏展开时,把实参字符串原样写在替换文本中。s=f(a+l)=a+l*a+l*a+l=10

t=f((a+1))=(a+1)*(a+1)*(a+1)=64

(36)下面结构体的定义语句中,错误的是

A)struct ord {int x;int y;int z;}; struct ord a;

B)struct ord {int x;int y;int z;} struct ord a;

C)struct ord {int x;int y;int z;} a;

D)struct {int x;int y;int z;} a;

解析:选B。考点为结构体变量的定义。

可以先定义结构体类型,再定义结构体变量,如A。

可以在定义结构体类型的同时定义结构体变量,如C。

可以直接定义结构体变量,没有类型名,如D。

B选项错误,定义结构体类型的同时使用此类型。

(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是

A)char str[ ]=”string”;c=str;

B)scanf(“%s”,c);

C)c=getchar();

D)*c=”string”;

解析:选A。考点为字符指针的使用。

选项A为正确用法。先将字符串存于字符数组中,然后将数组名赋给字符指针。(数组名代表数组首地址,定义数组时为其分配确定地址)选项C错误。getchar( )函数输入个字符给字符型变量,而不是字符指针。选项B和D有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。

原因:在选项B和D中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。

(38)有以下程序

#include

#include

struct A

{ int a; char b[10]; double c;};

struct A f(struct A t);

main()

{ struct A a={1001,”ZhangDa”,1098.0};

a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);

}

struct A f(struct A t)

( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )

程序运行后的输出结果是

A)1001,ZhangDa,1098.0

B)1001,ZhangDa,1202.0

C)1001,ChangRong,1098.0

D)1001,ChangRong,1202.0

解析:选D。考点为结构体类型在函数中的应用。

因为使用结构体变量,程序看似很杂乱。但在使用中,结构体变量和普通变量的作用是一样的。如果这样看,程序执行流程如下:函数调用f(a)将实参a传给形参t,函数内部对t

重新赋值,然后返回t;主函数a=f(a),把返回值t赋给a,然后输出a,其实就是t的值。

(39)若有以下程序段

int r=8;

printf(“%d\n”,r>>1);

输出结果是

A)16

B)8

C)4

D)2

解析:选C。考点为位运算中右移运算符的使用。

每右移一次,相当于除以2。本题中,r=(8)10=(0000 1000)2

r>>1后,r=( 0000 0100)2 =(4)10

(40)下列关于C语言文件的叙述中正确的是

A)文件由一系列数据依次排列组成,只能构成二进制文件

B)文件由结构序列组成,可以构成二进制文件或文本文件

C)文件由数据序列组成,可以构成二进制文件或文本文件

D)文件由字符序列组成,其类型只能是文本文件

解析:选C。C语言中根据数据的组织形式,分为二进制文件和ASCII码文本文件。一个C 文件是一个字节序列或者二进制序列,而不是一个记录(结构)序列。

二、填空题(每空2分,共30分)

(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有 14 个结点。解析:度为2的结点有5个,则度为0的结点(叶子结点)为5+1=6个,度为1的结点有3个,总结点数位5+6+3=14个。

(2)程序流程图中的菱形框表示的是逻辑条件。

(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中需求分析阶段产生“软件需求规格说明书。

(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为多对多。

解析:一个学生可以选多门功课,一门功课可以多个学生选择。

(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是身份证号码。

解析:关键字的值不能重复,只能是唯一的。

(6)若有定义语句:int a=5;,则表达式:a++的值是 5 。

解析:a++先使用a的值再增加1。

(7)若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值为 1 。

解析:y=(int)(3. )%2=3%2=1。

(8)以下程序运行后的输出结果是 1 0 。

#include

main()

{ int x=20;

p rintf(“%d”,0

printf(“%d\n”,0

解析:“<”的结合性为从左到右。计算O

(9)以下程序运行后的输出结果是 5 。

#include

main()

{ int a=1,b=7;

do {

b=b/2;a+=b;

} while (b>1);

printf(“%d\n”,a);}

解析:考点为do while语句的用法。

程序执行流程:a=l b=7

执行循环体,b=b/2=3 a=4;b>l条件成立,再执行循环体,b=b/2=1 a=5;此时,b>l条件不成立,输出a的值5。

(10)有以下程序

#include

main()

{ int f,f1,f2,i;

f1=0;f2=1;

printf(“%d %d”,f1,f2);

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

{ f=f1+f2; print f(“%d”,f);

f1=f2; f2=f;

}

printf(“\n”);

}

程序运行后的输出结果是 0 1 123 。

解析:程序执行流程:

fl=0 f2=1输出:0 1

For循环变量中的i只起到控制循环次数的作用,循环3次。

i=3 f=f1+f2=0+1=1输出1;

f1=f2=1 f2=f=l

i=4 f=f1+f2=1+1=2输出2;

f1=f2=1 f2=f=2

i=5 f=f1+f2=1+2=3输出3;

f1=f2=2 f2=f=3

注意循环内输出格式控制符没有空格,所以123连续输出。

(11)有以下程序

#include

int a=5;

void fun(int b)

{ int a=10;

a+=b;printf(“%d”,a);

}

main()

{ int c=20;

fun(c);a+=c;printf(“%d\n”,a);

}

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

解析:考点为全局变量和局部变量的用法。

全局变量的作用域为定义开始到文件结束。局部变量的作用域为定义其函数的内部。当局部变量与全局变量同名时,在局部变量作用域内,全局变量不起作用。

程序执行流程:调用函数fun(c),实参c传给形参b,b=20,局部变量a起作用,a=10,a+=b a=a+b=10+20=30,输出a值30。返回到主函数:a+=c 此时a为全局变量。a=a+c=5+20=25,输出a值25。注意格式控制符无空格,所以连续输出。

(12)设有定义:

struct person

{ int ID;char name[12];}p;

请将scanf(“%d”, &p.ID );语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。

解析:考点为结构体成员的引用方法。

结构体变量成员的引用方法:结构体变量.成员名

(13)有以下程序

#include

main()

{ char a[20]=”How are you?”,b[20];

scanf(“%s”,b);printf(“%s %s\n”,a,b);

}

程序运行时从键盘输入:How are you?<回车>

则输出结果为 How are you? How 。

解析:考点为字符串的输人输出。

c语言中用字符数组存放字符串,此题中字符数组a的赋值和输出属于正常用法。关键是字符数组b的输入,C语言把空格作为字符串输入的分隔符,所以字符数组b只能接收到How。(详细参考教材P145页)

(14)有以下程序

#include

typedef struct

{ int num;double s}REC;

void fun1( REC x ){x.num=23;x.s=88.5;}

main()

{ REC a={16,90.0 };

fun1(a);

printf(“%d\n”,a.num);

}

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

解析:考点为函数的参数传递。C语言中函数参数传递是值传递,是把实参的值传给形参,是单向传递,形参的改变不会影响到实参的值。此程序特殊的地方是实参和形参都是结构体变量,用法和普通变量是一样的。

(15)有以下程序

#include

fun(int x)

{ if(x/2>0) run(x/2);

printf(“%d ”,x);

}

main( )

{ fun(6);printf(“\n”); }

程序运行后的输出结果是 1 3 6 。

解析:考点为函数的递归调用。程序的执行过程是先递推、后递归的过程。当x=1时,条件不成立,递归终止。

历年二级C语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 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) 可封装 B) 自顶向下 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)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d \n”,k,n); } 程序运行后的输出结果是 A )0 2 B )1 3 C )5 7 D )1 2 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

全国计算机等级考试二级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语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

计算机二级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语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

全国计算机二级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语言考试题库(含标准答案)

单项选择 ================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10 。printf("%d",a++) 。 A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A' 的ASCⅡ代码值是65, 字符变量c1的值是'A',c2 的值是'D'. 执行语句printf("%d,%d",c1,c2-2) 。后, 输出结果是 A、65,66 B、A,B C、 65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10] 。合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B 题号:45 能正确表示逻辑关系:" a ≥10或a≤0 " 的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0

D 题号:157 main() {int x=1,a=0,b=0 。 switch (x) { case 0: b++ 。 case 1: a++ 。 case 2: a++ 。b++。} printf("a=%d,b=%d",a,b) 。} 该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f 是实型,i 是双精度型,则表达式10+'a'+i*f 值的 数据类型为()。 A、不确定 B、double C、int D、 float 答案: B 题号:1647 以下程序中,while 循环的循环次数是______ main() { int i=0 。 while(i<10) { if(i<1) continue 。 if(i==5) break 。 i++ 。 } } A、死循环,不能确定次数 B、6 C、4 D、1

计算机二级C语言测试题及答案解析(一)

2016年计算机二级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 )。

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

选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C 中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C 。 A、2.5 B、2 C、1 D、3 %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

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

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

第一次上机作业(2014): 要求: ?独立完成,上机调试通过后上交 ?作业提交邮箱: ?邮件主题命名:班级学号姓名(第1次作业), 例如:电1301班2王鹏(第1次作业) ?以附件形式将每次作业的所有程序源程序压缩打包后提交,压缩文件命名格式同上。 ?程序必须采用缩进格式 1.大写字母转换成小写字母 从键盘输入一个大写英文字母,输出相应的小写字母。 例:输入G 输出g 2.求平方根 输入一个实数x,计算并输出其平方根(保留1 位小数)。 例:输入17 输出The square root of 17.0 is 4.1 3.温度转换 设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32) a)输入华氏温度(实型) b)输出的摄氏温度结果保留两位小数 例:Please input Fahrenheit temperature: 76.8 The corresponding Celsius temperature is 24.89 4. 计算旅途时间 输入二个整数time1 和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 (输入的有效的时间范围是0000 到2359,不需要考虑出发时间晚于到达时间的情况。) 例:输入712 1411 (出发时间是7:12,到达时间是14:11) 输出The train journey time is 6 hours 59 minutes. 5. 数字加密 输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。 例:输入1257 输出The encrypted number is 4601 思考题:你能否编程找出谁做的好事? 有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 ?A说:不是我。 ?B说:是C。 ?C说:是D。 ?D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 第二次上机作业(2014): 要求: ?独立完成,程序必须采用缩进格式,上机调试通过后上交

历年全国计算机二级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语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】A) 函数B) 语句C) 字符D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】A) 整型、实型、逻辑型B) 整型、实型、字符型 C) 整型、双精度型、布尔型D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】A) 固定的B) 由用户自己定义的 C) 任意的D) 与机器字长有关

C语言期末上机考试题及答案

C语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

计算机二级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语言考试题库及答案2015

200题) C语言(共 1、下面程序的输出是___D______voidmain() #include{intx=023; voidmain()printf("%d\n",--x); {intk=11;} printf("k=%d,k=%o,k=%x\n",k,k,k);A)17B)18C)23D)24 }11、下面程序的输出的是_____C____. A)k=11,k=12,k=11B)k=11,k=13,k=13#include C)k=11,k=013,k=0xbD)k=11,k=13,k=bvoidmain() {intx=10,y=3; 2、在下列选项中,不正确的赋值语句是__D______.printf("%d\n",y=x/y); A)++t;B)n1=(n2=(n3=0));} C)k=i=j;D)a=b+c=1;A)0B)1C)3D)不确定的值 的 65,下面程序 制 3、下面合法的C语言字符常量是______A____.12、已知字母A的ASCII码为十进 的输出是 ______A_____.A)'\t'B)"A"C)65D)A #include 4、表达式:10!=9的值是________D____.voidmain() A)trueB)非零值C)0D)1{charch1,ch2; ch1='A'+'5'-'3'; 型关键字是ch2='A'+'6'-'3'; 5、C语言提供的合法的数据类 _____B____.printf("%d,%c\n",ch1,ch2); A)DoubleB)shortC)integerD)Char} A)67,DB)B,CC)C,DD)不确定的值 6、字符(char)型数据在微机内存中的存储形式是 __D__.13、若要求在if后一对圆括号中表示a不等于0的关 系,则能正确表示这一关系的表达式为____D__.A)反码B)补码C)EBCDIC码D)ASCII码 A)a<>0B)!aC)a=0D)a 7、C语言程序的基本单位是_____C______. A)程序行B)语句C)函数D)字符14、以下程序的输出结果是____D_____. #include 8、设inta=12,则执行完语句a+=a-=a*a后,a的值是voidmain() ____D____{intx=10,y=10; A)552B)264C)144D)-264printf("%d%d\n",x--,--y); } 9、执行下面程序中的输出语句后,输出结果是A)1010B)99C)910D)109 ____B__. : #include15、设有如下定义 voidmain()intx=10,y=3,z; {inta; 则语句 printf("%d\n",(a=3*5,a*4,a+5));printf("%d\n",z=(x%y,x/y)); }的输出结果是_____D_____. A)65B)20C)15D)10A)1B)0C)4D)3 10、下面程序的输出是____B______.16、为表示关系x≥y≥z,应使用C语言表达式

相关主题
文本预览
相关文档 最新文档