伪代码转换:c语言实现三种进制转换

发布时间 2023-10-30 21:10:54作者: 20231413张桓溪

话不多说,上代码

#include <stdio.h>

int main()
{
int newBase,decimalNumber,quotient,remainder,count,i,countforcount;

int numbers[100];

char c;

Restart:;

count=99;

countforcount=0;

printf("Enter the new base\n");
scanf("%d",&newBase);

if( newBase != 2&&newBase != 8&&newBase != 16)
{
    printf("Base Type Unavailable\n");
    goto Break;
}

printf("Enter the number to be converted\n");
scanf("%d",&decimalNumber);
quotient = 1;
while( quotient != 0 )
{
    quotient = decimalNumber / newBase;
    remainder = decimalNumber % newBase;
    numbers[count] = remainder;
    count--;
    countforcount++;
    decimalNumber = quotient;
}
i=100-countforcount;
switch (newBase)
{
    case 2:
        while(i<100)
        {
            printf("%d",numbers[i]);
            i++;
        }
        printf("\n");
        break;

    case 8:
        while(i<100)
        {
            printf("%d",numbers[i]);
            i++;
        }
        printf("\n");
        break;

    case 16:
        while(i<100)
        {
            printf("%x",numbers[i]);
            i++;
        }
        printf("\n");
        break;
}

printf("Restart?(y/n)\n");
getchar();
scanf("%c",&c);
if(c=='y')
{
    goto Restart;
}

Break:;

return 0;
}

写代码的过程与心得

写这个代码之前自学了一下数组,感觉能够很好地处理中这样的很多个离散数字凑到一起输出的问题;

因为只需要输出三种进制的情况,所以让非这三种进制情况的进制输入无效,程序停止;

写完这个代码的核心功能之后感觉每次只能转换一波数字,每转完一个就要重新f9运行有点麻烦,所以添加了一个提供重新从头运行程序的代码块;

在写作过程中还遇到了连续使用或运算符无效的问题,询问ai之后知道了或运算符不能连用,通过在几种情况之间使用与运算符连接的方式进行处理,新的知识增加了。

但是汪老师上课说最好不要用goto来着,实验二编程也用到了两次,图省事用goto的习惯以后应该改正。