二师弟的星际加法
描述:
我是网络公司的一名普通程序员,英文名Steven,发音比较像“师弟”,
自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,
也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16进制等,
有些星球居然使用N进制(据统计N都在2~35之间),现在我们将首先给您一个数字表示N进制,
然后给出两个数字的字符串,请算出其求和结果并输出,如果输入不能正常计算则输出-1。
说明:
1:数字的字符串其中包括0-9和a-z(表示10-35)。
2:所有的输入和输出都只会是小写字母或数字,不存在其他字符。
运行时间限制: 无限制
内存限制: 无限制
输入: 整形数:计算进制
字符串:计算数1
字符串:计算数2
输出: 字符串:计算结果
样例输入: 10
100
100
描述:
我是网络公司的一名普通程序员,英文名Steven,发音比较像“师弟”,
自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,
也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16进制等,
有些星球居然使用N进制(据统计N都在2~35之间),现在我们将首先给您一个数字表示N进制,
然后给出两个数字的字符串,请算出其求和结果并输出,如果输入不能正常计算则输出-1。
说明:
1:数字的字符串其中包括0-9和a-z(表示10-35)。
2:所有的输入和输出都只会是小写字母或数字,不存在其他字符。
运行时间限制: 无限制
内存限制: 无限制
输入: 整形数:计算进制
字符串:计算数1
字符串:计算数2
输出: 字符串:计算结果
样例输入: 10
100
100
样例输出: 200
#ifndef _CHAR_INT_
#define _CHAR_INT_
#include<STDLIB.H>
"char_int.h"
#include <STDIO.H>
#include<STRING.H>
#define M 100
char char_int(int a);
#endif
#include "char_int.h"
int main()
{
int N;
char A[M];
char B[M];
char C[M];
int a[M],length_a;
int b[M],length_b;
int c[M],length_c;
int i;
/*输入*/
printf("please Enter the number of Decimal:\n");
scanf("%d",&N);
fflush(stdin);
printf("please Enter The string1:\n");
gets(A);
fflush(stdin);
length_a=strlen(A);
printf("please Enter The string2:\n");
gets(B);
length_b=strlen(B);
fflush(stdin);
/*处理*/
/*将A中的字符都变成相对应的数字*/
for(i=0;i<length_a;i++)
{
a[i]=(int)(A[length_a-1-i]);
if(a[i]>=48&&a[i]<=57)
a[i]=a[i]-48;
else
a[i]=a[i]-87;
if(a[i]>=N)
return printf("-1 \n");
}
/*将B中的字符都变成相对应的数字*/
for(i=0;i<length_b;i++)
{
b[i]=(int)B[length_b-1-i];
if(b[i]>=48&&b[i]<=57)
b[i]=b[i]-48;
else
b[i]=b[i]-87;
if(b[i]>=N)
return printf("-1 \n");
}
/*将A与B相加后所得的结果放在C中*/
if(length_a>=length_b)
{
for(i=length_b;i<length_a;i++)
b[i]=0;
for(i=0;i<length_a+1;i++)
c[i]=0;
for(i=0;i<length_a;i++)
{
c[i]=a[i]+b[i]+c[i];
if(c[i]>=N)
{
c[i+1]=1;
c[i]=c[i]-N;
}
}
if(c[length_a]==0)
length_c=length_a;
else
length_c=length_a+1;
}
else
{
for(i=length_a;i<length_b;i++)
a[i]=0;
for(i=0;i<length_b+1;i++)
c[i]=0;
for(i=0;i<length_b;i++)
{
c[i]=a[i]+b[i]+c[i];
if(c[i]>=N)
{
c[i+1]=1;
c[i]=c[i]-N;
}
}
if(c[length_b]==0)
length_c=length_b;
else
length_c=length_b+1;
}
for(i=0;i<length_c;i++)
C[i]=char_int(c[length_c-1-i]);
for(i=0;i<length_c;i++)
printf("%c ",C[i]);
printf("\n");
return 0;
}
#include "char_int.h"
/******************************************************
将char型的字符转成相对应的10进制数字
******************************************************/
char char_int(int a)
{
char b;
if(a>=0&&a<=9)
b=(char)(a+48);
else
b=(char)(a+87);
return b;
}