n进制乘法的c++实现

#include<iostream>
#include<cstdio>
#include<math.h>
#include<iomanip>
using namespace std;
int n;
int m[1000];
char tmp[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    
work(int n,int k)
{
    
    int temp;    
    temp=n%k;
    n/=k;
    if(n!=0)//判断是否到达边界n=0
        work(n,k);
    cout<<setiosflags(ios::right)<<setw(1)<<tmp[temp];
}


int main()
{
    int s,l=0;
    scanf("%d",&n);
    int i,j,a;
    cout<<setw(4)<<"*";
    for(i=0;i<=n;i++)
        cout<<setiosflags(ios::right)<<setw(4)<<tmp[i];
    cout<<" "<<endl;
    for(i=0;i<n;i++)
    {
        cout<<setw(4)<<tmp[i];
        for(j=0;j<=i;j++)
        {
            cout<<setiosflags(ios::right)<<setw(2)<<"  ";
        work(i*j,n);            
        }
        cout<<endl;
    }
    return 0;
}
 

//按照题目要求实现

#include<iostream>
#include<cstdio>
#include<math.h>
#include<iomanip>
using namespace std;
int n;
int m[1000];
char tmp[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    
void work(int n,int k)//这里完成的话是在锻炼耐心,费了一个小时
{
    char a[4];
    int i,yushu;     
    yushu=n%k;
    n/=k;
    if(n==0)   
    {a[0]=tmp[yushu];
    a[1]='\0';}
    else
    {    
        a[1]=tmp[yushu];
    yushu=n%k;
    a[0]=tmp[yushu];
    a[2]='\0';
    }
    cout<<setw(4)<<a;
    
}


int main()
{
    int s,l=0;
    scanf("%d",&n);
    int i,j,a;
    cout<<setw(4)<<"*";
    for(i=0;i<n;i++)
        cout<<setiosflags(ios::right)<<setw(4)<<tmp[i];
    cout<<" "<<endl;
    for(i=0;i<n;i++)
    {
        cout<<setw(4)<<tmp[i];
        for(j=0;j<=i;j++)
        {
            
        work(i*j,n);            
        }
        cout<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u010583225/article/details/81395841