二级C语言模拟645.docx
《二级C语言模拟645.docx》由会员分享,可在线阅读,更多相关《二级C语言模拟645.docx(24页珍藏版)》请在冰点文库上搜索。
二级C语言模拟645
二级C语言模拟645
一、选择题
1、以下各选项企图说明一种新的类型名,其中正确的是______。
A.typedefvlint; B.typedefv2=int
C.typedefintv3; D.typedefv4:
int
2、若变量已正确定义,则以下for循环______:
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A.执行4次 B.执行3次
C.执行次数不确定 D.执行123次
3、设有定义:
char*c;
以下选项中能够使c正确指向一个字符串的是______。
A.charstr()="string";c=str; B.scanf("%s",c);
C.c=getchar(); D.*c="string";
4、若有以下程序段:
structst{intn;structst*next;};
stmctsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
则以下选项中值为6的表达式是______
A.p->n B.(*p).n C.p->n++ D.++(p->n)
5、以下不能将s所指字符串正确复制到t所指存储空间的是______。
A.while(*t=*s){t++;s++;}
B.for(i=0;t[i]=s[i];i++);
C.do{*t++=*s++;}while(*s);
D.for(i=0,j=0;t[i++]=s[j++];);
6、有以下程序
#include<stdio.h>
#defineSUB(a)(a)-(a)
main()
{inta=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%d\n",d);
}
程序运行后的输出结果是______。
A.0 B.-12 C.-20 D.10
7、有以下程序:
#include<stdio.h>
#include<string.h>
main()
{printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}
程序运行后的输出结果是______。
A.3 B.8
C.4 D.9
8、将E-R图转换为关系模式时,E-R图中的实体和联系都可以表示为______。
A.属性 B.键 C.关系 D.域
9、有以下程序
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果是______。
A.a=2,b=1 B.a=2,b=2 C.a=1,b=1 D.a=1,b=0
10、有以下程序:
#include<stdio.h>
main()
{ inta=3;
do
{ printf("%d,",a-=2);}
while(!
(--a));
printf("\n");
}
程序运行后的输出结果是______。
A.1 B.1,-2, C.3,0, D.1,0
11、若有数组定义:
chararray[]="China";,则数组array所占的空间为______。
A.4个字节 B.5个字节 C.6个字节 D.7个字节
12、若有说明:
inta[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是______。
A.2 B.3 C.4 D.无确定值
13、以下程序拟实现计算sum=1+1/2+1/3+…+1/50。
#include<stdio.h>
main()
{ inti;doublesum;
sum=1.0;
i=1;
do
{i++;sum+=1/i;}
while(i<50);
printf("sum=%lf\n",sum);
}
程序运行后,不能得到正确结果,出现问题的语句是______。
A.sum+=1/i; B.while(i<50); C.sum=1.0; D.i++;
14、构成计算机软件的是______。
A.源代码 B.程序和数据
C.程序和文档 D.程序、数据及相关文档
15、有以下程序
#include<stdio.h>
#definePT3.5;
#defineS(x)PT*x*x;
main()
{inta=1,b=2;printf("%4.1f\n",S(a+b));}
程序运行后的输出结果是______。
A.31.5 B.程序有错无输出结果
C.7.5 D.14.0
16、设栈的顺序存储空间为S(0:
49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。
则栈中的元素个数为______。
A.30 B.29 C.20D.19
17、有以下程序
#include<stdio.h>
voidmain()
{
chars[]={"01aXy"};inti,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
18、有以下程序:
#include<stdio.h>
f(inta)
{intb=0;
staticintc=3;
a=c++,b++;return(a);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)k+f(a++);
printf("%d\n",k);
}
程序运行后的输出结果是
A.3 B.6 C.5 D.4
19、有以下程序
#include<stdio.h>
main()
{inti=5;
do
{ if(i%3==1)
if(i%5==2)
{ printf("*%d",i);break;)
i++;
}while(i!
=0);
printf("\n");
}
程序的运行结果是______。
A.*7 B.*3*5 C.*5 D.*2*6
20、有以下程序:
#include<stdio.h>
main()
{shortinta=5,b=6,c=7,d=8,m=2,n=2;
printf("%d\n",(m=a>b)&(n=c>d));
}
程序运行后的输出结果是
A.0 B.1 C.2 D.3
21、若有定义语句:
intx[][3]={1,2,3,4,5,6};,则以下选项中与该语句等价的是______。
A.intx[][3]={{1,2,3},{4,5},{6}}; B.intx[][3]={{1,2},{3,4},{5,6}};
C.intx[][3]={{1},{2,3},{4,5,6}}; D.intx[][3]={{1,2,3},{4,5,6}};
22、有以下程序
#include<stdio.h>
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.25 B.20 C.45 D.36
23、若要使int型变量a、b、c、d的值都为0,以下写法中错误的是______。
A.autointa,b,c,d;a=b=c=d=0; B.autointa=b=c=d=0;
C.autointa=0,b=a,c=b,d=c; D.staticinta,b,c,d;
24、以下选项中,能用作用户标识符的是______。
A._0_ B.8_8 C.void D.unsigned
25、下列数据结构中,属于非线性结构的是______。
A.循环队列 B.带链队列
C.二叉树 D.带链栈
26、有以下程序:
#include<stdio.h>
voidfun(char*c,intd)
{ *c=*c+1,d=d+1;
printf("%c,%c",*c,d);
}
main()
{charb='a',a=;A';
fun(&b,a);printf("%c,%c\n",b,a);
}
程序运行后的输出结果是______。
A.b,B,b,A B.b,B,B,A
C.a,B,B,a D.a,B,a,B
27、若有代数式
A.sqrt(abs(n^x+e^x))
B.sqrt(fabs(pow(n,x)+pow(x,e)))
C.sqrt(fabs(pow(n,x)+exp(x)))
D.sqrt(fabs(pow(x,n)+exp(x)))
28、有以下程序
#include
voidflintb[])
{inti;
for(i=2;i<6;i++)b[i]*=2;
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是______。
A.1,2,6,8,10,12,7,8,9,10, B.1,2,3,4,5,6,7,8,9,10,
C.1,2,3,4,10,12,14,16,9,10, D.1,2,6,8,10,12,14,16,9,10,
29、有下列程序:
#include<stdio.h>
voidfun(inta[],intn,intflag)
{inti=0,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(flag?
(a[i]>a[j]):
(a[i]<a[j]))
{t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{intc[10]={7,9,10,8,3,5,1,6,2,4},i;
fun(c,10,1);
fun(c,8,0);
for(i=0;i<10;i++)
printf("%d,",c[i]);
}
程序执行后的输出结果是______。
A.8,7,6,5,4,3,2,1,9,10, B.3,4,5,6,7,8,9,10,2,1,
C.9,10,1,2,3,4,5,6,7,8, D.10,9,8,7,6,5,4,3,1,2,
30、软件生命周期是指______。
A.软件产品从提出、实现、使用维护到停止使用退役的过程
B.软件从需求分析、设计、实现到测试完成的过程
C.软件的开发过程
D.软件的运行维护过程
31、有以下程序:
#include<stdio.h>
main()
{chara[5][10]={"China","beijing","very","welcome","you"};
char*p[5];inti;
for(i=3;i<5;i++)
{p[i]=*(a+i);
printf("%s",p[i]);
printf("%c",*p[i]);
}
}
程序执行后的输出结果是______。
A.wwyy B.ChinaCbeijingb C.veryvwelcomew D.welcomewyouy
32、以下程序段中的变量已正确定义
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf("*");
程序段的输出结果是______。
A.** B.**** C.* D.********
33、设有宏定义:
#defineIsDIV(k,n)((k%n==1)?
1:
0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)
为真时所要表达的是______。
A.判断m被5和7整除是否都余1 B.判断m是否能被5和7整除
C.判断m被5或者7整除是否余1 D.判断m是否能被5或者7整除
34、下面描述中,不属于软件危机表现的是______。
A.软件过程不规范 B.软件开发生产率低
C.软件质量难以控制 D.软件成本不断提高
35、有以下定义和语句:
structworkers
{intnum;charname[20];charc;
struct
{ intday;intmonth;intyear;}s;
};
structworkersw,*pw;
pw=&w;
能给w中year成员赋1980的语句是______。
A.*pw.year=1980;
B.w.year=1980;
C.pw->year=1980
D.w.s.year=1980;
36、设有定义:
intx=2;
以下表达式中,值不为6的是______。
A.2*x,x+=2 B.x++,2*x C.x*=(1+x) D.x*=x+1
37、某系统结构图如下图所示:
该系统结构图中最大扇入是______。
A.0 B.1 C.2 D.3
38、VC6.0中int类型变量所占字节数是
A.1 B.2 C.3 D.4
39、以下程序的输出结果是______。
#include<stdio.h>
main()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
printf("\n");
}
A.3981 B.4284 C.2668D.2870
40、若有语句typedefstructS{intg;charh;}T;,则下列叙述中正确的是______。
A.可用S定义结构体变量 B.可用T定义结构体变量
C.S是struct类型的变量 D.T是structS类型的变量
二、程序填空题
41、请补充函数proc(),该函数的功能是:
删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
11222344556667781010。
删除后,数组中的内容应该是:
1234567810。
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#defineM80
intproc(intarr[],intn)
{
inti,t,j=0;
t=arr[0];
for(i=1;i<n;i++)
if(______)
;
else
{
______;
t=arr[i];
}
arr[j++]=t;
returnj;
}
voidmain()
{
intarr[M]={1,1,2,2,2,3,4,4,5,5,6,6,6,7,7,8,10,10},i,n=18;
printf("Theoriginaldata:
\n");
for(i=0;i<n;i++)
printf("%4d",arr[i]);
n=proc(arr,n);
printf("\n\nThedataafterdeleted;\n");
for(i=0;i<n;i++)
printf("%4d",arr[i]);
printf("\n");
}
三、程序修改题
42、考生文件夹
给定程序MODI1.C中函数fun的功能是:
判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
/**********found**********/
voidfun(charstr,charch)
{while(*str&&*str!
=ch)str++;
/**********found**********/
if(*str==ch)
{ str[0]=ch;
/**********found**********/
str[1]='0';
}}
main()
{ chars[81],c;
printf("\nPleaseenterastring:
\n");gets(s);
printf("\nPleaseenterthecharactertosearch:
");
c=getchar();
fun(s,c);
printf("\nTheresultis%s\n",s);
}
四、程序设计题
43、请编写函数proc(),它的功能是计算:
s=(1-ln
(1)-ln
(2)-ln(3)-…-ln(m))2
s作为函数值返回。
在C语言中可调用log(n)函数求ln(n)。
log函数的引用说明是doublelog(doublex)。
例如,若m的值为10,则proc()函数值为198.934454。
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
doubleproc(intm)
{
}
voidmain()
{
system("CLS");
printf("%f\n",proc(10));
}
答案:
一、选择题
1、C
[解析]C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。
2、A
[解析]循环判断语句为"(y!
=123)&&(x<4)",必须同时满足"y!
=123"和"x<4"这两个表达式,循环才会继续。
因此,当x=4时,循环终止,for循环共执行4次。
3、A
[解析]A选项为正确用法,先将字符串存于字符数组中,然后将数组名赋给字符指针(数组名代表数组首地址,定义数组时为其分配确定地址)。
C选项错误,getchar()函数只能输入一个字符给字符型变量,而不是字符指针。
B选项和D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。
因为在B选项和D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用