c语言 判断输入的乘法等式符合几进制,并输出最小符合的进制

Python011

c语言 判断输入的乘法等式符合几进制,并输出最小符合的进制,第1张

这个用穷举法比较简单,

i从2一直循环到16

设三个数为opt1,opt2和res

把opt1从i进制变成10进制(提取各位,按权展开)存储到temp1

把opt2从i进制变成10进制(提取各位,按权展开)存储到temp2

把res从i进制变成10进制(提取各位,按权展开),存储到temp3

看temp1*temp2是否等于temp3,如果相等,输出i结束循环。

//大数相加和相乘 

#include <stdio.h>

#include <string.h>

#define N 1000  //定义大数运算的位数

//打印显示大数 

void printit(int *a,int n){

int i=0

while(a[i]==0) i++

for(i<ni++) printf("%d",a[i])

printf("\n")

}

//把字符串的数赋值给大数 

void stoarr(char *s,int *a,int n){

int i,m

for(i=0i<ni++) a[i]=0

m=strlen(s)

for(i=0i<mi++)

a[n-m+i]=s[i]-'0'

}

//大数相加c=a+b 

void addarr(int *a,int *b,int *c,int n){

int i,m=0

for(i=0i<ni++) c[i]=a[i]+b[i]

//整理c

for(i=n-1i>=0i--){

c[i]+=m

m=c[i]/10

c[i]%=10

}

 

}

//大数相乘c=a*b 

void mularr(int *a,int *b,int *c,int n){

int i,j,m

for(i=0i<ni++) c[i]=0

for(i=n-1i>=0i--)

for(j=n-1j>=0j--){

m=i+j-n+1

if (m>=0) c[m]+=a[i]*a[j]

}

//整理c 

m=0

for(i=n-1i>=0i--){

c[i]+=m

m=c[i]/10

c[i]%=10

}

}

int main(){

int a[N],b[N],c[N]  //定义3个大数

char s[N]

printf("输入第一个大数\n")

gets(s)

stoarr(s,a,N)  //把字符串的内容传给第一个大数a 

printf("输入第二个大数\n")

gets(s)

stoarr(s,b,N)  //把字符串的内容传给第二个大数b

//计算c=a+b

addarr(a,b,c,N) 

  printf("两数之和是:\n")

printit(c,N)

//计算c=a*b

mularr(a,b,c,N) 

printf("两数之积是:\n")

printit(c,N)

}