求两个32位数的和
来源:百度知道 编辑:UC知道 时间:2024/06/28 21:35:42
楼主, 为保证程序风格简约,也为了便于你阅读代码的时候直接进入核心部分,我没有加上那些提示输入的东西。也没有容错处理(如果你输入的字符串里面含有非数字,那我的程序的结果就是不可预料的)楼主要注意,写程序的时候不要一开始就陷入到容错处理中,那会给你后面你编写核心代码带来很多麻烦,最好的方法就是先写好核心代码,然后在尽量不变更核心代码的基础上再慢慢地添加一些容错处理机制。运行的时候你就直接输入就可以了,最后显示的就是结果,需要提示语句或者报错之类的,楼主自己加。这里提供两个版本。第一个版本如果输入超出了32位,那后面超出了的的低位上的数字被砍掉。第二个版本,如果输入超出了32位,超出的高位上的数字被砍掉。建议你用第二个版本,因为计算机内部采取的是这种方式。如果有不明白的地方尽管发消息问我。
/* Version 1. */
#include <stdio.h>
#define N 32
void
clear(void)
{
while ( getchar() != '\n' );
}
int
main(void)
{
char a[N], b[N], s[N+1] = { 0 };
int i;
for ( i = 0; i < N; i++ )
scanf( "%c", a+i );
clear();
for ( i = 0; i < N; i++ )
scanf( "%c", b+i );
clear();
for ( i = N; i > 0; i-- ) {
if ( (s[i]=a[i-1]+b[i-1]+s[0]-'0') > '9' ) {
s[0] = 1;
s[i] -= 10;
}
else
s[0] = 0;
}