• 【c语言趣味编程100例】数值转换


    问题:数值转换
    给定一个M进制的数X 实现对X向任意的一个非M进制的数的转换 

    #include<stdio.h>
    /*
    问题:数值转换
    给定一个M进制的数X 实现对X向任意的一个非M进制的数的转换
    
    **/
    #define MAXCHAR 101  //最大允许字符串长度
    
    int char_to_num(char ch); //返回字符串对应的数字
    char num_to_char(int num); //返回数字对应的字符
    long source_to_decimal(char temp[],int source);//返回由原数转换成的十进制数
    int decimal_to_object(char temp[],long decimal_num,int object); //返回转换成目标数制后字符数组的长度
    void output(char temp[],int length);//将字符数组逆序打印
    
    void main(){
    	
    	int source;//存储原数制
        int object;//存储目标数制
        int length;//存储转换成目标数制后的字符数组的长度
    	long decimal_num;//存储转换成的十进制数
    	char temp[MAXCHAR];//存储带转换的数值和转换后的的数值
    	int flag = 1;//存储是否退出程序的标志
    	while(flag){
    		
    		printf("转换前的数是:");
    		scanf("%s",temp);
    		printf("转换前的数制是:");
    		scanf("%d",&source);
    		printf("转换后的数制是:");
    		scanf("%d",&object);
    		printf("转换后的数是:");
    		decimal_num = source_to_decimal(temp,source);
    		length = decimal_to_object(temp,decimal_num,object);
    		output(temp,length);
    		printf("继续输入1 否则输入0:
    ");
    		scanf("%d",&flag);
    	
    	}
    }
    //字符转换成数字
    int char_to_num(char ch){
    
    	if(ch>='0'&&ch<='9')
    		return ch-'0';
    	else
    		return ch-'A'+10;
    
    }
    
    char num_to_char(int num){
    	if(num>=0&&num<=9)
    		return (char)('0'+num-0);//将0-9之间的数字转换成字符
    	else
    		return (char)('A'+num-10);//将大于10的数字转换成字符
    
    }
    
    long source_to_decimal(char temp[],int source){
    
    	long decimal_num = 0;
    	int length;
    	int i;
    	for(i=0;temp[i]!='';i++)
    		length = i;
    	for(i=0;i<=length-1;i++)
    		decimal_num=(decimal_num*source)+char_to_num(temp[i]);
    	return decimal_num;
    
    }
    
    int decimal_to_object(char temp[],long decimal_num,int object){
    		
       int i = 0;
       while(decimal_num){
    		
    		temp[i] = num_to_char(decimal_num%object);
    		decimal_num = decimal_num/object;
    		i++;
       }
    
       temp[i] = '';
       return i;
    
    }
    
    void output(char temp[],int length){
    
    	int i;
    	for(i=length-1;i>=0;i--)
    		printf("%c",temp[i]);
    	printf("
    ");
    
    }
    
  • 相关阅读:
    01 WEB白帽子Python入门
    07 SSRF漏洞
    JAVA基础学习day04--IDEA、方法
    一些常用的计算机快捷指令
    记录一次xss平台的安装
    upload-labs
    蓝队防护基础
    bagecms的代码审计
    window入侵排查基本
    常用端口总结
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860860.html
Copyright © 2020-2023  润新知