哪位大哥大姐帮忙做3道C++题目,感激不尽:

2025-05-11 00:20:26
推荐回答(2个)
回答1:

我今天上午给你写了一个你要的程序,是用函数实现的,很简洁,随时可以调用。
以下是程序清单:

#include

void er2(int num);
void er8(int num);
void er16(int num);
void main()
{
int a,num;
do
{
printf("\n0、退出 1、十进制~二进制 2、十进制~八进制 3、十进制~十六进制\n请选择功能:");
scanf("%d",&a);
if(a!=0)
{
printf("请输入一个进制整数:");
scanf("%d",&num);
switch(a)
{
case 1:
er2(num);
break;
case 2:
er8(num);
break;
case 3:
er16(num);
break;
}
}
}while(a!=0);
}

void er2(int num)
{
int count=0,p[20],temp[20],i = 0,a = 0;
while(num!=0)
{
p[count]=num%2;
num=num/2;
count++;
a=count;
}
printf("转换为二进制:");
for(count=a-1;count>=0;count--)
temp[i++] = p[count];

for(count=0;count printf("%d",temp[count]);
printf("\n");
for(count=a-1;count>=0;count--)
printf("%d",p[count]);
}

void er16(int num)
{
int count=0,p[5],temp[5],i = 0,a = 0;
int data;
while(num!=0)
{
p[count]=num%16;
num=num/16;
count++;
a=count;
}
printf("转换为十六进制:");
//排列次序为正向次序
for(count=a-1;count>=0;count--)
temp[i++] = p[count];
//输出转换结果
for(count=0;count printf("%d",temp[count]);
printf("\n");
//验证排序后的转换结果
for(count=a-1;count>=0;count--)
printf("%d",p[count]);
printf("\n Result:");
// 做成一个变量存储转换结果
switch(a)
{
case 2:
data = temp[a-2]*10+temp[a-1];
break;
case 3:
data = temp[a-3]*100+temp[a-2]*10+temp[a-1];
break;
}
//输出转换的最后结果
printf("%d",data);
}

void er8(int num)
{
int count=0,p[5],temp[5],i = 0,a = 0;
int data;
while(num!=0)
{
p[count]=num%8;
num=num/8;
count++;
a=count;
}
printf("转换为八进制:");
//排列次序为正向次序
for(count=a-1;count>=0;count--)
temp[i++] = p[count];
//输出转换结果
for(count=0;count printf("%d",temp[count]);
printf("\n");
//验证排序后的转换结果
for(count=a-1;count>=0;count--)
printf("%d",p[count]);
printf("\n Result:");
// 做成一个变量存储转换结果
switch(a)
{
case 2:
data = temp[a-2]*10+temp[a-1];
break;
case 3:
data = temp[a-3]*100+temp[a-2]*10+temp[a-1];
break;
}
//输出转换的最后结果
printf("%d",data);

}

回答2:

同志,C++只会看,不会写