c语言输出10进制数转换62进制数代码

108 阅读5分钟

c语言输出10进制数转换62进制数代码

#include<stdio.h> #include<stdlib.h> int main() { char str[63]={"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};//定义进制总数 int s,t; int i=0,j; char a[10000]; scanf("%d",&s);//输入10进制数 t=62;//目标进制数 while(s>0) { a[i]=str[s%t]; s=s/t; i++; } for(j=i-1;j>=0;j--) printf("%c",a[j]);//输出转换后的进制数 return 0; }

以下是一个用 C 语言实现将 62 进制数转换为十进制的程序示例代码 正确例题 #include <stdio.h> #include <string.h>

// 字符到数值的映射 int charToValue(char c) { if (c >= '0' && c <= '9') { return c - '0'; } else if (c >= 'a' && c <= 'z') { return c - 'a' + 10; } else if (c >= 'A' && c <= 'Z') { return c - 'A' + 36; } return -1; // 非法字符 }

// 将 62 进制数转换为十进制 long long convertToDecimal(char *num) { long long decimal = 0; int len = strlen(num);

for (int i = 0; i < len; i++) {
    int value = charToValue(num[i]);
    if (value == -1) {
        printf("非法字符\n");
        return -1;
    }
    decimal = decimal * 62 + value;
}

return decimal;

}

int main() { char num[100]; printf("请输入 62 进制数: "); scanf("%s", num);

long long decimal = convertToDecimal(num);
if (decimal!= -1) {
    printf("转换为十进制: %lld\n", decimal);
}

return 0;

}

#include<stdio.h> #include<stdlib.h> int main() { char str[63]={"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};//定义进制总数 int s,t; int i=0,j; char a[10000]; scanf("%d",&s);//输入10进制数 t=62;//目标进制数 while(s>0) { a[i]=str[s%t]; s=s/t; i++; } for(j=i-1;j>=0;j--) printf("%c",a[j]);//输出转换后的进制数 return 0; } 将以上c语言程序代码改编成c++语言程序代码。 将上述C语言代码改编成C++语言代码,主要区别在于C++支持更丰富的输入输出流操作,以及字符串处理。下面是C++版本的代码: c++语言输出10进制数转换62进制数代码

#include <iostream>
#include <string>
#include <algorithm> // 用于std::reverse

int main() {
    std::string str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 定义进制总数
    int s, t;
    std::cin >> s; // 输入10进制数
    t = 62; // 目标进制数

    std::string result; // 用于存储转换后的进制数
    while (s > 0) {
        result += str[s % t]; // 将余数转换为对应的字符并添加到结果字符串
        s /= t; // 更新s为商
    }

    // 由于我们是从低位到高位计算的,所以需要反转字符串以得到正确的顺序
    std::reverse(result.begin(), result.end());

    // 输出转换后的进制数
    std::cout << result << std::endl;

    return 0;
}

主要改动点:

  1. 使用了std::string来代替C语言中的字符数组,这样可以更方便地处理字符串。
  2. 使用了std::cinstd::cout来代替scanfprintf,这是C++标准输入输出流。
  3. 在计算过程中,我们直接将余数转换为对应的字符并添加到字符串result中。
  4. 由于我们是从低位到高位计算的,所以最后使用std::reverse函数来反转字符串,以得到正确的顺序。
  5. 代码中没有显式地声明数组的大小,因为std::string会根据需要自动调整大小。

注意:在C++中,使用std::string和标准输入输出流是推荐的做法,因为它们提供了更多的功能和更好的类型安全。

#include <stdio.h> #include <string.h>

// 字符到数值的映射 int charToValue(char c) { if (c >= '0' && c <= '9') { return c - '0'; } else if (c >= 'a' && c <= 'z') { return c - 'a' + 10; } else if (c >= 'A' && c <= 'Z') { return c - 'A' + 36; } return -1; // 非法字符 }

// 将 62 进制数转换为十进制 long long convertToDecimal(char *num) { long long decimal = 0; int len = strlen(num);

for (int i = 0; i < len; i++) {
    int value = charToValue(num[i]);
    if (value == -1) {
        printf("非法字符\n");
        return -1;
    }
    decimal = decimal * 62 + value;
}

return decimal;

}

int main() { char num[100]; printf("请输入 62 进制数: "); scanf("%s", num);

long long decimal = convertToDecimal(num);
if (decimal!= -1) {
    printf("转换为十进制: %lld\n", decimal);
}

return 0;

} 将以上c语言程序代码改编成c++语言程序代码。

将上述C语言代码改编成C++代码,主要改动点在于C++中输入输出流的使用和字符串处理。下面是C++版本的代码:

以下是一个用 C++ 语言实现将 62 进制数转换为十进制的程序示例代码

正确例题
#include <iostream>
#include <string>
#include <algorithm> // 用于std::reverse

// 字符到数值的映射
int charToValue(char c) {
    if (c >= '0' && c <= '9') {
        return c - '0';
    } else if (c >= 'a' && c <= 'z') {
        return c - 'a' + 10;
    } else if (c >= 'A' && c <= 'Z') {
        return c - 'A' + 36;
    }
    return -1;   // 非法字符
}

// 将 62 进制数转换为十进制
long long convertToDecimal(const std::string& num) {
    long long decimal = 0;
    for (char c : num) {
        int value = charToValue(c);
        if (value == -1) {
            std::cout << "非法字符\n";
            return -1;
        }
        decimal = decimal * 62 + value;
    }
    return decimal;
}

int main() {
    std::string num;
    std::cout << "请输入 62 进制数: ";
    std::cin >> num; // 使用cin读取字符串

    long long decimal = convertToDecimal(num);
    if (decimal != -1) {
        std::cout << "转换为十进制: " << decimal << std::endl;
    }

    return 0;
}

主要改动点:

  1. 使用std::string来代替C语言中的字符数组,这样可以更方便地处理字符串。
  2. 使用std::cinstd::cout来代替scanfprintf,这是C++标准输入输出流。
  3. convertToDecimal函数的参数类型从char*改为const std::string&,这样可以接受std::string类型的参数。
  4. main函数中,使用std::cin读取用户输入的字符串,而不是scanf
  5. 由于C++的std::string是动态的,所以不需要预先定义字符串的大小。
  6. convertToDecimal函数中,使用了范围for循环来遍历字符串中的每个字符,这使得代码更加简洁。

注意:在C++中,使用std::string和标准输入输出流是推荐的做法,因为它们提供了更多的功能和更好的类型安全。