计算机二级C语言精彩试题库Word文件下载.docx
《计算机二级C语言精彩试题库Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言精彩试题库Word文件下载.docx(47页珍藏版)》请在冰豆网上搜索。
for(;
n{n++;
if(n%3!
=0)continue;
k--;
}
k,n);
A〕1,1B〕2,2C〕3,3D〕4,4
6有以下程序
fun(inta,intb)
{if(a>
b)return(a);
elsereturn(b);
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
r);
A〕3B〕6C〕8D〕12
7有以下程序
int*f(int*x,int*y)
{if(*x<
*y)
returnx;
returny;
{inta=7,b=8,*p,*q,*r;
p=&
a;
q=&
b;
r=f(p,q);
%d,%d,%d\n"
*p,*q,*r);
A〕7,8,8B〕7,8,7C〕8,7,7D〕8,7,8
8以下能正确地定义整型变量a,b和c并为其赋初值5的语句是
A)inta=b=c=5;
B)inta,b,c=5;
C)a=5,b=5,c=5;
D)a=c=b=5;
9假如二维数组a有m列,如此在a[i][j]前的元素个数为
A〕j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1
10下面程序段是输出两个字符串中对应相等的字符。
请选择填空
charx[]=〞programming〞;
chary[]=〞Fortran〞;
inti=0;
while(x[i]!
=’\0’&
&
y[i]!
=’\0’)
if(x[i]==y[i])printf(“%c〞,[]);
elsei++;
A)x[i++]B)y[++i]C)x[i]D)y[i]
11假如使用一维数组名作函数实参,如此以下正确的说法是
A〕必须在主调函数中说明次数组的大小
B实参数组类型与形参数组类型可以不匹配
C在被调函数中,不需要考虑形参数组的大小
D实参数组名与形参数组名必须一致
12以下程序的正确运行结果是
#inclued
{intk=4,m=1,p;
p=func(k,m);
printf(“%d〞,p);
printf(“%d\n〞,p);
func(inta,intb)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
A)8,17B)8,16C)8,20D)8,8
13假如有说明:
int*p,m=5,n;
以下正确的程序段是
A)p=&
n;
scanf(“%d〞,&
p);
B)p=&
scanf(“%d〞,*p);
C)scanf(“%d〞,&
n);
*p=n;
D)p=&
*p=m;
14执行以下程序后,a和b的值为
{inta,b,k=4,m=6,*p1=&
k,*p2=&
m;
a=p1==&
b=(-*p1)/(*p2)+7;
printf(“a=%d\n〞,a);
printf(“b=%d\n〞,b);
A)-1,5B)1,6C)0,7D)4,10
15假如要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,如此文件方式字符串应是
A)〞ab+〞B)〞wb+〞C)〞rb+〞D〞ab〞
16根据定义和数据的输入方式,输入语句的正确形式为
已有定义:
floatf1,f2;
数据的输入方式:
4.52
3.5
A)scanf(“%f,%f〞,&
f1,&
f2);
B)scanf(“%f%f〞,&
C)scanf(“%3.2f%2.1f〞,&
D)scanf(“%3.2f%2.1f〞,&
17分析以下程序运行结果
#include
intfunc(intn){
if(n==1)
return1;
return(n*func(n-1));
voidmain(){
intx;
x=func(5);
printf(“%d\n〞,x);
A)100B)5C)1D)120
18分析以下程序运行结果
inty=2,a=1;
while(y--!
=-1){
do{
a*=y;
a++;
}while(y--);
printf(“%d,%d\n〞,a,y);
A)1,-2B)2,1C)1,0D)2,-1
19下面程序段的运行结果是
chara[7]=〞abcdef〞;
charb[4]=〞ABC〞;
strcpy(a,b);
printf(“%c〞,a[5]);
A)空格B)\0C)eD)f
20下面是对s的初始化,其中不正确的答案是
A)chars[5]={“abc〞};
B)chars[5]={‘a’,’b’,’c’};
C)chars[5]=〞〞;
D)chars[5]=〞abcdef〞;
21执行语句for(i=1;
i++<
4;
);
后变量i的值是
A)3B)4C)5D)不定
22以下程序段
x=-1;
do
{x=x*x;
while(!
x);
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
23假如有以下定义和语句:
iniondata
{inti;
charc;
floatf;
}a;
intn;
如此以下语句正确的答案是
A)a=5;
B)a={2,’a’,1.2};
C)printf(“%d\n〞,a);
D)n=a;
24下面程序的运行结果是
{
structcmplx{intx;
inty;
}um[2]={1,3,2,7};
printf(“%d\n〞,um[0].y/um[0].x*cunm[1].x);
A)0B)1C)3D)6
25以下程序的运行结果是
{intk=4,a=3,b=2,c=1;
printf(“\n%d\n〞,k}
A)4B)3C)2D)1
二填空
1假如有以下定义,如此计算表达式y+=y-=m*=以后y的值是_____
intm=5,y=2;
2假如有定义:
intb=7;
floata=2.5,c=4.7;
:
如此下面表达式的值为_____
a+(int)(b/3*(int)(a+c)/2)%4
3有inta=3,b=4,c=5;
如此以下表达式的值为_____
!
(a+b)+c-1&
b+c/2
4条件〞2或x<
-10〞的c语言表达式是_____
5以下程序的功能是判断输入的年份是否是闰年.请在[]内填入正确内容
{inty,f;
y);
if(y%400==0)f=1;
elseif([5])f=1;
else[6];
if(f)printf(“%dis〞,y);
elseprintf(“%disnot〞,y);
printf(“aleapyear\n〞);
6下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5。
请填空
main(0
{inti,s,k,count=0;
for(i=100;
i<
=1000;
i++)
{s=0;
k=i;
while([7]){s=s+k%10;
k=[8];
if(s!
=5)[9];
elsecount++;
printf(“%d〞,count);
7下面程序将二维数组a的行和列元素呼唤后存到另一个二维数组b中。
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],I,j;
printf(“arraya:
\n〞);
for(i=0;
=1;
{for(j=0;
[10];
j++)
{printf(“%5d〞,a[i][j]);
[11];
printf(“\n〞);
printf(“arrayb:
[12];
j<
printf(“%5d〞,b[i][j]);
8以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进展查找。
顺序查找法的思路是:
从第一个元素开始,从前向后依次与关键字你叫,直到找到此元素或查找到数组尾部时完毕。
假如找到,返回此元素的下标;
假如仍未找到,如此返回值-1。
intsearch(inta[10],intm)
{intI;
=9;
i++)if([1])return(i);
return(-1);
{inta[13],m,i,no;
……
no=search([14]);
if([15])printf(“\nOKFOUND!
%d〞,no+1);
elseprintf(“\nSorryNotFound!
〞);
9假如有定义:
inta[]={2,4,6,8,10,12},*p=a;
如此*(p+1)的值是[16],*(a+5)的值是[17]
10将任意输入的一个偶数n分解为两个素数之和,并给出各种分解方法
intn,i;
intcheck(intx);
}while(n%2!
=0);
for(i=3;
=n/2;
if(check(i)&
[18])
printf(“%d=%d+%d\n〞,n,i,n-i);
intcheck(intx)
inti;
for(i=2;
iif([19])return(0);
return
(1);
11函数调用语句:
fgets〔buf,n,fp〕;
从fp指向的文件中读入[20]个字符放到buf字符数组中。
函数值为[21]
12设数组a包括10个整型元素。
下面程序的功能是求出a中各相邻元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
{inta[10],b[10],i;
10;
a[i]);
for([22];
[23]
for(i=1;
{printf(“%3d〞,b[i]);
if([24]==0)printf(“\n〞);
13如果以下程序输入的是wearestudents,如此输出的结果是[25]
#include“stdio.h〞
voidmain()
{chars[81],*p;
printf(“Inputasentence:
gets(s);
for(p=s;
*p;
p++)
if(*p==32)//空格键的ASCII值是32
{if(*(p+1)!
=32)printf(“\n〞);
elseputchar(*p);
}
05年9月等级考试二级C语言考前密卷2
选择题
(1)~(10)每一小题2分,(11)-(50)每一小题1分,共60分)
如下各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)算法分析的目的是________。
A)找出数据结构的合理性 B)找出算法中输入和输出之间的关系
C)分析算法的易懂性和可靠性 D)分析算法的效率以求改良
答案:
D
评析:
算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数掌级,常用时间复杂度和空间复杂度表示。
分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。
(2)n个顶点的强连通图的边数至少有________。
A)n-1 B)n(n-1) C)n D)n+l
C
在有向图中,假如任意两个顶点都连通,如此称该图是强连通图,这样的有向图的形状是环状,因而至少应有n条边。
(3)数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是________。
A)堆排序 B)直接插入排序 C)快速排序 D)直接选择排序
B
当数据表A中每个元素距其最终位置不远,说明数据表A按关键字值根本有序,在待排序序列根本有序的情况.下,采用插入排序所用时间最少,故答案为选项B。
(4)用链表表示线性表的优点是________。
A)便于插入和删除操作 B)数据元素的物理顺序与逻辑顺序一样
C)花费的存储空间较顺序存储少 D)便于随机存取
A
链式存储结构克制了顺序存储结构的缺点:
它的结点空间可以动态申请和释放;
它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
故链式存储结构下的线性表便于插入和删除操作。
(5)如下不属于结构化分析的常用工具的是________。
A)数据流图 B)数据字典 C)判定树 D)PAD图
结构化分析的常用工具有数据流图、数据字典、判定树和判定表。
而PAD图是常见的过程设计工具中的图形设计。
(6)软件开发的结构化生命周期方法将软件生命周期划分成________。
A)定义、开发、运行维护
B)设计阶段、编程阶段、测试阶段
C)总体设计、详细设计、编程调试
D)需求分析、功能定义、系统设计
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
它可以分为软件定义、软件开发与软件运行维护三个阶段。
(7)在软件工程中,白盒测试法可用于测试程序的内部结构。
此方法将程序看做是________。
A)循环的集合 B)地址的集合 C)路径的集合 D)目标的集合
软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构与有关信息,设计或选择测试用例,对程序所有逻辑路径进展测试。
(8)在数据管理技术开展过程中,文件系统与数据库系统的主要区别是数据库系统具有________。
A)数据无冗余 B)数据可共享
C)专门的数据管理软件 D)特定的数据模型
在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。
而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描速数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。
(9)分布式数据库系统不具有的特点是________。
A)分布式 B)数据冗余
C)数据分布性和逻辑整体性 D)位置透明性和复制透明性
分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;
但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。
假如分配模式是一对多,即一个片段分配到多个场地存放,如此是冗余的数据库,否如此是非冗余的数据库。
(10)如下说法中,不属于数据模型所描述的内容的是________。
A)数据结构 B)数据操作 C)数据查询 D)数据约束
数据模型所描述的内容有3个局部,它们是数据结构、数据操作和数据约束。
数据操作主要是描述在相应数据结构上的操作类型与操作方式;
数据模型中的数据约束主要描述数据结构内数据间的语法、语义联系,它们之间的制约与依存关系,以与数据动态变化的规如此,以保证数据的正确、有效与胡容。
(11)在结构化程序设计中,限制使用goto语句的原因是________。
A)提高程序的执行效率
B)提高程序的清晰性和可靠性
C)便于程序的合成
D)该语句对任何结构的程序都不适用
在c语言中,限制使用goto语句,其目的是为了提高程序的清晰性与可靠性,一般来说,除了从多重循环中跳出,一般不使用goto语句。
(12)以下选项中合法的实型常数是________。
A)5E2.0 B)E-3 C).2E0 D)1.3E
以指数形式表示实数时,字母e(或E)之前必须有数字,且e后面指数必须为整数。
(13)如下表示中,正确的答案是________。
A)C语言中既有逻辑类型也有集合类型
B)c语言中没有逻辑类型但有集合类型
B)C语言中有逻辑类型但没有集合类型
B)C语言中没有逻辑类型也没有集合类型
在c语言中只提供了整型、浮点型、字符型这几种根本类型,c语言没有提供逻辑类型,在c中一般用整型来表示逻辑类型。
在自定义类型中,c提供了struct,enum与union类型,但没有提供集合类型,在pascal中提供了集合类型set。
(14)大写字母A的ASCII码是65,小写字母a的ASCII码是97,如此用八进制表示的字符常量’\10l’是________。
A)字符A B)字符a C)字符e D)非法的常量
八进制101转换为十进制即为65,而字母A的ASCII码是65,所以用八进制表示的字符常量’\101’是A。
(15)设a和b均为double型常量,且a=5.5、b=2.5,如此表达式(int)a+b/b的值是________。
A)6.500000 B)6 C)5.500000 D)6.000000
各类数值型数据在进展混合运算时,不同类型的数据要先转换成同一类型,然后进展运算。
转换的规如此为:
总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度。
(16)以下四个选项中不能看作一条语句的是________。
A){;
} B)a=0,b:
0,c=0;
C)if(a>
0);
D)if(b==0)m=l;
n=2;
选项A为空语句,选项B是一个由逗号运算符表达式形成的语句,选项c为一个条件语句,选项D有两个分号,是由两个语句构成,不能看成一条语句。
(17)i、j、k为int型变量,假如从键盘输入:
1,2,3↙,使i的值为l、j的值为2、k的值为3,以下选项中正确的输入语句是________。
A)scanf("
%2d%2d%2dtt,&
i,&j,&
k);
B)scanf("
%d %d %d"
,&
i,&j,&k);
C)scanf("
%d,%d,%dfI,&i,&j,&k);
D)scanf("
i=%d,j=%d,k=%d-t,&
i,&
j,&
如果在"
格式控制"
字符串中除了格式说明以外还有其它字符,如此在输入数据时应输入与这些字符一样的字符。
(18)关于goto语句的使用,下面正确的答案是________。
A)goto2;
B)gotog;
C)gotog:
;
D)goto2;
2:
exit(0);
g:
exit(O);
2exit(0);
在c中,goto语句后面的标号的命名规如此与c语言中标识符的命名规如此一样,在goto语句后面的标号后不要加"
:
"
号,在某一行上添加标号时,在标号的后面要添加"
号。
(19)假如有以下程序:
main()
{intk=2,i=2,m;
m=(k+=I*=k);
printf("
%d,%d、n"
,m,i);
}
执行后的输出结果是__________。
A)8,6 B)8,3 C)6,4 D)7,4
在赋值符"
="
之前加上其它运算符,可以构成复合的运算符。
此运算为右结合性,即从右往左计算。
I*=k即i=i*k=2*2=4,k=k+i=2