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

文章正文
发布时间:2025-07-20 17:07

这个题目我已经解决了。。

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);
}
}

首页
评论
分享
Top