请问用C语言编写一个十进制转换成二进制或八进制或十六进制的程序需要怎么打?
本人C语言初学者,打成了这个样子,但是还有许多的问题在里面,请问哪里不对?#include"stdio.h"intmain(){inta,b,c[10000],i=0,j...
本人C语言初学者,打成了这个样子,但是还有许多的问题在里面,请问哪里不对?
#include"stdio.h"
int main(){
int a,b,c[10000],i=0,j=0;
printf("请输入想转换的a进制:a= ");
scanf("%d",&a);
switch (a)
{
case 2:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%2;
b=b/2;
i++;
j++;
}
while(b!=1);
c[j]=1;
printf("二进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);
break;
case 8:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%8;
b=b/8;
i++;
j++;
}
while(b!=1);
printf("八进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);
break;
case 16:
printf("请输入一个十进制:b= ");
scanf("%d",c[i]);
do
{
c[i]=b%16;
b=b/8;
i++;
j++;
}
while (b!=1);
printf("十六进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);break;
default:printf("错误\n");
}
} 展开
#include"stdio.h"
int main(){
int a,b,c[10000],i=0,j=0;
printf("请输入想转换的a进制:a= ");
scanf("%d",&a);
switch (a)
{
case 2:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%2;
b=b/2;
i++;
j++;
}
while(b!=1);
c[j]=1;
printf("二进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);
break;
case 8:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%8;
b=b/8;
i++;
j++;
}
while(b!=1);
printf("八进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);
break;
case 16:
printf("请输入一个十进制:b= ");
scanf("%d",c[i]);
do
{
c[i]=b%16;
b=b/8;
i++;
j++;
}
while (b!=1);
printf("十六进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);break;
default:printf("错误\n");
}
} 展开
2个回答
展开全部
#include<stdio.h>
voidmain()
{
//进制转换函数的声明
inttransfer(intx);
intx;
printf("请输入一个十进制数:");
scanf("%d",&x);
printf("转换成二进制数是:%d\n",transfer(x));
}
inttransfer(intx)
{
intp=1,y=0,yushu;
while(1)
{
yushu=x%2;
x/=2;
y+=yushu*p;
p*=10;
if(x<2)
{
y+=x*p;
break;
}
}
returny;
}
扩展资料
C语言:整数转换十六进制数和八进制
#include<stdio.h>
voidmain()
{
inti;
printf("请输入一个十进制数:");
scanf("%d",&i);
printf("这个数转换为十六进制数:%x\n\n",i);
printf("这个数转换为八进制数:%o\n",i);
getch();
return0;
}
展开全部
int main(){
int a,b,c[10000],i=0,j=0;
printf("请输入想转换的a进制:a= ");
scanf("%d",&a);
switch (a)
{
case 2:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%2;
b=b/2;
i++;
j++;
}
while(b!=1);
c[j]=1;
printf("二进制为: ");
for(i=j;i>=0;i--)
printf("%d",c[i]);
break;
case 8:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%8;
b=b/8;
i++;
j++;
}
while(b!=0);
printf("八进制为: ");
for(i=j-1;i>=0;i--)
printf("%d",c[i]);
break;
case 16:
printf("请输入一个十进制:b= ");
scanf("%d",&b);
do
{
c[i]=b%16;
b=b/16;
i++;
j++;
}
while (b!=0);
printf("十六进制为: ");
for(i=j-1;i>=0;i--)
printf("%d",c[i]);break;
default:printf("错误\n");
}
}
修改过的,望采纳
追问
正确了!十分感谢!
问题是出在case 16下面的scanf我把数组输入了是吧,还有两个是结束的条件不对是么
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询