You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言不使用数组指针结构体如何返回多值?十进制转二/八进制作业求助

解决方案

实现思路

C语言原生仅支持单个返回值,在禁用数组、指针、结构体作为返回载体的前提下,可采用单值打包拆分方案:

  • 使用64位无符号整数unsigned long long作为函数返回值
  • 高32位存储二进制转换结果,低32位存储八进制转换结果
  • 主函数拿到返回值后按位拆分即可得到两个结果

如果你的编译环境不支持64位整数,也可以替换为全局变量方案:预先定义两个全局变量分别存储二进制、八进制结果,转换函数内部直接给全局变量赋值,主函数读取全局变量即可。

完整可运行代码

#include<stdio.h>

// 转换函数:返回打包后的64位整数
unsigned long long Dec2BinOct(unsigned long n) {
    unsigned long g = n, place = 1, bin = 0, r, o = 0, place2 = 1;
    // 转换二进制
    for(; g != 0; place = place * 10)  {  
        r = g % 2;    
        bin = bin + (r * place);
        g = g / 2;  
    }
    // 转换八进制
    g = n;
    while (g != 0) {
        o = o + (g % 8) * place2;
        g = g / 8;
        place2 = place2 * 10;
    }
    // 打包两个结果返回
    return ((unsigned long long)bin << 32) | o;
}

int main()
{
    unsigned long n;  
    printf("Conversion: Decimal to binary and octal.\n");
    printf("Enter number: ");
    scanf("%lu", &n);
    unsigned long long res = Dec2BinOct(n);
    unsigned long bin = (res >> 32) & 0xFFFFFFFF;
    unsigned long oct = res & 0xFFFFFFFF;
    printf("%lu is %lu in Binary Form. \n", n, bin);
    printf("%lu is %lu in Octal Form.\n\n", n, oct);
    return 0;
}

全局变量方案示例(备用)

#include<stdio.h>
// 全局变量存储转换结果
unsigned long bin_res, oct_res;

void Dec2BinOct(unsigned long n) {
    unsigned long g = n, place = 1, r, place2 = 1;
    bin_res = 0;
    oct_res = 0;
    // 转换二进制
    for(; g != 0; place = place * 10)  {  
        r = g % 2;    
        bin_res = bin_res + (r * place);
        g = g / 2;  
    }
    // 转换八进制
    g = n;
    while (g != 0) {
        oct_res = oct_res + (g % 8) * place2;
        g = g / 8;
        place2 = place2 * 10;
    }
}

int main()
{
    unsigned long n;  
    printf("Conversion: Decimal to binary and octal.\n");
    printf("Enter number: ");
    scanf("%lu", &n);
    Dec2BinOct(n);
    printf("%lu is %lu in Binary Form. \n", n, bin_res);
    printf("%lu is %lu in Octal Form.\n\n", n, oct_res);
    return 0;
}

内容的提问来源于stack exchange,提问作者Dexter1403

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:45:07