首页 > 其他分享 >5.9

5.9

时间:2023-05-09 23:33:08浏览次数:34  
标签:temp int 5.9 decimal char source num

1,问题描述:

给定一个M进制的数x,实现对x向任意的一个非M进制的数的转换

2.问题分析:
掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制、八进制、十六进制及十进制。除了不同的数制还有下面几个必须要了解的概念。基数:在一种数制中,只能使用一组固定的数字来表示数的大小。这组固定的数字的个数就称为该计数制的基数(Base)。如十进制的基数为10,二进制的基数为2等。权:又称为位权或权值,即每一个数位都有一个固定的基值与之相对应,称之为权。如十进制的个位对应的权值为 1(10,十位对应的权值为 10(10),百位对应的权值为100(102),对于一个 M 进制的数来说,小数点左边各位上对应的权值从右到左分别为基数的0次方、基数的1次方、基数的2 次方等,对于小数点右边各位上对应的权值从左到
右分别为基数的-1 次方、基数的-2 次方等。二进制、八进制、十六进制向十进制转换:按权展开相加。十进制转换成二进制、八进制、十六进制:整数部分除以基数取余数(取余的方向为从后向前);小数部分乘以基数取整数(取整的方向为从前向后)。二进制、八进制、十六进制相互转换:先转换成十进制再转换成其他进制:或者按照其对应关系进行转换(三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数)。本题按照前一种转换方式进行编程。

四、代码实例:

#include<stdio.h>
#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);
int 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:\n");
        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<=9&&num>=0)
        return (char)('0'+num-0);
    else
        return  (char)('A'+num-10);
}
long source_to_decimal(char temp[],int source)
{
    long decimal_num=0;
    int length;
    int i;
    for(i=0;temp[i]!='\0';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]='\0';
    return i;
    }
    void  output(char temp[],int length)
    {
        int i;
        for(i=length-1;i>=0;i--)
            printf("%c",temp[i]);
        printf("\n");
    }

标签:temp,int,5.9,decimal,char,source,num
From: https://www.cnblogs.com/dmx-03/p/17386683.html

相关文章

  • 2023.5.9核心命令讲解实战
    目录1.帮助命令man2.文件和目录操作命令lscdmkdircpmvrmtouchbasenamedirnamechattrlsattrmd5sum3.查看文件及内容处理命令vimvicat查看文件内容morelesstailheadcut提取字段、字符uniq去重sort排序wc统计tr字符操作vimdiffdos2unix......
  • 编程一小时2023.5.9
    1.#include<iostream>#include<vector>usingnamespacestd;intn;voidsolve(){cin>>n;vector<string>vec;for(inti=0;i<n;i++){stringt;cin>>t;vec.push_back(t);}......
  • 5.9日结
    前几天都没发博客,主要是系统的学习了AJAX,然后快速入门了VUE,对Spring和SpringMVC都有了一定的学习。然后今天学习了一下基础的matlab语法,基本代码如下所示:a=[123;452;327];b=[111;222];%这里c就是b的转置矩阵c=b'%d就是b的从列拉长的一串d=b(:)%e是a......
  • 每日总结 5.9
    今日完成广告的判断处理,广告图片的闪烁切换,对弹出广告做出优化处理;<scripttype="text/javascript">vartime=10;//时间,秒vari=0;functiondis(){document.all.s.innerHTML=(time-i);i++;......
  • 5.9每日总结
    <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent......
  • 2023.5.9每日总结
    packagewangzhan;importjava.sql.Blob;publicclassPd_stu{privateintid;privateStringname;privateStringsex;privateStringclasss;privateStringmajor;privateStringfaculty;privateStringpas;privateBlob......
  • 5.9号今日总结
    今天做了python的实验四代码如下:importrefromcollectionsimportCounterimportrequestsfromlxmlimportetreeimportpandasaspdimportjiebaimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudheaders={"User-Agent":"Mozilla......
  • 2023.5.9编程一小时打卡
    一、问题描述:定义基类Point(点)和派生类Circle(圆),求圆的周长。Point类有两个私有的数据成员floatx,y;Circle类新增一个私有的数据成员半径floatr和一个公有的求周长的函数getCircumference();主函数已经给出,请编写Point和Circle类。#include<iostream>#include<iomanip>using......
  • 5.9打卡
    一、问题描述:求13的13次方的最后三位数二、设计思路:编程过程中,将累乘得到的积存储到变量last中,在进行下一次相乘之前先截取last的后三位再相乘,即:last%1000*13,将结果存储到last中:last=last*x(x的值为13)%1000。因第一次相乘时用到变量last的初值,故在定义时给last赋初值,或在参与计......
  • 2023.5.9
    完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:intID;//教师工号Studentstu[100];//学生数组intcount;//学生数目,最多不超过100floatcpp_average;//班级cpp平均分......