下面程序不懂,大神请给我逐句讲解一下吧
答案:2 悬赏:70 手机版
解决时间 2021-03-24 23:44
- 提问者网友:却不属于对方
- 2021-03-24 09:59
下面程序不懂,大神请给我逐句讲解一下吧
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-03-24 10:47
#include
#include
void fun(int m, int k)
{
int aa[20];
int i = 0;
int tmp = 0;
// 如果输入的数是0,则直接加入数组
if (0 == m)
{
aa[0] = 0;
}
else
{
// 循环将十进制数转换成二进制,然后存入数组
for(i = 0; ; i++)
{
aa[i] = m % k; // 二进制是取余数
m /= k; // 然后将商再进行下一次循环,自己用算法在草稿纸上算一次就明白了
if (0 == m || 1 == m) // 当商为0或者为1的时候循环结束,但这时要将商存入数组,因为这是二进制最高位
{
aa[++i] = m;
break;
}
}
}
// 循环输出数组
for(;i >= 0;i--)
{
printf("%d",aa[i]);
}
}
int main()
{
int b,n;
printf("
Please enter a number and a base:
");
scanf("%d%d", &n, &b);
fun(n, b);
printf("
");
return 0;
}你的算法似乎有些问题,这是在你基础上修改的,也加了注释,你可以看看。
#include
void fun(int m, int k)
{
int aa[20];
int i = 0;
int tmp = 0;
// 如果输入的数是0,则直接加入数组
if (0 == m)
{
aa[0] = 0;
}
else
{
// 循环将十进制数转换成二进制,然后存入数组
for(i = 0; ; i++)
{
aa[i] = m % k; // 二进制是取余数
m /= k; // 然后将商再进行下一次循环,自己用算法在草稿纸上算一次就明白了
if (0 == m || 1 == m) // 当商为0或者为1的时候循环结束,但这时要将商存入数组,因为这是二进制最高位
{
aa[++i] = m;
break;
}
}
}
// 循环输出数组
for(;i >= 0;i--)
{
printf("%d",aa[i]);
}
}
int main()
{
int b,n;
printf("
Please enter a number and a base:
");
scanf("%d%d", &n, &b);
fun(n, b);
printf("
");
return 0;
}你的算法似乎有些问题,这是在你基础上修改的,也加了注释,你可以看看。
全部回答
- 1楼网友:往事隔山水
- 2021-03-24 11:32
把m想成10 k想成2 在结合10-2转换 还不懂那可以不是解释不解释的问题,应该是没基础的问题回头好好看看c语言书吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯