C 语言实例006

大家好,我是一童,今天本来要用蔡勒公式写万年历,但蔡勒公式有点不熟悉,还需要在研究研究,所以今天分享一下关于进制的实例

  1. 判断整数n的d进制数是否为回文数
#include<stdio.h>//判断n的d进制数是否为回文数
int Circle(int n,int d)
{
	int m=n,s=0;
	while(m)
	{
		s=s*d+m%d;
		m/=d;
	}
	return s==n;//返回判断
}
void main()
{
	int num[]={131,55,23};
	int scale[]={10,2,16};
	int i,j;
	printf("数值n 进制d\n");
	for(i=0;i<sizeof(num)/sizeof(num[0]);i++)
		for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)
			if(Circle(num[i],scale[j]))
				printf("%d--(%d) 是回文数!\n",num[i],scale[j]);
			else			
				printf("%d--(%d) 不是回文数!\n",num[i],scale[j]);
				printf("\n");
}
  1. 任意10进制数的转换为其他进制数
# include<stdio.h>//任意10进制数的转换为其他进制数
# define M sizeof(unsigned int)*8
int Trans(unsigned n,int d,char s[])//将无符号整数n译成d(2<=d<=16)进制的数
{
	static char digits[]="0123456789ABCDEF";
	char buf[M+1];
	int j,i=M;
	if(d<2||d>16)
	{
		return 0;
	}
	buf[i]='\0';//第一个字符为空
	do{
		buf[--i]=digits[n%d];//取值然后赋值(--i表示逆序)
		n/=d;
	}while(n);//直到n取0
	for(j=0;(s[j]=buf[i])!='\0';i++,j++);//将buf[i]数组中的元素全部赋给s[j]
	return j;
}
void main()
{
	unsigned int num=235;
	int scale[]={2,3,10,16,1};//进制数
	char str[33];
	int i;
	for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
	{
		if(Trans(num,scale[i],str))
			printf("%5d=%s(%d)\n",num,str,scale[i]);
		else
			printf("%5d=>(%d) Error!\n)",num,scale[i]);
	}
}

好了,今天先分享这些,欢迎下方留言!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值