我必须在 C 中从标准输入中读取两个数字作为字符串。我怎样才能将它们的总和也打印为字符串?我有:
char a[10],b[10];
printf("enter the two numbers");
scanf("%s%s",&a,&b);
char sum[20];
sum=?
给点小费好吗?谢谢!
就像在小学一样
假设输入是“...69 + ...63”
9 + 3 = 2 and 1 to go
6 + 6 + 1 = 3 and 1 to go
...
除非禁止这样做,否则我将采用以下方法:
将输入字符串转换为数字。我会尝试strtol()
。
添加数字
将总和从数字转换为字符串。我会尝试snprintf()
。
就像在纸上做的那样,用编程来做这件事。迈出小步,并在不注意的情况下明确我们在纸上所做的每一个小步骤。
00111
---------
12345
123456789
---------
123469134
0
。5+9=14
。您需要在另一个变量中维护它。使用循环。添加后,您需要知道总长度,并将其移动到左边缘。因为我们事先不知道我们会得到什么长度,所以您将从sum
数组的右边缘开始写下答案。想一想,您可以如何以及如何改进这一点。
使用 将字符串转换为数字atoi
,然后将它们相加,然后使用 printf 之类的打印函数打印总和。看到这个
chars
是 8 位二进制数,就像更小的ints
. 我们必须解释它们以赋予它们作为字母的意义。
您的计算机可能使用 ASCII 标准。在 ASCII 中,char
代表字符的值0
实际上并没有数值 0。它是 48。幸运的是,数字都是连续的,所以1
是 49,等等。
char zero = '0';
printf("%d\n", zero);
char one = '1';
printf("%d\n", one);
> 48
> 49
(请注意,%d
格式标志的printf
意思是“解释为整数”。)
因为chars
是数字,我们可以用它们做数学运算。
char one = '1';
int one_num = one - '0';
printf("%d\n", one_num);
> 1
现在,您可以像在纸上一样使用十进制数字实现加法并携带。