C实例No3|正整数进行然后进制转换(输入非法则报错)

C实例

内容

输入需要进行m进制转换,然后再输入该进制下想转换的正整数n。
非法输入报错本案例只是实现除数字外有其它字符输入都报错
(我也很期待哪个大佬能分享真正完美实现任何进制转换的案例)
大佬们有兴趣可以尝试解决以下代码缺陷:

  1. 小数的进制转换
  2. 只要n某一位出现大于m的情况就报错,比如六进制你给我来个数n=78那肯定是非法啦
  3. 超过10的进制转换(比如十六进制,这个时候输入的数n的值出现A~F都是合法的)
  4. 进制大于36字母不够表示又该怎么处理呢

越思考越觉得尴尬,我这代码算个啥啊,哈哈,不过我还是硬着头皮献丑了

再次说下我这里功能实现局限之处吧

  1. 进制仅现于十以内
  2. m,n都是正整数,出现字母就报错
  3. 自行避免n的每一位出现大于m情况

代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>



int main()
{
	char m[200]= {0};  //什么进制
	char n[200]= {0};  //该进制下的数
	int p,q;

	printf("分别输入进制数和该进制的数字:\n");
	while(scanf("%s",&m)!=EOF)
	{
		scanf("%s",&n);
		if((strspn(m,"0123456789") == strlen(m))&&(strspn(n,"0123456789") == strlen(n)))
		{
			p = atoi(m);
			q = atoi(n);
			int y=0,product=1;
			while(q!=0)
			{
				y=y+(q%10)*product;
				q=q/10;
				product=product*p;
			}
			printf("输出结果是:%d\n",y);
			printf("**********\n");
		}
		else
		{
			printf("****输入错误****\n");
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值