伪代码转换:c语言实现三种进制转换
话不多说,上代码
#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的习惯以后应该改正。