蓝桥杯--- 基础训练--进制的转换

"%d"十进制
"%x"十六进制
"%o"八进制
c语言里面没有直接打出二进制数的格式符。
因为前三者有直接打出的格式符,因此可通过格式控制符直接打印转换。
二进制则需要整除法或逆整除法转换。
 u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。

十进制转化为十六进制

#include<stdio.h>
int main(){
	int n;
	while(~scanf("%d",&n)){
		printf("%x\n",n);
	} 
	return 0;
} 

十进制转化为二进制

#include<stdio.h>
int main(){
	int n,i,r,k=0;
	int a[20]={0};//存二进制 
	while(~scanf("%d",&n)){
		i=0;
		while(n!=0){
			r=n%2;
			k=n/2;
			a[i]=r;
			n=k;
			i++;
		} 
		for(int j=i;j>=0;j--){
			printf("%d",a[j]);
			if(j%4==0)
				printf(" ");
		}
		printf("\n");
	} 
	return 0;
} 

整型数组与整数加减数值是整数本身;

字符数组与整数加减数值是字符的ASCII码。

n进制转为十进制

n进制转为十进制

#include<stdio.h>
#include<string.h>
int main(){
	int n; 
	char a[10];
	while(~scanf("%d",&n)){//输入n进制 
		//输入要转化的数 
		scanf("%s",a);
		strupr(a);//将a中的小写字母转化为大写字母 
		int len=strlen(a);
		int su,sum=0;
		for(int i=0;i<len;i++){
			int k=a[i]-'0';//当a[i]小于9时,将a[i]中的字符转化为对应的数字0~9 
			int p=a[i]-'A'+10;//当a[i]大于9时,将a[i]中的字符转化为对应的数字10~15
			if(k>=n&&a[i]<'A'||p>=n)//   &&优先级大于||  当a[i]既不满足k又不满足p  或p>=n时,不满足 
				sum=-1; 
			if(a[i]>='0'&&a[i]<='9')//当a[i]小于9
				su=k;
			else if(n>=11&&(a[i]>='A'&&p<=n))//当a[i]大于9时,且n>=11 
				su=p;
			sum=sum*n+su;//(((x+1)x+2)x+3)+4 
		} 
		if(sum>=0)
			printf("%d\n",sum);
		else
			printf("data error!\n");
	} 
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/zhao2chen3/article/details/87775595