我的问题是我不知道此功能的作用,这就是程序 从我的老师那里(不是整个程序只是在起作用)。只是想问你这个功能做什么,主要是为什么 我将我的号码从右到左存储在字符串中吗?谢谢
#include<stdio.h>
#include<string.h>
#define MAX 1000
void str_to_num(char *str, char *number, int *dlzka)
{
int i;
for(i=0; i < MAX; i++)
number[i] = 0;
*dlzka = strlen(str);
for(i = 0; i < *dlzka; i++)
cis[(*dlzka) - 1 - i] = str[i] - '0';
}
void plus(char *cislo, int *d1, char *cis2, int d2)
{
int i; prenos = 0;
if(*d1 < d2)
*d1 = d2;
for(i = 0; i < *d1; i++)
{
pom = number[i] + number[i];
pom += prenos;
number[i] = pom % 10;
prenos = pom / 10;
}
}
答案 0 :(得分:2)
这是您的老师应该教的课:
1
的计算机代码(例如ASCII)之间存在差异。每当您在屏幕上看到1
时,您的计算机就会看到49的内存。
0
是48,2是50,依此类推。
为方便起见,所有数字字符都按从0到9的顺序排列,因此要将其字符代码转换为数字值,您要做的就是减去零的字符代码以获得序列中的数字位置。 / p>
例如:49 - 48 = 1 --> '1' - '0' = 1
这就是第一个功能str_to_num
的工作方式。
第二个函数的变量名完全错误,但是尝试的作用仍然很明显: 它将两个数字相加,然后将结果的一个部分存储在数组中,将第十个(如果总和> 9)存储在辅助变量中。
正如评论中已经建议的那样,这是您一次将一位页面上的数字手动求和的方法。
我不知道prenos
在您的语言中是什么意思,但是在英语中,此变量应称为carry
,并且在下一轮中将保留溢出的十位数。
但是sum函数缺少一些内容:如果最后两个(最左边)两位数字的总和大于9,则多余的1将丢失,结果将是错误的。
检查您老师给您的原始代码-您输入的代码有误,或者他给出的例子不好。