使用函数缩短代码

时间:2015-02-10 05:53:46

标签: c++ function

我是编码的新手,我对如何使用函数缩短代码有疑问。我的作业问题说我需要取出嵌套循环并使用函数缩短我以前的代码,我需要一点帮助跳转。此代码显示100个随机十六进制颜色。我为凌乱的代码道歉,还在学习。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main(){
   srand(time(0));
      for(int j=0; j<100; j++){
         for(int i=0; i<6; i++){
          int digit = rand() % 16;
          char letter;
          if(digit > 9){
             letter = digit + 55;
             cout << letter;
          }
          else{
              cout << digit;
          }
      }
  cout << endl;
  }
return 0;
}

3 个答案:

答案 0 :(得分:2)

您的问题陈述建议您按如下方式修改代码,但请注意,这不会减少代码大小,只是使其更具可读性:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void innerLoop(){
    char letter;
    int digit;
    for (int i = 0; i<6; i++){
        digit = rand() % 16;
        if (digit > 9){
            letter = digit + 55;
            cout << letter;
        }
        else{
            cout << digit;
        }
    }
}

int main(){
    srand(time(0));
    for (int j = 0; j<100; j++){
        innerLoop();
        cout << endl;
    }
    return 0;
}

答案 1 :(得分:1)

作为代码狂热的替代品&#39;代码更改,有一个更简单的解决方案(虽然不一定是教育性的) - 生成1000 十进制整数,然后在使用std::hex打印时将它们转换为十六进制。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main(){
    srand(time(0));
    for(int j=0; j<100; j++){
        int number = rand() % 1000; // Or whatever your upper limit is.
        cout << hex << number << endl;
    }
    cout << endl;
    return 0;
}

答案 2 :(得分:0)

最里面的循环生成一个随机的十六进制数字并打印出来 让我们将数字生成分解为函数:

char random_digit() {
   int digit = rand() % 16;
   if (digit > 9) {
      return digit - 10 + 'A';
   }
   else {
      return digit;
   }
}

int main() {
   srand(time(0));
   for(int j = 0; j < 100; j++) {
       for(int i = 0; i < 6; i++){
           cout << random_digit();
       }
       cout << endl;
   }
}

现在我们有一个打印多个随机数字的循环 我们也可以把它变成一个功能 让我们给它一个参数,这样我们就不需要对代码进行硬编码了:

void print_number(int length) {
   for (int i= 0; i < length; i++) {
      cout << random_digit();
   }
   cout << endl;
}

// New main
int main() {
   srand(time(0));
   for(int j = 0; j < 100; j++) {
      print_number(6);
   }
   return 0;
}