我是编码的新手,我对如何使用函数缩短代码有疑问。我的作业问题说我需要取出嵌套循环并使用函数缩短我以前的代码,我需要一点帮助跳转。此代码显示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;
}
答案 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;
}