二级C模拟题7.docx
《二级C模拟题7.docx》由会员分享,可在线阅读,更多相关《二级C模拟题7.docx(11页珍藏版)》请在冰点文库上搜索。
二级C模拟题7
一、选择题
1.以下叙述不正确的是( )。
A)C语言的执行总是从main函数开始B)一个C源程序必须包含一个main函数
C)C语言程序的基本组成单位是函数D)在编译C程序源程序时,可发现注释中的拼写错误
2.以下( )是错误的整型常量。
A)-0xcdfB)018C)0xeD)011
3.若有定义:
inta,b;doublex,则以下不符合C语言语法的表达式是( )。
A)x%(-3)B)a+=-2C)a=b=2D)x=a+b
4.若有定义:
inti,j;则表达式(i=2,j=5,i++,i+j++)的值是( )。
A)7B)8C)9D)10
5.已有如下定义和输入语句
inta;charc1,c2;
scanf(“%d%c%c”,&a,&c1;&c2);
若要求a、c1、c2的值分别为10、A和B,正确的数据输入是( )。
A)10ABB)10ABC)10ABD)10AB
6.若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为“假”。
则不能满足要求的表达式是( )。
A)a%2==1B)!
(a%2==0)C)!
(a%2)D)a%2
7.若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则表达式float(a+b)/2+(int)x%(int)y的值为().
A)3.5B)3.0C)2.5D)2.0
8.以下程序的运行结果是( )。
voidmain()
{intn=’e’;
swithc(n--)
{default:
printf(”error”);
case’a’:
case’b’:
printf(”good”);break;
case’c’:
printf(”pass”);
case’d’:
printf(”warn”);
}}
A)errorB)goodC)errorgoodD)warn
9.以下程序的运行结果是( )。
voidmain()
{intsum=0,item=0;
while(item<5)
{item++;
sum+=item;
if(sum==5)break;
}
printf(”%d\n”,sum);
}
A)10B)15C)5D)6
10.下面程序段的运行结果是( )。
inti=0,a[]={3,4,5,4,3};
do{
a[i]++;
}while(a[++i]<5);
for(i=0;i<5;i++)printf(”%d”,a[i]);
A)45654B)34543C)45554D)45543
11.若有定义:
inta[2][3];则对数组元素的非法引用是( )。
A)a[0][1/2]B)a[1][1]C)a[4-4][0]D)a[0][3]
12.以下程序段运行后屏幕输出为( )。
charstr[]=”ab\\cd”;
printf(”%d”,strlen(str));
A)4B)5C)6D)7
13.若有如下函数定义:
intfun()
{staticintk=0;
return++k;}
以下程序段运行后屏幕输出为( )。
inti;
for(i=1;i<=5;i++)fun();
printf(”%d”,fun());}
A)0B)1C)5D)6
14.下面程序的输出结果是( )
#include
#defineSQR(x)(x*x)
voidmain()
{inta,b=3;
a=SQR(b+2);
printf(”\n%d”,a);
}
A)11B)25C)不定值D)产生错误
15.有说明语句:
double*p,a;能通过scanf语句正确给输入项读入数据的程序段是( )。
A)*p=&a;scanf(”%lf”,p);B)*p=&a;scanf(”%lf”,*p);
C)p=&a;scanf(”%lf”,*p);D)p=&a;scanf(”%lf”,p);
16.下面程序的输出结果是( )
#include
voidmain()
{inti;
char*s=”abc”;
for(i=0;i<3;i++)printf(”%s\n”,s+i);
}
A)abcB)cC)abcD)a
bcbccab
cabcbcabc
17.以下程序的运行结果是( )。
#include
unionUtype{
inti;
floatf;
}u[2];
voidmain()
{printf(”sizeof(u):
%d\n”,sizeof(u));}
A)2B)4C)6D)8
18.若有如下定义,函数fun的功能是()。
其中head指向链表首结点,整个链表结构如下图:
head…
structnode{
intdata;
structnode*next;
};
intfun(structnode*head)
{intn=0;
structnode*t=head;
while(t!
=NULL)
{n++;
t=t->next;}
returnn;
}
A)删除链表head中的所有结点B)计算链表head中结点的个数
C)插入一个元素到链表head中D)创建一个链表head
19.下面程序的输出结果为( )。
#include
voidmain()
{enumWeekday{sun=7,mon=1,tue,wed,thu,fri,sat};
enumWeekdayday=sat;
printf(”%d\n”,day);
}
A)7B)6C)5D)4
20.以下程序的可执行文件名为cmdline.exe。
#include
#include
voidmain(intargc,char*argv[])
{if(argc!
=2)
{printf(”Youforgottotypeyournameoryoutypedmoreparameters\n”);
exit
(1);}
printf(”Hello%s\n”,argv[1]);
}
在DOS命令行输入:
cmdlineharry<回车>,则输出结果是( )。
A)Youforgottotypeyournameoryoutypedmoreparameters
B)Helloharry
C)Hellocmdline
D)hello
二、改错题(共2小题,每题10分)
1.程序cmody071.c,其功能是从键盘输入三角形的三边长,求其面积,若三个边长不能构成三角形,则提示。
如输入:
6 911输出:
26.98
#include
#include
voidmain()
{floata[3],s,area;
inti;
printf(”Pleaseinput3numbers:
\n”);
for(i=0;i<3;i++)scanf(“%f”,/**//**/);
/**/if(a[0]+a[1]>a[2]||a[1]+a[2]>a[0]||a[0]+a[2]>a[1])/**/
{s=(a[0]+a[1]+a[2])/2;
area=sqrt(s*(s-a[0])*(s-a[1])*(s-a[2]))l
printf(”areais%.2f\n”,area);}
elseprintf(”error.\n”);
getch();
}
2.程序cmody072.c其功能是求解百马百担问题。
有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马数可分别为多少?
有多少种解决方案?
#include
#include
/**/voidfun()/**/
{intlarge,middle,small,n=0;
clrscr();
for(large=0;large<=33;large++)
for(middle=0;middle<=50;middle++)
{small=2*(100-3*large-2*middle);
/**/if(large+middle+small=100)/**/
{n++;
printf(”%d-->large:
%d,middle:
%d,small%d\n”,n,large,middle,small);
}
}
returnn;}
voidmain()
{intnum;
num=fun();
printf(”\nThereare%dsolutions.\n”,num);
getch();
}
三、填空题(共3小题,每题8分)
1.补充程序Ccon071.c,对函数
,分别计算
和
的值。
如x=2.0,则输出:
f(x+8)=86.000f(sinx)=5.008
#include
/**//**/
doublefun(doublex)
{/**//**/
}
voidmain()
{doublex,y1,y2;
clrscr();
printf(“Pleaseinputx:
”);
scanf(“%lf”,&x);
y1=fun(x+8);
y2=fun(/**//**/);
printf(“\nf(x+8)=%.3lf”,y1);
printf(“\nf(sinx)=%.3lf”,y2);
getch();
}
2.补充程序Ccon072.c,计算
,其中m、n为整数且m>n≥0。
#include
doublefun(unsignedm,unsignedn)
{unsignedi;
doublep=1.0;
for(i=1;i<=m;i++)/**//**/
for(i=1;i<=n;i++)/**//**/
for(i=1;i<=m-n;i++)p=p/I;
returnp;
}
voidmain()
{clrscr();
printf(“p=%f\n”,fun(13,7));
getch();
}
3.补充程序Ccon073.c,函数findmax返回数组中的最大元素。
#include
intfindmax(int*array,intsize);
voidmain()
{inta[]={33,91,23,45,56,-12,32,12,5,90};
clrscr();
printf(“Themaxis%d\n”,/**//**/);
getch();
}
intfindmax(int*array,intsize)
{inti,/**//**/;
for(i=1,iif(array[i]>max)max=array[i];
returnmax;
}
四、编程题(共2小题,每题8分)
1.打开程序cprog071.c,完成其中的f()函数,使其对输入的一个月工资数额,求应交税款,设应交税款的计算公式如下:
例如:
输入:
1825输出:
f(1825)=11.25输入:
2700输出:
f(2700)=85.00输入:
5655输出:
f(5655)=483.25
#include
#include
doublef(floatx)
{/**/
/**/
}
voidmain()
{floatx;
doubley;
printf(”Pleaseinputx:
\n”);
scanf(”%f”,&x);
y=f(x);
printf(”f(%.2f)=%.2f\n”,x,y);
getch();
}
2.打开程序cprog072.c,完成其中的fun()函数,使程序输出4阶矩阵A中的各行中0之前的所有正数,遇到0则跳过该行,并计算这些输出正数之和。
如矩阵A为
,则输出1,2,23,32 s=58。
#include
#defineROW4
#defineCOL4
intfun(inta[][COL],introwintb[])
{/**/
/**/
}
voidmain()
{intsss=0,b[16]={0};
inta[ROW][COL]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
clrscr();
sss=fun(a,ROW,b);
printf(”\nSumofpositiveelementsis%d\n”,sss);
getch();
}
一、选择题
1.D 2.B 3.A 4.B 5.A 6.C 7.A 8.C 9.B 10.D
11.D12.B13.D14.A15.D16.A17.D18.B19.B20.B
二、改错题
1.scanf(“%f”,&a[i]);if(a[0]+a[1]>a[2]&&a[1]+a[2]>a[0]&&a[0]+a[2]>a[1])
2.intfun()if(large+middle+small==100)
三、填空题
1.#includereturn(x*x-2*x+6);sin(x)
2.p*=i;p=p*1.0/i;
3.findmax(a,sizeof(a)/sizeof(int))max=*array或max=array[0]
四、编程题
1.doulbey;
if(x<=1600)y=0;
if(x>1600&&x<=2100)y=(x-1600)*0.05;
if(x>2100&&x<=3100)y=(x-1600)*0.1-25;
if(x>3100)y=(x-1600)*0.15-125;
returny;
2.inti,j,s=0,k=0;
for(i=0;ifor(j=0;j
if(a[i][j]<0)continue;
elseif(a[i][j]==0)break;
else{b[k++]=a[i][j];s=s+a[i][j];}
for(i=0;ireturns;
|