如何使用字符串在C中存储100位数字

时间:2018-11-20 18:57:30

标签: c

  

我的问题是我不知道此功能的作用,这就是程序   从我的老师那里(不是整个程序只是在起作用)。只是想问你这个功能做什么,主要是为什么   我将我的号码从右到左存储在字符串中吗?谢谢

#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;
        }
    }

1 个答案:

答案 0 :(得分:2)

这是您的老师应该教的课:

  1. 数值1与用于表示屏幕上显示或键盘上键入的字符1的计算机代码(例如ASCII)之间存在差异。

每当您在屏幕上看到1时,您的计算机就会看到49的内存。 0是48,2是50,依此类推。

为方便起见,所有数字字符都按从0到9的顺序排列,因此要将其字符代码转换为数字值,您要做的就是减去零的字符代码以获得序列中的数字位置。 / p>

例如:49 - 48 = 1 --> '1' - '0' = 1

这就是第一个功能str_to_num的工作方式。

  1. C语言没有提供足够大的变量来处理100位数字,因此您需要一次将它们累加一位。

第二个函数的变量名完全错误,但是尝试的作用仍然很明显: 它将两个数字相加,然后将结果的一个部分存储在数组中,将第十个(如果总和> 9)存储在辅助变量中。

正如评论中已经建议的那样,这是您一次将一位页面上的数字手动求和的方法。

我不知道prenos在您的语言中是什么意思,但是在英语中,此变量应称为carry,并且在下一轮中将保留溢出的十位数。

但是sum函数缺少一些内容:如果最后两个(最左边)两位数字的总和大于9,则多余的1将丢失,结果将是错误的。

检查您老师给您的原始代码-您输入的代码有误,或者他给出的例子不好。