十进制转换二进制和八进制...帮我纠正一下.

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:59:01
谢谢啊!!!
#include<stdio.h>
void two();
void eight();
void main()
{
int a;
for(;;)
{
printf("\n 0.退出 1.十进制~二进制 2.十进制~八进制");
printf("\n 请选择功能:");
scanf("%d",&a);
if(a==1)
two();
if(a==2)
eight();
if(a==0)
break;
}
}
void two()
{
int p[30];
int k,i;
int num,num1=0;
printf("\n请输入一个十进制整数:");
scanf("%d",&num);
k=2;
for(i=0;num!=0;i++)
{
p[i]=num%k;
num/=k;
}
printf("\n转换为二进制:");
for(;i>=0;i--)
{
printf("%d",p[i]);
}
printf("\n");
}
void eight()
{
int q[50];
int k1,i,num;
printf("\n请输入一个十进制整数:");
scanf("%d",&num);
k1=8;
for(i=0;num!=0;i++)
{
q[i]=num%k1;
num=num/k

你的程序只有一个小错误,没有对数组进行初始化,应该增加下面的语句:
for (i=0;i<30;i++) p[i]=0;

两个函数基本上是一样的,可以合并,我给你修改后的程序如下:

#include<stdio.h>
void conv(int);
void main() {
int a=1;
while(a) {
printf("\n 0.退出 2.十进制~二进制 8.十进制~八进制");
printf("\n 请选择功能:");
scanf("%d",&a);
if(a!=0) conv(a);
}
}

void conv(int k){
int i,num,p[30];
for (i=0;i<30;i++) p[i]=0;
printf("\n请输入一个十进制整数:");
scanf("%d",&num);
for(i=0;num!=0;i++) { p[i]=num%k; num/=k; }
printf("\n转换为%d进制:",k);
for(;i>=0;i--) printf("%d",p[i]);
printf("\n");
}

不知道你在什么环境下写C语言程序,我看有汉字就肯定不是TURBO C了,我在SCO UNIC下对上面的程序调试通过,运行情况如下:

$ cc a.c
$ a.out

0.退出 2.十进制~二进制 8.十进制~八进制
请选择功能:2

请输入一个十进制整数:213

转换为2进制:011010101

0.退出 2.十进制~二进制 8.十进制~八进制
请选择功能:8