问题描述
- 为什么我的这个大数相加程序在oj上跑出来的结果是OLE
-
#include<stdio.h>#include<string.h>int main(){ char str1[1001]str2[1001]*num1*num2*p1*p2; int ncase/*多组输入数目*/mcase=1/*输出时的第几个输出计数器*/up/*进位存储器*/len1len2len; scanf(""%d""&ncase); while(ncase--) { scanf(""%s %s""str1str2); printf(""case %d:n""mcase++); printf(""%s + %s = ""str1str2); len1=strlen(str1);/*分别计算两数长度*/ len2=strlen(str2); if( len1 >= len2 )/*把num1赋较大数的数组首地址num2赋较小数的数组首地址,且保证len1存长数组长度len2存短数组长度*/ { num1=str1; num2=str2; } else { num1=str2; num2=str1; len=len1; len1=len2; len2=len; } up=0;/*进位赋初值0*/ for(p1=num1+len1-1p2=num2+len2-1;p1>=num1;p1--p2--)/*从各自最小位逐位相加,以较大数的最高位为边界*/ { if( p2 < num2 )/*当高位无数时补0*/ *p2=48; *p1=*p1+*p2-96+up;/*由ascII码值化为十进制值*/ up=0; if( *p1 >= 10 )/*如果此位相加结果十进制值大于10则作减10处理*/ { *p1-=10; up=1;/*进位寄存器赋1*/ } *p1+=48;/*再次化为ascII码以供输出*/ } if( up == 1 )/*当最高位加上进位仍产生进位则需于前再输出一个“1”*/ printf(""1""); printf(""%sn""num1);/*输出经加法处理改动的大数组*/ printf(""n""); } return 0;}
解决方案
- 不知道是你代码的问题还是你贴代码上来转换的原因。缺少若干个*
- 修改后的代码如下所示
- 下次贴代码的时候记得用“插入代码片”的功能
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ char str1[1001] str2[1001] *num1 *num2 *p1 *p2; int ncase/*多组输入数目*/ mcase = 1/*输出时的第几个输出计数器*/ up/*进位存储器*/ len1 len2 len; scanf(""%d"" &ncase); while (ncase--) { scanf(""%s %s"" str1 str2); printf(""case %d:n"" mcase++); printf(""%s + %s = "" str1 str2); len1 = strlen(str1);/*分别计算两数长度*/ len2 = strlen(str2); if (len1 >= len2)/*把num1赋较大数的数组首地址num2赋较小数的数组首地址,且保证len1存长数组长度len2存短数组长度*/ { num1 = str1; num2 = str2; } else { num1 = str2; num2 = str1; len = len1; len1 = len2; len2 = len; } up = 0;/*进位赋初值0*/ for (p1 = num1 + len1 - 1 p2 = num2 + len2 - 1; p1 >= num1; p1-- p2--)/*从各自最小位逐位相加,以较小数的最高位为边界*/ { if (p2 < num2)/*当高位无数时补0*/ *p2 = 48; *p1 = *p1 + *p2 - 96 + up; /* 由ascII码值化为十进制值*/ up = 0; if (*p1 >= 10) /* 如果此位相加结果十进制值大于10则作减10处理*/ { *p1 -= 10; up = 1; /* 进位寄存器赋1*/ } *p1 += 48; /* 再次化为ascII码以供输出*/ } if (up == 1)/*当最高位加上进位仍产生进位则需于前再输出一个“1”*/ printf(""1""); printf(""%sn"" num1);/*输出经加法处理改动的大数组*/ printf(""n""); } system(""pause""); return 0;}
时间: 2024-10-31 04:35:14