软考初级程序员下午题(16)

试题四

阅读以下函数说明和C语言函数,将应填入______处的字句填写完整。

[说明]
编写程序,对于从键盘输入的3个实数a、b、c,计算实系数一元二次方程的根并输出所求的根。

[函数]
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
Main()
{
float a,b,c,delta,x1,x2;
printf("Enter a,b,c");
scanf("%f%f%f",&a,&b,&c));
if(______)
if(______)
printf("Input error!\n");
else
printf("The single root is %f\n",______);
else
{
delta=b*b-4*a*c;
if(______)
{
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("x1=%8.2f\nx2=%8.2f\n",x1,x2,);
}
else if(delta==0)
printf("x1=x2=%8.2f\n",______);
else
{
Printf("z2=%8.2f+%8.2f*i\n",-b/(2*a),sqrt(-delta)/)(2*abs(a)));
Printf("z2=%8.2f-%8.2f*i\n",-b/(2*a),sqrt(-delta)/(2*abs(a)));
}    
}
}

试题五

阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入______处的字句填写完整。

[说明]
在下面程序横线处填上适当的字句,使其输出结果为:
x=5
x=6
y=7
x=8
z=9

 [程序]
    #include <iostream.h>
    class X1{
    int x;:
    X1(int xx=0){x=xx;}void Output()(
    cout<<"x="<<x<<end;
    }
    };
      ③   Y1:public X1{
    int y;
    public:
    Y1(int xx=0,int yy=0):X1(xx){y=yy;}void Output(){Output();
    cout<<"y="<<y<<end1;
    }
    };
    class Z1:pubtic X1{
    int z::
    Z1(int xx=0, int zz=0):X1(xx){z=zz;}void Output(){
    X1::Output();
    cout<<"z="<<z<<end1;
    }
    };
    void main()
    {
    X1 a(5);Y1 b(6,7);Z1 c(8,9);
    X1 *p[3]={&a,&b,&c};
    For(int i=0;i<3;i++){
    p[i]--Output();cout<<end1;
    }
    }

试题六

阅读以下说明和Java代码,将应填入______处的字句填写完整。

[说明]
下面代码里,instr是一个抽象类,它被两个子类wind和rain分别实现,而brass又继承了wind类,并覆盖了play方法。

  [程序]
    ______class instr{
    ______void play();
    }
    class wind______instr{
    void play(){System.out.println("wind play!");)
    }
    class rain extends instr{
    void play(){System.out.println("rain play!");)
    }
    class brass extends ______{
    void play(){System.out.println("brass play!"));)
    }
    public class music{
    static void tuneAll(instr e[]){
    for(int i=0;i<e.length;i++)
    e[i].play();
    }
    public ______void main(String[]args){
    instr orch[]=new instr[3];
    int i=0;
    orch[i++]=new wind();
    orch[i++]=new rain();
    orch[i++]=new brass();
    tuneAll(orch);
    }
    }

试题四答案

(1)a0
(2)b
0
(3)-c/b
(4)delta>0(或bb-4ac>0)
(5)-b/(2
a) (或-b/2/a)

[解析] 本题考查我们如何用键盘输入字符,编程求一元二次方程的根及输出。
对于如何求出一元二次方程的根,是解决这个题目的关键。首先我们来回忆一下数学中求一元二次方程根的方法。在数学中求一元二次方程根的步骤如下。
第一步是确定方程是否为一元二次方程,这需要判断二次方系数和一次方系数是否为0,如果都为0,则方程有错。如果只是二次方系数为零,则方程为一元一次方程,方程有一个解。
第二步是用Δ=bb-4ac与0的关系来判断解的个数,如果Δ>0,方程有2个不同的解;如果Δ=0,方程有一个解;而Δ<0时,方程无解。
第三步才是求解。
现在我们来看主函数,在主函数中,首先声明了一些实数变量,其中变量a、b、c分别存放我们从键盘输入的3个实数,而detal中存放的是Δ的值,x1、x2中存放方程根的值。
接下来是从键盘输入3个值,作为一元二次方程的系数,在对一元二次方程求解以前我们需要考虑系数值为0的情况,因此,第1空应该填“a0”,第2空应该填“b0”。
在a等于0而b不等于0的情况下,方程为一元一次方程,可以直接用-c/b求得其解,第3空明显是要输出这个解。
再往下看,程序计算了Δ的值,那么接下来应该是判断Δ与0的关系了,从程序中可以看出,方程在第4空的条件下有两个解,那么第4空应该填“delta>0”。而第5空是在delta=0的条件下方程的解,因此第5空应该填“-b/(2
a)”。

试题五答案

①public
②virtual
③class
④X1::
⑤public

[解析] 本题考查了C++类的定义、成员变量的声明、类继承以及虚函数的一些基本知识。
我们对比三个类的定义就可以发现,在类X1和Z1的定义中缺少类的成员属性声明,而类一般将成员变量声明为公有的、私有的或受保护的三种类型中的一种,在类的定义中,我们一般将类的构造函数放在公有的属性下面,在题目中只能选择公有的属性了,因此,第1空和第5空中应该填“public”。
对三个类的定义进行仔细观察后,我们同样可以发现,每个类中都定义了一个同名函数Output(),而且在后两个类的函数体中调用了函数Output(),由此,我们应该想到虚函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。因此,第2空应该填“virtual”。
第3空就简单了,考查类的定义,应该填类的标识符“class”。
从程序中我们可以看到,类Y1和Z1都以公有的方式继承类X1。从输出的结果来分析,类Y1和Z1都输出了两个数,但单从类Z1的函数来看,只能输出一个变量的值z,因此,可以发现在类Z1中应该和类Y1一样,都调用了类X1的函数Output(),因此,第4空的答案为“X1::”。

试题六答案

(1)abstract
(2)abstract
(3)extends
(4)wind
(5)static

[解析] 本题考查了Java抽象类的定义、继承,以及主函数定义的一些相关知识。
定义抽象类时只需在类标识符前加上关键字abstract即可,在Java语言中,抽象类中的方法也为抽象方法。因此,第1空与第2空的答案是“abstract”。
题目要求类wind和rain是抽象类instr的子类,即类wind和rain都继承抽象类instr,在Java语言中,对抽象类的继承用关键字extends,如果不能确定,还可以往下看程序。因此,第3空应该填“extends”。
又由于题目要求类brass继承类wind,第4空的答案也变得非常明显了,填写“wind”。
第5空所在的位置是对Java语言的主函数的定义,Java语言中主函数也和其他一些高级语言一样,是入口函数,它的声明规定用public static void main(String[] args){)这种结构。因此,第5空答案是“static”。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值