zoukankan      html  css  js  c++  java
  • 【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("
    ");
    
    }
    
  • 相关阅读:
    怎样评价聚类结果好坏?
    libsvm 用在 婚介数据集中 预测 用户配对
    mac 常用操作
    mac 安装 tomcat 配置
    mac 安装 maven 配置
    mac 安装 java 配置
    mac 安装 photoshop CS6
    mac 应用程序安装目录
    JavaScript、ES5和ES6的介绍和区别
    css 两列自适应布局的4种思路
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860860.html
Copyright © 2011-2022 走看看