求助,是否存在一个函数使得输出的字符被重新利用
本帖最后由 凌_霜 于 2018-12-22 17:40 编辑代码如下:
#include<stdio.h>//功能:十进制转化二进制
void main()
{
int a,i,bei,yu;//bei:被除数。yu:余数。i=循环次数。a:所输入的数字。
printf("该程序可实现十进制转化二进制!\n");
printf("请输入需要转化的十进制数字:\n\t\t\t");
scanf("%d",&a);
yu=a%2;bei=a/2;
printf("转化后的二进制数字为:(请从右向左读取!)\n\t\t\t");
if(a<2)
{
bei=a/2;
yu=a%2;
i=1;
printf("%d",yu);
printf("该程序共进行了%d次除法!",i);
}
else
{
i=0;
printf("0");
begin:for(;bei>0;)
{
yu=bei%2;
bei/=2;
printf("%d",yu);
i++;
if(bei>0){goto begin;}
printf("\n\t\t\t该程序共进行了%d次除法!",i+1);
if(bei=0){goto finish;}
}
}
finish:printf("\n\t\t\t\t\t\tFinish");
}
输入45,得到的结果如下:
该程序可实现十进制转化二进制!
请输入需要转化的十进制数字:
45
转化后的二进制数字为:(请从右向左读取!)
001101
该程序共进行了6次除法!
Finish
问题:能否利用函数将输出的001101赋值到数组,如果不行,这个程序应该怎么改???C语言萌新,求指教 你的代码是自己写的吧。。你用计算器算下看看,45的二进制是多少。不要用goto
用数组存放的代码:
#include<stdio.h>//功能:十进制转化二进制
void main()
{
int a,i,bei,yu;//bei:被除数。yu:余数。i=循环次数。a:所输入的数字
char b = {'\0'};// 声明一个足够大的数组
printf("该程序可实现十进制转化二进制!\n");
printf("请输入需要转化的十进制数字:\n\t\t\t");
scanf("%d",&a);
yu=a%2;bei=a/2;
printf("转化后的二进制数字为:(请从右向左读取!)\n\t\t\t");
i=0;
if(a<2)
{
bei=a/2;
yu=a%2;
b = yu == 1? '1': '0';
}
else
{
b = yu == 1? '1': '0';
begin:for(;bei>0;)
{
yu=bei%2;
bei/=2;
i++;
b = yu == 1? '1': '0';
if(bei>0){goto begin;}
if(bei=0){goto finish;}
}
}
printf("%s", b);
printf("该程序共进行了%d次除法!",i+1);
finish:printf("\n\t\t\t\t\t\tFinish");
} ba21 发表于 2018-12-22 19:05
你的代码是自己写的吧。。你用计算器算下看看,45的二进制是多少。不要用goto
感谢大佬,已经好了,这是修改后的代码,然后就是goto的用法,我认为只要声明清楚跳转的地点,用goto会轻松很多,那么不用goto是因为易读性的原因吗?
#include<stdio.h>//功能:十进制转化二进制
void main()
{
int a,i,bei,yu,j,mid;//bei:被除数。yu:余数。i=循环次数。a:所输入的数字。
char c;
printf("该程序可实现十进制转化二进制!\n");
printf("请输入需要转化的十进制数字:\n\t\t\t");
scanf("%d",&a);
yu=a%2;bei=a/2;
if(a<2)
{
printf("转化后的二进制数字为:\n\t\t\t");
bei=a/2;
yu=a%2;
i=1;
printf("%d",yu);
printf("\n该程序共进行了%d次除法!",i);
}
else
{
i=0;
c=0;
begin:for(;bei>0;)
{
yu=bei%2;
bei/=2;
i++;
c=yu;
if(bei>0){goto begin;}
if(bei=0){goto finish;}
}
finish:printf("转化后的二进制数字为:\n\t\t\t");
for(j=0;j<i/2;j++,i--)
{
mid=c;c=c;
}
for(j=i,i=0;i<=j;i++)
{
printf("%d",c);
}
printf("0");
printf("\n\t\t\t该程序共进行了%d次除法!",i+2);
}
printf("\n\t\t\t\t\t\tFinish");
}
凌_霜 发表于 2018-12-23 17:37
感谢大佬,已经好了,这是修改后的代码,然后就是goto的用法,我认为只要声明清楚跳转的地点,用goto会轻 ...
是的 ba21 发表于 2018-12-23 18:22
是的
感谢{:5_108:}
页:
[1]