【问题标题】:Bizarre situation - 100 digit number input asked奇怪的情况 - 要求输入 100 位数字
【发布时间】:2016-04-20 11:19:30
【问题描述】:

我需要制作一个程序,该程序可以输入最多 100 位的数字。没有标准的int 数据类型能够做到这一点!我从来没有遇到过如此离奇的情况。

我完全不明白。我该如何解决这个问题?

我正在研究的问题是:

将给出一个整数,你必须编写一个程序 判断它是偶数还是奇数。

输入规范

在第一行,会有一个整数 T 表示 测试用例。在接下来的 T 行中,一个非负整数将是 给定的。该号码最多可以有 100 位数字。

输出规格

对于给定的每个整数,您必须打印它是否为奇数 甚至作为输出。

谁能指导我如何解决这个问题(如果有可能的话)?

【问题讨论】:

  • 没有标准数据类型可以做到,仅供参考。
  • 你想对这个号码进行哪些操作?
  • log_2(10) ~ 3.32
  • 问题是孟加拉语。因此,这里的大多数人都不会理解这个问题。是的,可能……没有必要提这个。
  • 你们中的大多数人可以删除/编辑您的 cmets 吗?我已更改问题以符合要求的标准。

标签: c


【解决方案1】:

程序将输入一个数字并确定它是奇数还是偶数。

读取字符串中的输入 (char [101]) 并仅分析最后一位数字以检查数字是奇数还是偶数。其余数字与此任务无关。

【讨论】:

  • 为了完整性:这里的“last”表示“最不重要的”。
  • @chux :) 我曾经在this one 上也达到了 45%。
  • 你们可以为这个问题投票吗?它已经过彻底编辑以符合标准。
【解决方案2】:

没有标准的数字类型可以保证包含这么多数字。您需要以不同的方式存储该值,例如,作为字符串或其他数组。如果您需要对这些数字执行算术运算,则需要为您使用的类型实现这些运算,或者使用某种任意精度库。

(提示:您也不一定需要整个数字来进行某些操作,例如,您可以通过仅查看最后一位数字来判断它是偶数还是奇数……)

【讨论】:

    【解决方案3】:

    该练习是确定最多 100 位的整数是奇数还是偶数。

    这不需要您对数字执行任意算术运算,因此如果您需要处理大于系统上最大整数类型的数字,您可以将它们视为一串数字。

    是偶数还是奇数只取决于最后一位数。

    【讨论】:

      【解决方案4】:

      致所有花时间和精力回答这个问题的人,

      感谢您的回答。并感谢您为我们指明道路。非常感谢您的帮助!


      我编写的问题的解决方案是 -

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
          int T, i, j;
          scanf("%d", &T);
      
          for (i=1; i<=T; i++)
          {
               char N[101];
               scanf("%s", N);
               int k = strlen(N);
               int p = N[k-1] - 48; //char to int conversion
      
               if (p % 2 == 1)
               {
                   printf("odd\n");
               }
      
               else 
               {
                   printf("even\n");
               }
           }
      
           return 0;
      }
      

      【讨论】:

      • 使用 scanf 有点危险,因为如果输入超过 101 个字符(stackoverflow.com/a/7709467/1527)会溢出缓冲区。检查 strlen 的结果是否为零,以避免另一个缓冲区溢出。您可能还想检查 N 的内容是否实际上是数字 - 甚至是 'aaaaa' 吗?使用 atoi 而不是减去 48 可能会更好,因为 C 不能保证 ASCII 字符编码(尽管我不知道偶数不是偶数的编码),或者只是跳过该步骤并测试字符是否是偶数或奇数。
      • 嗯,可以保证给定的字符串完全由最多 100 个数字组成。因此,我不需要经历那个麻烦。
      • 最好不要养成在实际工作中必须重新学习的坏习惯。
      猜你喜欢
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多