「已注销」 2022-10-20 21:56 采纳率: 50%
浏览 13

输入数字极大且要求对每一位进行处理怎么办

当题目要求输入一个极其长的数字时,例如一个一千位的数,并要求能够对每一位数字进行操作,一般这种情况怎么处理呀(位数也有可能很小)
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
1.我首先想设置一个char类型的数组,再通过ASCII码转换为单个的数字进行操作,但是编译器要求我必须给出这个存储空间的大小,我觉得应该会栈溢出(不太懂),而且直接搞一个这么大的数组会不会太浪费空间啊,还有一点很烦人的就是,当我用指针指向这个数组的时候,我对指针进行加一操作后,指针所指向的内容就会变得莫名其妙。

2.然后我想用指针,但是int类型的指针在输入的时候不能一次型输入,得用空格或者逗号,就无法满足题干一次性输入的条件。
3.我于是使用string 类,虽然可以一次性输入并且单独对位数进行操作,但是我不明白怎么对他进行整数类型的转换和判断,实现把字符当作整数来使用的目的
4.最后,我想使用申请内存,同样困扰我的是,直接申请一个如此大的空间会不会有些浪费,而且有些在我电脑上可以运行的代码,在PTA上就会提示段错误

我感觉我对char和string还是很不能理解,希望有人帮忙解一下疑惑
  • 写回答

1条回答 默认 最新

  • 流比 2022-12-25 00:17
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node {
        int data;
        struct Node *next;
    } Node;
    
    Node *create_node(int data) {
        Node *node = (Node*)malloc(sizeof(Node));
        node->data = data;
        node->next = NULL;
        return node;
    }
    
    int main() {
        // 创建一个空的链表,表示一个数字
        Node *head = NULL;
    
        // 向链表中插入数字的每一位
        head = create_node(1);
        head->next = create_node(2);
        head->next->next = create_node(3);
        head->next->next->next = create_node(4);
    
        // 输出链表中的数字
        Node *curr = head;
        while (curr != NULL) {
            printf("%d ", curr->data);
            curr = curr->next;
        }
    
        // 释放内存
        while (head != NULL) {
            Node *temp = head;
            head = head->next;
            free(temp);
        }
    
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22