问题遇到的现象和发生背景
问题描述
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
问题相关代码,请勿粘贴截图
//高精度加法
#include <stdio.h>
#define N 100
int Scanner(char T[])
{
int i=0;
scanf("%c",&T[i++]);
while(T[i-1]>='0'&&T[i-1]<='9'){
scanf("%c",&T[i++]);
}
return (i);
}
void px(char x[],int n)
{
int i = 0;
for(i;i<n-i;i++){
char t = x[i];
x[i] = x[n-i-1];
x[n-i-1] = t;
}
}
void Print_String(char max_s[],char min_s[],int max,int min)
{
int i;
for(i=0;i<min;i++){
max_s[i]-=48;
min_s[i]-=48;
max_s[i]+=min_s[i];
if(max_s[i]>9){
max_s[i]-=10;
max_s[i+1]+=1;
}
}
if(max_s[i]==1){
printf("1");
}
for(max;max>0;max--){
if(max_s[max-1]>47){
printf("%d",max_s[max-1]-48);
}
else if(max_s[max-1]<0){
break;
}
else{
printf("%d",max_s[max-1]);
}
}
}
int main()
{
char a[N],b[N];
int a_xb = Scanner(a);
int b_xb = Scanner(b);
px(a,a_xb);
px(b,b_xb);
if(a_xb<b_xb){
Print_String(b,a,b_xb,a_xb);
}else{
Print_String(a,b,a_xb,b_xb);
}
return 0;
}
运行结果及报错内容
这个是蓝桥杯里 的一个习题,在提交的时候显示错误,请问我这个在哪里还有缺陷,我已经找不到了擦,
在我的输出函数中,最后一个字符为负数,这是为什么,