软件水平考试(初级)程序员下午(应用技术)模拟试卷11

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:13次
  • 作答时间:150分钟
试卷简介
试卷预览
1

阅读以下说明和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;    //输出点乘结果

}

1

阅读以下说明及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