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

如题所述

十进制转化为二进制可以采用递归的方法或者数组加循环的方法。要判断一个十进制数是否合法,首先需要知道什么样的实数才是合法的。使用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)。

追问

这样输入虽然读取了前面的数字,但它是不是合法的,如果不合法怎样做出判断

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-29

代码如下:

#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

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网