一起答
主观

阅读以下说明和C++程序,将应填入(N)处的字句写在对应栏内。

[函数8.1说明]

 现考虑编写一个扑克游戏:只用一副无大小王的扑克,扑克的花色(suit)分为Spade、Heart、Diamond和Club,每门花色的牌共13张,面值(rank)分别为2、3、4、5、6、7、8、9、10、Jack、Queen、King和Ace,每张扑克牌应包含如下信息:惟一的ID号(1~52)、花色、面值、背面图案的编号等。每张扑克牌的操作有:判断两张扑克牌是相同花色吗?相同面值吗,判断一张扑克牌是给定的花色吗?是给定的面值吗?请补充扑克牌类Card类的声明和实现代码,要求选取适当形式的数据成员描述每张扑克牌的信息,同时以成员函数的形式实现指定的操作。

[C++程序]

const enum SUIT {SPADE=0,HEART,DIAMOND,CLUB};

const enum RANK{TWO=0 THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE};

class Card。

 {

 public:

  (1) (int id):mID (id),mSuit((id 1)/13),mRank((id-1)%13) {}

 bool IsSameSuit (const Card& rhs)

 {retum ((this ==&rhs)? (2)));}

 bool IsSankRank (const Card& rhs)

 {return ((this==&rhs)?false: mRank==rhs. mRank);}

 bool IsSuit (int suit)

 {return (3);}

 bool IsRank(int rank)

 {return mRank==rank;}

 private:

 static int nBackImg;//背面图案

 const int mID;

 const int mSuit;

 const int mRank;

 };

 [函数8.2说明]

 输入一字符串,将其中所有的小写字母转换为大写字母,大写字母转换为小写字母,然后显示输出转换后的字符串。

 [C++程序]

#include<iostream. h>

class vector

{

 int a;

 int b;

public:

 vector (int x=0,int y=0):a(x),b(y){}

 double operator*((4))

 {

   double c;

    (5);

   return c;

 }

 void input (int x, int y)

 {a=x;

 b=y;

 }

 void output ()

 {cout<<'('<<a<<',' <<b<<") "<<end1;

 }

};

void main()

{

 vector x(10,20),y;   //定义x, y, z三个矢量类对象,并将x置初值(10,20)

 doubled;//定义实数d以存放点乘结果

 y. input (2,3);     //给y赋值为(2,5)

 d=x*y;//两矢量点乘

 x. output ();       //输出矢量x

 y. output ();       //输出矢量y

 cout<<d<<end1;    //输出点乘结果

}

试题出自试卷《软件水平考试(初级)程序员下午(应用技术)模拟试卷11》
参考答案
查看试卷详情
相关试题
  1. 阅读以下程序说明和Java代码,将应填(n)处的字句写对应栏内。

    [说明]

     本程序的功能是产生一个抽奖游戏中的随机数组合。抽奖的规则是从自然数1至50中无重复抽取6个数。为了保证抽取的无重复性,将50个自然数放在数组source中。每抽取了一个数,就用数组的最后一个数来改写这个被抽中的数,并把数组的长度减1。为使输出更为清晰,把抽取出来的6个数放在数组target中,经过排序(Arrays类中的sou方法实现排序)然后输出。注:Math.random方法返回一个在0(包含)到1(不包含)之间的随机浮点数。

    [Java代码]

    import java. util. *;

    public class DrawOut

    { public static void main (String[ ] args) {

        int n =50;

        int k =6;

        int[ ] source = new int[n];

        for(int i=0; i <(1);i++)

        source[i] = i + 1;

        int[ ] target = new int[k];

        //将抽中的数字从source数组中取出,放入到target数组

        for (int i = 0; i <(2); i+ +) {

        int r = (int) (Math. random() * (3));

        target[i] = source[r];

         .... [r] =(4);

       (5);

      }

     Arrays. sort(target);

     for (int i = 0; i < target, length; i + + )

     System. out. prinfln ( target [i] );

     }

    }

  2. 阅读以下说明和C++程序,将应填入(N)处的字句写在对应栏内。

    [函数8.1说明]

     现考虑编写一个扑克游戏:只用一副无大小王的扑克,扑克的花色(suit)分为Spade、Heart、Diamond和Club,每门花色的牌共13张,面值(rank)分别为2、3、4、5、6、7、8、9、10、Jack、Queen、King和Ace,每张扑克牌应包含如下信息:惟一的ID号(1~52)、花色、面值、背面图案的编号等。每张扑克牌的操作有:判断两张扑克牌是相同花色吗?相同面值吗,判断一张扑克牌是给定的花色吗?是给定的面值吗?请补充扑克牌类Card类的声明和实现代码,要求选取适当形式的数据成员描述每张扑克牌的信息,同时以成员函数的形式实现指定的操作。

    [C++程序]

    const enum SUIT {SPADE=0,HEART,DIAMOND,CLUB};

    const enum RANK{TWO=0 THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE};

    class Card。

     {

     public:

      (1) (int id):mID (id),mSuit((id 1)/13),mRank((id-1)%13) {}

     bool IsSameSuit (const Card& rhs)

     {retum ((this ==&rhs)? (2)));}

     bool IsSankRank (const Card& rhs)

     {return ((this==&rhs)?false: mRank==rhs. mRank);}

     bool IsSuit (int suit)

     {return (3);}

     bool IsRank(int rank)

     {return mRank==rank;}

     private:

     static int nBackImg;//背面图案

     const int mID;

     const int mSuit;

     const int mRank;

     };

     [函数8.2说明]

     输入一字符串,将其中所有的小写字母转换为大写字母,大写字母转换为小写字母,然后显示输出转换后的字符串。

     [C++程序]

    #include<iostream. h>

    class vector

    {

     int a;

     int b;

    public:

     vector (int x=0,int y=0):a(x),b(y){}

     double operator*((4))

     {

       double c;

        (5);

       return c;

     }

     void input (int x, int y)

     {a=x;

     b=y;

     }

     void output ()

     {cout<<'('<<a<<',' <<b<<") "<<end1;

     }

    };

    void main()

    {

     vector x(10,20),y;   //定义x, y, z三个矢量类对象,并将x置初值(10,20)

     doubled;//定义实数d以存放点乘结果

     y. input (2,3);     //给y赋值为(2,5)

     d=x*y;//两矢量点乘

     x. output ();       //输出矢量x

     y. output ();       //输出矢量y

     cout<<d<<end1;    //输出点乘结果

    }

  3. 阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。

    [说明]

     我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:〖GB 11643-1989〗和〖GB 11643-1999〗。〖CB 11643-1989〗中规定的是15位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。〖GB 11643 -1999〗中规定的是18位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中,校验码C由本体码按如下过程求得:

     (1)计算校验码和S=a18W18+a17W17+…+a2W2,其中i表示18位身份证号,码每一位的序号,从右至左,最左侧为18,最右侧为1;ai表示身份证号码第i位上的号码;wi表示第i位上的权值,其值为2i-1模11的结果;

     (2)计算校验码值R,其值为校验和模11的结果;

     (3)根据下面对应关系找出校验码C:

    由上述计算过程可以看出,18位身份证号码中可能包含非数字的字母X(代表数字10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:

     

     在开发过程中,显示新旧两种身份证号码的文本框(TextBox)分别名为Text1和Text2,“号码升位”按钮(CommandButton)名为Command1。

     代码中使用到的字符串函数及功能说明如下:

     (1)Len(s):获取字符串s的长度;

     (2)Left(s,1):返回字符串s左端长度为1的子串;

     (3)Right(s,1):返回字符串s右端长度为1的子串;

     (4)Mid(s,p,1):返回字符串s从第P个字符开始长度为1的子串。

    [Visual Basic代码]

    ’计算18位身份证号码

    Private Sub Commandl_Click()

      Dim code As String

      Dim S As Integer

      code = Textl. Text    '提取15位身份证号码

      If Len(code) < > 15 Then

      MsgBox "ID 号码长度不正确,请检查!"

       (1) 

      End If

      code = Left(code, 6) + "19" + (2) (code, 9)  '年份升位

      S=0

      For i = 18 To 2 Step -1  '计算校验码和

       S = S + Clnf((3)) * (2 ^ (i - 1) Mod11)

      Next i

       (4)       '计算校验码值

      Select Case S        '确定校验码

      Case 0:   code = code + "1"

      Case 1:   code = code + "0"

      Case 2:   code = code + "X"

      Case Else:  code = code + CStr((5))

      End Select

      Text2. Text = code    '显示18位身份证号码

    End Sub

  4. 阅读以下说明及Visual Basic程序代码,高尔夫球应填入(n)处的字句写在对应栏内。

    [说明]

     设某单位Acess数据库中有一张员工信息表,其中记录了员工编号、姓名、性别等基本信息。下面的应用程序利用数据控件(Data)实现了对这张表中记录的增加、删除和修改操作。其运行界面如下:

    在开发过程中,数据控件Data1与员工数据表相连接,各文本框、“性别”组合列表框Combo1、“政治面貌”组合列表框Combo2都分别与数据表的相应字段绑定,界面上从左到右各操作按钮分别取名为CmdAdd、CmdDel、CmdUpdate和CmdExit。

    [Visual Basic代码]

    Private Sub Form_Load( )     ' 加载窗体

      Combo1. (1) "男"

      Combo1. (1) "女"

      Combo2. (1) "党员"

      Combo2. (1) "团员"

      Combo2. (1) "群众"

    End Sub

    Private Sub CmdAdd_Cliek( )   '增加记录

    Datal. Recordset. AddNew

    End Sub

    Private Sub CmdDel_Click( )   '删除记录

     Datal. Recordset. (2) 

     Datal. Recordset. MoveNext

    End Sub

    Private Sub CmdUpdate_Click( )  '修改记录

    If Datal. ReadOnly = (3) And Datal. Recordset. Updatable Then

      Datal. Recordset. Edit

      Datal. Recordset. (4) 

     Else

      MsgBox "数据表不允许修改!"

     End If

    End Sub

    Private Sub CmdExit_Click ( )    '退出程序

     Dim ret As Long

     ret : MsgBox("真的要退出吗?", vbQuestion + vbYesNo, "退出" )

      If (5) Then

      Datal. Reeordset. Close

      End

     End ff

    End Sub

  5. 阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    【说明】

     下面一段程序从给定的数组b中找出值最小的元素,并输出该元素的数组下标、内存地址minaddr以及元素值本身。函数findmin负责在给定的数组中查找最小值,并返回最小值所在的内存地址,函数有三个参数:array是所要处理的数组;size是数组的大小;index负责从函数返回具有最大值的元素在数组中的数组下标。请填充空白,使其成为一个合乎要求的完整程序。

     【程序】

     //程序开始

     #include<iostream.h>

     int *findmin(int *array, int size, int &index);

     void main()

     {

     /****** 变量定义部分 ***********/

     int b[10] = {34, 34, 23, 89, 1, 2, 13, 42, 5, 54};

      (1);

     int idx;

     /******* 寻找最小值 ************/

     minaddr = findmin(b, sizeof(b)/sizeof(int), idx);

     /******* 输出最小值的有关信息 ************/

     cout << "Min value index: "<<idx<<end1

     <<"Min value address: "<<minaddr<<end1

     <<"Min value: "<<(2)<<end1;

     }

     /******* 函数findmin的定义部分 ************

     int *findmin(int *array, int size, int &index)

     {

     int min = 0;//max 是当前具有最小值的数组元素下标值

     for(int i = 1;(3); i++)

     {

     if(array[i]<(4))

     min = i;

     }

      (5);

     return array + min;//返回最小值所在内存地址

     }

  6. 阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    【说明】

     将A,B,C,D,E,F这6个变量排成如图(a)所示的三角形,这6个变量分别取[1,6]中的整数,且均不相同。求使三角形三条边上的变量之和相等的全部解。图(b)就是一个解。

                      

      程序引入变量a,b,c,d,e,f,并让它们分别顺序取1~6的整数,在它们互不相同的条件下,测试由它们排列成的如图(a)所示的三角形三条边上的变量之和是否相等,如果相等即为一种符合要求的排列,就输出它们。

     【程序】

     void main()

     { int a, b, c, d, e, f;

      for(a=1;a<=6;a++)

       for(b=1;b<=6;b++) {

        if((1)) continue;

        for(c==1;c<=6;c++) {

         if((2))continue;

         for(d=1;d<=6;d++) {

          if((3)) continue;

          for(e=1;e<=6;e++) {

         if((4)) continue;

          f=21-(a+b+c+d+e);

         if((5)){

          printf("%6d",a);

          printf("%4d%4d",b,f);

          printf("%2d%4d%4d",c,d,e);

          scanf("%*c");           /*按回车键,继续找解*/

         }

        }

        }

       }

       }

      }

  7. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    【函数2.1】

     void sort(char *s,int num)

     {int i,j--num;

     char t;

     while(j-->1)

      for(i=0;i<j;i++)

      if(s[i]>s[i+1])

     {t=s[i];

     s[i]=s[i+1];

     s[i+1]=t;

        }

       void main()

       {char *s="CEAedea";

     sort(s,5);

     printf("%s",s);

     }

     上述程序的结果是(1) 

     【函数2.2】

     void main()

     { union {int ig[6];

        Char s[12];} try;

     try. ig[0]=0x4542; try.ig[1]=0x2049;

     try. ig[2]=0x494a; try.ig[3]=0x474e;

     try. ig[4]=0x0a21; try.ig[5]=0x0000;

     pintf("%s",try, s);

     }

     上述程序的结果是(2) 

     【函数2.3】

        void main()

       { char *letter[5]= { "ab","efgh","ijk","nmop","st"};

        char **p;

        int i;

        p=letter;

     for(i=0;i<4;i++) .

     printf("%s",p[i]);

       }

     上述程序的结果是(3) 

     【函数2.4】

     main()

     {int i=4,j=6,k=8,*p=&I,*q=&j,*r=&k;

      int x,y,z;

     x=p==&i;

     y=3*-*p/(*q)+7;

     z=*(r=&k)=*p**q;

     printf("x=%d,y=%d,z=%d",x,y,z);

     }

     上述程序的结果是(4) 

     【函数2.5】

     int a[]={5,4,3,2,1 };

     void main()

     {int i;

      int f=a[0];

      int x=2;

      for(i=0;i<5;i++)

      f+=f*x+a[i];

     printf("%d",f);

       }

     上述程序的结果是(5)

  8. 阅读以下说明和流程图,回答问题,并将解答填入对应栏内。

    【说明】

     求解约瑟夫环问题。算法分析:n个士兵围成一圈,给他们依次编号,班长指定从第w个士兵开始报数,报到第s个士兵出列,依次重复下去,直至所有士兵都出列。

     【流程图】

                      

     【问题】

     将流程图中的(1)~(5)处补充完整。