cs106b 作业1

打印 上一主题 下一主题

主题 788|帖子 788|积分 2364

第二题:Only Connect

第二题注意的点:

  • 不可以使用循环
  • 可以使用isalpha一个字符是否为一个英文字母,包含在cctype头文件中
  • 可以使用toUpperCase返回一个大写的字符,在strlib.h头文件中
  • 可以使用charToString将单个字符转为string,在头文件strlib.h中
  1. string onlyConnectize(string phrase) {
  2.     /* TODO: The next few lines just exist to make sure you don't get compiler warning messages
  3.      * when this function isn't implemented. Delete these lines, then implement this function.
  4.      */
  5.     if (phrase == "") return phrase;
  6.     char first = phrase[0];
  7.     // 判断是否是字母
  8.     if (isalpha(first))
  9.     {
  10.         // 判断是否为元音
  11.         if (first == 'a' || first == 'e' || first == 'i' || first == 'o' || first == 'u' ||
  12.                         first == 'A' || first == 'E' || first == 'I' || first == 'O' || first == 'U')
  13.         {
  14.             return onlyConnectize(phrase.substr(1));
  15.         }
  16.         // 不是元音变大写
  17.         first = toUpperCase(first);
  18.         return charToString(first) + onlyConnectize(phrase.substr(1));
  19.     }
  20.     // 不是字母直接下一个
  21.     return onlyConnectize(phrase.substr(1));
  22. }
复制代码
第三题
  1. string aSequenceOfOrder(int n) {
  2.     if (n < 0) error("n should not less than zero");
  3.     if (n == 0) return "A";
  4.     else
  5.         return aSequenceOfOrder(n - 1) + bSequenceOfOrder(n - 1);
  6. }
  7. string bSequenceOfOrder(int n) {
  8.     if (n < 0) error("n should not less than zero");
  9.     if (n == 0) return "B";
  10.     else
  11.         return bSequenceOfOrder(n - 1) + aSequenceOfOrder(n - 1);
  12. }
复制代码
第四题
  1. void dropSandOn(Grid<int>& world, int row, int col) {
  2.     world[row][col] += 1;
  3.     if (world[row][col] > 3)
  4.     {
  5.         world[row][col] = 0;
  6.         if (world.inBounds(row - 1, col))
  7.             dropSandOn(world, row - 1, col);
  8.         if (world.inBounds(row + 1, col))
  9.             dropSandOn(world, row + 1, col);
  10.         if (world.inBounds(row, col - 1))
  11.             dropSandOn(world, row, col - 1);
  12.         if (world.inBounds(row, col + 1))
  13.             dropSandOn(world, row, col + 1);
  14.     }
  15. }
复制代码
第五题
  1. void runPlotterScript(istream& input) {
  2.    bool ud=0;string op;
  3.    double x1=0,y1=0,x2,y2;
  4.    PenStyle pen={1,"black"};
  5.    while(!input.eof())
  6.    {
  7.      input>>op;op=toLowerCase(op);
  8.      if(op=="penup")
  9.      {
  10.          ud=0;
  11.      }
  12.      else if(op=="pendown")
  13.      {
  14.          ud=1;
  15.      }
  16.      else if(op=="moverel")
  17.      {   double a,b;
  18.          input>>a>>b;
  19.          x2=x2+a;y2=y2+b;
  20.          if(ud)drawLine(x1,y1,x2,y2,pen);
  21.          x1=x2;y1=y2;
  22.      }
  23.      else if(op=="moveabs")
  24.      {
  25.          input>>x2>>y2;
  26.          if(ud)drawLine(x1,y1,x2,y2,pen);
  27.          x1=x2;y1=y2;
  28.      }
  29.      else if(op=="penwidth")
  30.      {
  31.          input>>pen.width;
  32.      }
  33.      else if(op=="pencolor")
  34.      {
  35.          input>>pen.color;
  36.      }
  37.    }
  38. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表