C语言编写R进制转换通用程序(R=2.5.8.16),菜单选择的形式!!急!!!

题目:
R进制转换通用程序
编写一个将某个范围在-32768~32767之间的整数转换为R进制(R=2,5,8,16)的通用程序。
要求:
用C语言编写
以菜单的形式选择相应的转化进制,并输出结果。
1、菜单选择函数
void menu(void)
{ char ch;
printf(“1.Check Spelling\n”);
printf(“2.Correct Spelling Errors\n”);
printf(“3.Display Spelling Errors\n”);
printf(“4.Quit\n”);
do {
ch=getchar(); /*read the selection from the keyboard*/
switch(ch){
case ‘1’:
check_spelling();
break;
case’2’:
correct_errors();
break;
case’3’:
display_errors();
break;
case’4’:
exit(0); /*return to OS*/
}
}while(ch!=’1’&&ch!=’2’&&ch!=’3’);
}
求高手编写一下,急用!!!!!!!!
在今晚编好,谢谢了!!!!

/* 标准文档模板 */

#include "Stdio.h"
#include "Conio.h"

unsigned int number,radix;

void input_number()
{
    printf("Please input another number: \n");
    scanf("%d",&number);
}

void change_to_radix(unsigned int n)
{
    if(n<radix) printf("%c",n<10?n+'0':n-10+'A');
    else{
        change_to_radix(n / radix);
        change_to_radix(n % radix);
    }
}

void menu(void)
{   char ch;
    int  radixs[]={2,5,8,16};
    do {
        printf("\n0.Input another number\n");
        printf("1.Convert the number to Binary(radix 2)\n");
        printf("2.Convert the number to Pental(radix 5)\n");
        printf("3.Convert the number to Octal(radix 8)\n");
        printf("4.Convert the number to Hexdecimal(radix 16)\n");
        printf("5.Convert the number to form of radix n\n");
        printf("6.Quit\n");
        printf("Choose an item: ");
    ch=getche(); /*read the selection from the keyboard*/
    printf("\n\n");
        switch(ch){
            case  '0':
                input_number(); break;
            case '1':
            case '2':
            case '3':
            case '4':
        radix=radixs[ch-'1'];
                change_to_radix(number); break;
            case '5':
                printf("Please Input the Radix(no more than 36(0-9,A-Z)");
                scanf("%d",&radix);
                change_to_radix(number);break;
            case '6':
                exit(0); /*return to OS*/
        }
    }while(ch>='0'&&ch<='6');
}

int main(void)
{
 /* 此处添加你自己的代码 */
  menu();
  return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-07-02
//使用连除取余数法,可以为2-16任意进制
//有问题给我消息

#include<math.h>
#include<stdio.h>

int change(int in,int n,char* out)
{
//in为待转换十进制数,n为进制
//out为字符数组,输出结果为out[0]到out[leng]所有字符组成的串
//out[0]为正负号
//leng为输出串长度,包括正负号,对应转换后的数字长度,考虑到范围,out最
//长需要17个字符表示(二进制,-32768,第一个位置用来表示正负)
int leng;
if(in==0)
{//等于0单独处理
out[0]='+';
out[1]='0';
leng=2;
return leng;
}
if(in>32767||in<-32768)
{
printf("输入数据超出范围");
return -1;
}
else
{
if(in>0)
out[0]='+';
else
{
out[0]='-';
in=-in;
}
int temp[17];
int b=1,i=1;
leng=1;//长度包括符号,因此初始化为1
do
{
b=in/n;
temp[i]=in%n;

in=b;
i++;
leng++;
}
while(b!=0);

for(i=1;i<leng;i++)
{
if(temp[i]<10)
{
out[leng-i]=temp[i]+48;
}
else
{
out[leng-i]=temp[i]+87;
}
}
return leng;

}

}

void main()
{

int a;
char ch[17];

printf("输入数据");
scanf("%d",&a);
int leng=change(a,2,ch);
if(leng!=-1)
{
for(int i=0;i<leng;i++)
printf("%c",ch[i]);
}

}
第2个回答  2020-06-22
#include <stdio.h>
#include <stdlib.h>
void trans(int n,int m)
{
if(n)
{
trans(n/m,m);
if(n%m<10) printf("%c",n%m+'0');
else printf("%c",n%m-10+'A');
}
}
void main()
{
int n,m;
printf("输入十进制数N和转化的进制数M
相似回答