我应该在这个C项目中开始的第一步是什么? (二进制,十进制和十六进制)

问题描述 投票:-1回答:1

我是一名大学生,最近我有一个关于从十进制,十六进制和二进制来回转换数字的项目。这里是描述:

我需要您编写一个接受n个参数但至少需要3个参数的程序。

第一个参数应为您提供数字的基础。第二个参数应该是要转换为的基础。第三个,第四个,一直到n都是需要转换的数字序列

./Aassign1 decimal binary 1 2 3 4 5 6 7 8 9 10

涵盖范围:我希望您能够从十进制,十六进制和二进制来回转换数字。

您的代码结构:

我希望您免费编写9个副作用(表示它们不会更改其输入)以在基数之间进行转换。这意味着您将需要使用malloc返回结果的二维数组:

char ** decimalToDecimal (...)
char ** decimalToBinary (...)
char ** decimalToHex (...)

char ** binaryToDecimal (...)
char ** binaryToBinary (...)
char ** binaryToHex (...)
char ** hexToDecimal (...)
char ** hexToBinary (...)
char ** hexToHex (...)
void seekUserInput (...)
*** inputValidation (...)
int main (...)

基于前两个参数,您应传递其余两个参数,然后返回另一个带有结果的新数组,然后可以迭代遍历,直到

请记住,如果数组是在堆栈上分配的,则不能传递它们,因此请确保将它们分配到堆上。别忘了释放您的记忆!

我已经进行了有关如何将特定类型转换为另一种数字的研究,如何让程序定义用户输入的数字类型?我做了这样的事情:

void seekUserInput(int* n) 
{

char a[10];

printf("Binary, Decimal or Hex?");
scanf("%s", a);

if (strcmp(a, "binary") == 0) 
    {
        int x;

        printf("Enter the binary number: ");

        scanf("%d", &x);

        *n = x;
    }
}

我试图通过用户输入的字符串来分离这三种数字,但是我没有得到我所期望的东西,我在哪里弄错了?还是C可以定义属于二进制,十进制或十六进制的数字字符串?

c binary hex decimal
1个回答
0
投票

一个小小的更新,我的工作是这样的,如何进行验证以识别二进制,十进制和十六进制?而且我也不知道该怎么做char ** binaryToBinary(...)

#include <stdio.h>
#include <stdlib.h>

long int solve(int n, int p)

{

    if (n == 0) return 0;

    return p * (n % 10) + solve(n / 10, p * 2);

}

char ** decimalToBinary (int n)
{
    int p = 1, r = n;

    char *bin = (char*)malloc(sizeof(char) * 100);

    itoa(r, bin, 2);

    return bin;
}

char ** decimalToHex (int n)
{
    int p = 1, r = n;

    char *hex = (char*)malloc(sizeof(char) * 100);

    itoa(r, hex, 16);

    return hex;
}

char** binaryToDecimal(int n)

{

    int p = 1, r;

    r = solve(n, p);

    char *dec = (char*)malloc(sizeof(char) * 100);

    itoa(r, dec, 10);

    return dec;

}

char** binaryToHex(int n)

{

    int p = 1, r;

    r = solve(n, p);

    char *hex = (char*)malloc(sizeof(char) * 100);

    itoa(r, hex, 16);

    return hex;

}

void seekUserInput(int* n)

{

    int x;

    printf("Enter the number: ");

    scanf("%d", &x);

    *n = x;

}

void inputValidation(int* n, int n1)

{



}

int main()

{

    int n, r;

    seekUserInput(&n);

    char* d = binaryToDecimal(n);

    char* h = binaryToHex(n);

    printf("Decimal: %s\nHex: %s\n", d, h);

    free(binaryToDecimal(n));
    free(binaryToHex(n));

    return 0;

}
© www.soinside.com 2019 - 2024. All rights reserved.