计算机二级C语言试习题库.docx
- 文档编号:27098106
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:55
- 大小:33.16KB
计算机二级C语言试习题库.docx
《计算机二级C语言试习题库.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言试习题库.docx(55页珍藏版)》请在冰豆网上搜索。
计算机二级C语言试习题库
计算机二级C语言试题库
1有以下程序
main()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=aprintf("%d,%d\n",k,m);
}
程序运行后的输出结果是
A)0,0B)0,1C)1,0D)1,1
2在一个C程序中
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置
3有以下程序
main()
{inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
执行后输出结果是
A)2B)3C)4D)编译时有错,无结果
4有以下程序
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
执行后输出结果是
5有以下程序
main()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是
A)1,1B)2,2C)3,3D)4,4
6有以下程序
fun(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
程序运行后的输出结果是
A)3B)6C)8D)12
7有以下程序
int*f(int*x,int*y)
{if(*x<*y)
returnx;
else
returny;
}
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=f(p,q);
printf("%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
main()
{intk=4,m=1,p;
p=func(k,m);printf(“%d”,p);
p=func(k,m);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=&n;scanf(“%d”,*p);
C)scanf(“%d”,&n);*p=n;
D)p=&n;*p=m;
14执行以下程序后,a和b的值为
main()
{inta,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
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”,&f1,&f2);
C)scanf(“%3.2f%2.1f”,&f1,&f2);
D)scanf(“%3.2f%2.1f”,&f1,&f2);
17分析以下程序运行结果
#include
intfunc(intn){
if(n==1)
return1;
else
return(n*func(n-1));
}
voidmain(){
intx;
x=func(5);
printf(“%d\n”,x);
}
A)100B)5C)1D)120
18分析以下程序运行结果
#include
voidmain(){
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下面程序的运行结果是
main()
{
structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf(“%d\n”,cnum[0].y/cnum[0].x*cunm[1].x);
}
A)0B)1C)3D)6
25以下程序的运行结果是
main()
{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以下程序的功能是判断输入的年份是否是闰年.请在[]内填入正确内容
main()
{inty,f;
scanf(“%d”,&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。
请填空
#include
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中。
请填空
main()
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],I,j;
printf(“arraya:
\n”);
for(i=0;i<=1;i++)
{for(j=0;[10];j++)
{printf(“%5d”,a[i][j]);
[11];
}
printf(“\n”);
}
printf(“arrayb:
\n”);
for(i=0;[12];i++)
{for(j=0;j<=1;j++)
printf(“%5d”,b[i][j]);
printf(“\n”);
}
}
8以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。
顺序查找法的思路是:
从第一个元素开始,从前向后依次与关键字你叫,直到找到此元素或查找到数组尾部时结束。
若找到,返回此元素的下标;若仍未找到,则返回值-1。
请填空
#include
intsearch(inta[10],intm)
{intI;
for(i=0;i<=9;i++)if([1])return(i);
return(-1);
}
main()
{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分解为两个素数之和,并给出各种分解方法
#include
main()
{
intn,i;
intcheck(intx);
do{
scanf(“%d”,&n);
}while(n%2!
=0);
for(i=3;i<=n/2;i++)
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个元素的形式输出。
请填空
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for([22];i<10;i++)
[23]
for(i=1;i<10;i++)
{printf(“%3d”,b[i]);
if([24]==0)printf(“\n”);
}
}
13如果以下程序输入的是wearestudents,则输出的结果是[25]
#include“stdio.h”
voidmain()
{chars[81],*p;
printf(“Inputasentence:
\n”);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图
答案:
D
评析:
结构化分析的常用工具有数据流图、数据字典、判定树和判定表。
而PAD图是常见的过程设计工具中的图形设计。
(6)软件开发的结构化生命周期方法将软件生命周期划分成________。
A)定义、开发、运行维护
B)设计阶段、编程阶段、测试阶段
C)总体设计、详细设计、编程调试
D)需求分析、功能定义、系统设计
答案:
A
评析:
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
它可以分为软件定义、软件开发及软件运行维护三个阶段。
(7)在软件工程中,白盒测试法可用于测试程序的内部结构。
此方法将程序看做是________。
A)循环的集合 B)地址的集合 C)路径的集合 D)目标的集合
答案:
C
评析:
软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
(8)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有________。
A)数据无冗余 B)数据可共享
C)专门的数据管理软件 D)特定的数据模型
答案:
D
评析:
在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。
而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描速数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。
(9)分布式数据库系统不具有的特点是________。
A)分布式 B)数据冗余
C)数据分布性和逻辑整体性 D)位置透明性和复制透明性
答案:
B
评析:
分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。
若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。
(10)下列说法中,不属于数据模型所描述的内容的是________。
A)数据结构 B)数据操作 C)数据查询 D)数据约束
答案:
C
评析:
数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。
数据操作主要是描述在相应数据结构上的操作类型与操作方式;数据模型中的数据约束主要描述数据结构内数据间的语法、语义联系,它们之间的制约与依存关系,以及数据动态变化的规则,以保证数据的正确、有效与胡容。
(11)在结构化程序设计中,限制使用goto语句的原因是________。
A)提高程序的执行效率
B)提高程序的清晰性和可靠性
C)便于程序的合成
D)该语句对任何结构的程序都不适用
答案:
B
评析:
在c语言中,限制使用goto语句,其目的是为了提高程序的清晰性与可靠性,一般来说,除了从多重循环中跳出,一般不使用goto语句。
(12)以下选项中合法的实型常数是________。
A)5E2.0 B)E-3 C).2E0 D)1.3E
答案:
C
评析:
以指数形式表示实数时,字母e(或E)之前必须有数字,且e后面指数必须为整数。
(13)下列叙述中,正确的是________。
A)C语言中既有逻辑类型也有集合类型
B)c语言中没有逻辑类型但有集合类型
B)C语言中有逻辑类型但没有集合类型
B)C语言中没有逻辑类型也没有集合类型
答案:
B
评析:
在c语言中只提供了整型、浮点型、字符型这几种基本类型,c语言没有提供逻辑类型,在c中一般用整型来表示逻辑类型。
在自定义类型中,c提供了struct,enum及union类型,但没有提供集合类型,在pascal中提供了集合类型set。
(14)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量’\10l’是________。
A)字符A B)字符a C)字符e D)非法的常量
答案:
A
评析:
八进制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
答案:
D
评析:
各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。
转换的规则为:
总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度。
(16)以下四个选项中不能看作一条语句的是________。
A){;} B)a=0,b:
0,c=0; C)if(a>0); D)if(b==0)m=l;n=2;
答案:
D
评析:
选项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,&k);
答案:
C
评析:
如果在"格式控制"字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。
(18)关于goto语句的使用,下面正确的是________。
A)goto2; B)gotog; C)gotog:
; D)goto2;
2:
exit(0); g:
exit(O); g:
exit(O); 2exit(0);
答案:
B
评析:
在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
答案:
C
评析:
在赋值符"="之前加上其它运算符,可以构成复合的运算符。
此运算为右结合性,即从右往左计算。
I*=k即i=i*k=2*2=4,k=k+i=2+4=6,然后将k的值赋给m。
(20)以下函数的功能是:
通过键盘输入数据,为数组中的所有元素赋值。
#defineN10
voidarrin(intx[N])
{ inti=0;
while(i }
在下划线处应填入的是_________。
A)x+i B)&x[i+l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 语言 习题