C语言如何输入一个数字并判断是否合法?

水墨风光 2007-09-13 12:56:44
我正在研究一个题目,但是遇到这个问题

C语言如何输入一个数字,并判断是否合法?


具体是,

请输入一个十进制数,然后判断是否是十进制;

请输入一个二进制数,然后判断是否是二进制;

请输入一个八进制数,然后判断是否是八进制;

请输入一个十六进制数,然后判断是否是十六进制。


还有,怎么样输入一个字符数组,并转换成long型的十进制数?


还有,怎么样把十进制数转换成其他进制 2,8,16

还有,怎么把数字转换为字符,把字符转换为数字??


我编程经验少,请帮帮我吧。。


...全文
2946 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanhuo1234 2010-11-08
  • 打赏
  • 举报
回复
其实很简单,大体思路是先随便输入一个数(任何进制都可以),将它转换成十进制数,再将十进制数分别转换成
二、八、十六进制数,再将所得数与原来输入的数进行对比,相同即为该进制的数。
lovelyday 2007-12-14
  • 打赏
  • 举报
回复
二进制无法直接输入吧,输入的是十六进制
Jim_King_2000 2007-12-14
  • 打赏
  • 举报
回复
请输入一个十进制数,然后判断是否是十进制;
scanf("%d"...

请输入一个八进制数,然后判断是否是八进制;
scanf("%o"...

请输入一个十六进制数,然后判断是否是十六进制。
scanf("%x"...

怎么把数字转换为字符
sprintf

把字符转换为数字
atoi or sscanf
sanfenxiao 2007-12-14
  • 打赏
  • 举报
回复
你的这段代码除了思路还算清晰,能出问题的地方都出问题了,服了。。。
水墨风光 2007-09-13
  • 打赏
  • 举报
回复
还有,

怎么样把2,8,16进制的数字转换成10进制的??
jinjiajie 2007-09-13
  • 打赏
  • 举报
回复
请输入一个十进制数,然后判断是否是十进制;

请输入一个二进制数,然后判断是否是二进制;

请输入一个八进制数,然后判断是否是八进制;

请输入一个十六进制数,然后判断是否是十六进制。
=================================================
如果是字符串的话,比如你输入一个“1234567”判断它是不是10进制数就每个字符比对下去,看是不是在0-9这个范围内,2进制的话,就判断是不是0,1,当然注意ascii码转换。
===============================================================
还有,怎么样输入一个字符数组,并转换成long型的十进制数?

还有,怎么把数字转换为字符,把字符转换为数字??
=======================================================
同上,一个个比对判断,当然也有现成函数,atoi,itoa
=======================================================
还有,怎么样把十进制数转换成其他进制 2,8,16
===================================================
这个,在计算机里都是0,1....只是表现不同而已,完全可以在输出的时候控制....如printf("%x %o %d",11,11,11);.....

cceczjxy 2007-09-13
  • 打赏
  • 举报
回复

请输入一个十进制数,然后判断是否是十进制;

请输入一个二进制数,然后判断是否是二进制;

请输入一个八进制数,然后判断是否是八进制;

请输入一个十六进制数,然后判断是否是十六进制。

--------------------------------------------------
没法判断,除非输入是你就确定进制情况,比如0x开头的是16进制...


简单的,printf("%d",x);不管x是几进制,输出都是10进制.现成的东西,用就是了.

在内存中,数据都是已2进制存放的,几进制,那是用来给人看的.
水墨风光 2007-09-13
  • 打赏
  • 举报
回复
这个题目我已经解决了。。

ch=getche()

void convert_output()
{
int i,flag; //flag标记用户输入的数据的合法性
switch(ch){

case '1':
do{
flag=0;
printf("\n请输入十进制数据: ");
scanf("%s",str);
strcpy(input,str);
//检验输入数是否合法
for(i=0;i<strlen(str);i++) {
if(str[i]<'0'||str[i]>'9')/*10进制数输入错*/
{
printf("\n>>你输入了错误的十进制数!\n\n");
flag=1;
break;
}
}
}while(flag);

//转换成其他进制 输出

chartonum(str); //字符转化为数字
printf("\n转换结果:\n\n");
printf("十进制:%s\n",input);
printf("二进制:");
dec_ot(ot_dec(num,10),2);
printf("八进制:");
dec_ot(ot_dec(num,10),8);
printf("十六进制:");
dec_ot(ot_dec(num,10),16);
break;

case '2':
do{
flag=0;
printf("\n请输入二进制数据: ");
scanf("%s",str);
strcpy(input,str);
//检验输入数是否合法
for(i=0;i<strlen(str);i++){
if(str[i]!='0'&&str[i]!='1') /*二进制输入错误*/
{
printf("\n>>你输入了错误的二进制数!\n\n");
flag=1;
break;

}
}
}while(flag);

//转换成其他进制 输出
chartonum(str); //字符转化为数字
printf("\n转换结果:\n\n");
printf("十进制:");
dec_ot(ot_dec(num,2),10);
printf("二进制:%s\n",input);
printf("八进制:");
dec_ot(ot_dec(num,2),8);
printf("十六进制:");
dec_ot(ot_dec(num,2),16);
break;

case '3':
do
{
flag=0;
printf("\n请输入八进制数据: ");
scanf("%s",str);
strcpy(input,str);
//检验输入数是否合法
for(i=0;i<strlen(str);i++){
if(str[i]<'0'||str[i]>'7'){

printf("\n>>你输入了错误的八进制数!\n\n");
flag=1;
break;
}
}
}while(flag);
//转换成其他进制 输出
chartonum(str); //字符转化为数字
printf("\n转换结果:\n\n");
printf("十进制:");
dec_ot(ot_dec(num,8),10);
printf("二进制:");
dec_ot(ot_dec(num,8),2);
printf("八进制:%s\n",input);
printf("十六进制:");
dec_ot(ot_dec(num,8),16);
break;

case '4':
do{
flag=0;
printf("\n请输入十六进制数据: ");
scanf("%s",str);
strcpy(input,str);
//检验输入数是否合法
for(i=0;i<strlen(str);i++){
if(!((str[i]>='A'&&str[i]<='F')||(str[i]>='0'&&str[i]<='9')||(str[i]>='a'&&str[i]<='f')))
{

printf("\n>>你输入了错误的十六进制数!\n\n");
flag=1;
break;
}
}
}while(flag);

//转换成其他进制 输出
chartonum(str); //字符转化为数字
printf("\n转换结果:\n\n");
printf("十进制:");
dec_ot(ot_dec(num,16),10);
printf("二进制:");
dec_ot(ot_dec(num,16),2);
printf("八进制:");
dec_ot(ot_dec(num,16),8);
printf("十六进制:%s\n",input);
break;

case '0':
default:
exit(0);
}
}

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧