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

标签 c

My problem is that i dont know what this functions do, thats program from my teacher(not whole program just functions). Just wanna ask you what this functions do, mainly why i store my number from right to left at string? thanks

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

最佳答案

这是您的老师应该教授的类(class):

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

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

为了方便起见,所有数字字符都按 0 到 9 的顺序排列,因此要将它们的字符代码转换为数值,只需减去字符代码 0 即可得到序列中的数字位置。

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

这就是第一个函数 str_to_num 的工作原理。

  • C 语言没有提供足够大的变量来处理 100 位数字,因此您需要一次对一位数字进行求和。
  • 第二个函数的变量名完全错误,但它试图要做什么仍然非常明显: 它对两个个位数求和,然后将结果的个位部分存储在数组中,并将第十个数字(如果总和 > 9)存储在辅助变量中。

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

    我不知道 prenos 在你的语言中意味着什么,但在英语中这个变量应该被称为 carry 并且它会保留下一轮溢出的十位数。

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

    检查你的老师给你的原始代码 - 要么你复制错了,要么他给出了一个不好的例子。

    关于c - 如何在C中使用字符串存储100位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53399756/

    相关文章:

    c - 使用 malloc 为数组分配内存

    c - 检测进程的调试权限(Windows、C)

    c - 如何触发保存文件的创建

    c - 在 c 中查找素数,如果不做它的工作

    c++ - 返回 static_cast<int> C++ 和 C

    c - 使用 Scapy 与 C 套接字通信

    C - 用户输入最多 8 个字符

    C宏连接

    c - UPD客户端和UDP服务器

    c - 检测 C 中的段错误