c语言刚入门,问一下十进制如何转换二进制,并判断输入的十进制是否合法?

 我来答
夏天的小红花

2019-05-29 · TA获得超过4813个赞
知道大有可为答主
回答量:1万
采纳率:83%
帮助的人:720万
展开全部

十进制转化为二进制可以采用递归的方法或者数组加循环的方法。要判断一个十进制数是否合法,首先需要知道什么样的实数才是合法的。使用C语言的输入函数输入时C语言系统自动会过滤不合法的字符。遇到非十进制的字符,它会自动结束读取。所以说,具体什么样的情况属于非法要有更加进一步的说明,并且给出例子。下面的程序是判断一个输入的年龄是否合法,并且把它合法的年龄转换为二进制的程序。
#include
void dec2bin(int n)
{if(n>1)dec2bin(n/2);
printf("%d",n%2);
}
int main()
{ int age; //年龄,若为负数,或>150认定为非法
scanf("%d",&age);
if(age150)
printf("Invalid age!");
else
{printf("%d=(",age);
dec2bin(age);
printf(")2\n");
}
return 0;
}

更多追问追答
追问
如果输入的时候带有英文该怎么进行判断,例如输入45C?
追答

这种情况,C语言系统会只读取前面的数字(45)。

520旒
2019-05-29 · TA获得超过117个赞
知道小有建树答主
回答量:52
采纳率:0%
帮助的人:35.5万
展开全部

代码如下:

#include<stdio.h>           /*输入输出头文件*/
void main()           /*空类型:主函数*/
{
    int b[16],x,k,r,i;         /*定义变量和数组的数据类型为整型*/
    printf("输入一个十进制:");         /*输出文字提示*/
    scanf("%d",&x);         /*输入一个十进制数字*/
    k=-1;          /*将-1赋给k*/
    do         /*用循环将十进制的数转化成二进制的数*/
    {
        r=x%2;          /*用除R取余倒计法计算二进制*/
        b[++k]=r;        /*将值赋给数组*/
        x/=2;        /*将原数除2*/
    }while(x>=1);
    for(i=k;i>=0;i--)        /*将上面倒计的数正回来*/
        printf("%d ",b[i]);       /*输出结果*/
    printf("\n");
}

运行结果:
输入一个十进制:45
1 0 1 1 0 1

楼主若觉得回答有所帮助,望采纳,谢谢!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式