从 C 中的 long 中提取单个数字

2024-04-17

我正在为我的 C 课程(第一门编程课程)做作业。 作业的一部分是编写代码,让用户输入一个最多9位数的数字,程序需要判断这个数字是“递增”/“真递增”/“递减”/“真递减”/”增减”/“实减实增”/“不减不增”。 (共7个选项)

由于这是我们的第一个作业,我们不允许使用课堂上教授的内容之外的任何内容:

do-while、for、while 循环、else-if、if、 中断、继续 scanf、printf、取模和基本运算符

(除了 stdio.h 之外我们不能使用任何库)

就是这样。我不能使用数组或getchar或任何这样的东西。我可以用来接收用户输入的唯一函数是scanf.

到目前为止,我已经用流程图和所有内容编写了算法,但我需要将用户的输入分成不同的数字。

例如,如果用户输入“1234...”,我想在a中保存1,在b中保存2,依此类推,然后对所有数字进行比较以确定例如它们是否都相等(递增和递减) ) 或是否 a > b >c ...(递减)等等。

我知道如何使用 % 和 / 运算符分隔每个数字,但我不知道如何将这些值“保存”在变量中,以便稍后用于比较。

这是我到目前为止所拥有的:

printf("Enter a positive number : ");

do {
    scanf ("%ld", &number);
    if (number < 0) {
        printf ("invalid input...enter a positive integer: ");
        continue;
    }
    else break;
} while (1);

while (number < 0) {
    a = number % 10;
    number = number - a;
    number = number / 10;
    b = a;
}

为什么不将它们扫描为字符(字符串)?然后,您可以通过数组偏移量来访问它们,方法是从 ASCII 字符代码中减去偏移量 48。您可以使用以下命令验证该字符是否为数字isdigit来自 ctype.h。


EDIT

因为你的教授设置了令人难以置信的心不在焉的限制:

#include <stdio.h>

int main()
{
  int number;
  printf("Enter a positive number: ");

  do
  {
    scanf ("%ld", &number);
    if (number < 0)
    {
      printf ("invalid input...enter a positive integer: ");
      continue;
    }
    else break;
  } while (1);

  int a = -1;
  int b = -1;
  int c = -1;
  int d = -1;
  int e = -1;
  int f = -1;
  int g = -1;
  int h = -1;
  int i = -1;

  while (number > 0)
  {
    if (a < 0) a = number % 10;
    else if (b < 0) b = number % 10;
    else if (c < 0) c = number % 10;
    else if (d < 0) d = number % 10;
    else if (e < 0) e = number % 10;
    else if (f < 0) f = number % 10;
    else if (g < 0) g = number % 10;
    else if (h < 0) h = number % 10;
    else if (i < 0) i = number % 10;

    number /= 10;
  }

  /* Printing for verification. */

  printf("%i", a);
  printf("%i", b);
  printf("%i", c);
  printf("%i", d);
  printf("%i", e);
  printf("%i", f);
  printf("%i", g);
  printf("%i", h);
  printf("%i", i);

  return 0;
}

最后的有效数字将为正数,因此您可以验证这些数字以满足不同的条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C 中的 long 中提取单个数字 的相关文章

  • 检测到 NuGet 包的版本冲突

    我正在开发 ASP Net core 2 1 Web 应用程序项目 我的解决方案中有 1 个项目和 3 个其他库 它是高级架构 数据访问层 DAL 业务层 BL 公共层 CL 所以我需要添加引用来连接一些库和项目 我已经添加了CL参考我的项
  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • std::bind 重载解析

    下面的代码工作正常 include
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 是否有一个 C++ 库可以从 PDF 文件中提取文本,例如 PDFBox for Java? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 去年 我使用 PDFBox 在 Java 中创建了一个应用程序来获取某些 PDF 文件中的原始文本 现在
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 信任 Google API 响应对象和所有权

    我已经在我的网络应用程序中成功实现了 Google Login 使用适用于客户端 Web 应用程序的 OAuth 2 0 https developers google com identity protocols OAuth2UserAg
  • 如何在 Python 中运行 .exe 文件

    我正在尝试在 python2 7 中运行 exe 文件 我已经尽了一切努力来搜索它 这是我尝试过的一些代码 subprocess Popen r C Programs Files Internet Explorer iexplore exe
  • 调试时 VS2012 的 VSIX 扩展未运行

    我在 Visual Studio 2012 中创建了一个新的 VSIX 扩展项目 并编写了一个 MEF 分类器 作为测试 该分类器应该简单地突出显示 mylang文件 以下是我的 NET 4 5 代码的相关部分 internal stati
  • 如何通过 powershell 或 C# 使用本地 IP 远程更新 azure webapp 防火墙

    如何使用本地 PC IP 地址远程更新我的 azure webapp 防火墙 以便通过 powershell 或 C 进行管理 我已经查看了文档 但我只能从实际服务器本身找到如何操作 而不能远程操作 我可以让 Visual Studio 弹
  • 可绘制资源中带有形状的文本

    我可以在可绘制资源中创建文本形状吗 我在谷歌上搜索了很多 但什么也没找到 这是我的绘图文件
  • 退出和中止有什么区别?

    The abort http ruby doc org core 2 1 1 Kernel html method i abort文件说abort will 通过调用 Kernel exit false 立即有效地终止执行 立即 到底是什么
  • 如何根据内容调整QTableView的高度?

    在我的布局中 动态生成的 QTableView 似乎已调整大小以仅显示一行 我想让表视图的容器有一个滚动条 而不是单个表视图 它应该显示完整的内容 显然 Qt 没有为此内置任何东西 您需要手动计算和设置大小 这就是我垂直调整大小的方法 Qt
  • XMLSerializer.Serialize 上的 .NET OutOfMemoryException

    我有一个网站 每当它到达我的代码中的以下位置时 就会抛出 OutOfMemoryException XmlSerializer xs new XmlSerializer t xoverrides 看到只有在网络服务器上时才会发生这种情况 我
  • 使用 Thrift 通过共享内存进行 IPC 通信

    我找不到关于如何使用 apache thrift 通过共享内存进行 ipc 通信的足够示例 我的目标是在 thrift 的帮助下序列化现有的类 然后通过共享内存发送到另一个进程 在该进程中我在 thrift 的帮助下再次反序列化它 现在我正
  • 如何循环访问 IP 地址范围?

    我想在 IP 地址范围上执行一组网络任务 一旦范围大于 C 类网络 我就无法枚举该范围内的所有主机 我希望能够使用网络掩码迭代网络的所有主机255 255 240 0 From 192 168 0 100 To 192 168 10 100
  • LinqToExcel:Excel 列中的不同值

    对于各位专家来说 这可能是一件非常简单的事情 但我对 C 4 和 INTEROP 并不熟悉 因此 我很困惑 这是我的问题 我有一个包含重复数据的 Excel 列 我想将其修剪为仅具有唯一值 数据如下所示 ColA ColB 10 Adam
  • 角度表单验证 ng-disabled 不起作用

    我正在尝试在我的博客文章表单中使用角度表单验证 更具体地说是禁用 ng 的表单 由于某些原因 我无法弄清楚提交按钮没有被禁用 除非所有三个输入字段都有效 否则它应该被禁用 谢谢您的帮助 这是我的博客模板 div div class cont
  • 如何在 Google 电子表格中插入列?

    我想将新数据添加到工作表的开头 开头 所以我必须在工作表中添加一个新的 A1 列 但我找不到任何 PHP 的 API 示例 现在我用这个附加数据 body new Google Service Sheets ValueRange value
  • 如果未使用 scp 命令指定目标路径,则文件位置

    要将文件夹从本地计算机复制到我使用的服务器 scp r local folder user server path 现在我忘了第一次指定目标路径 scp r local folder user server 现在有人知道该文件夹是否已被复制
  • 如何在视频标签中播放AVI文件?

    我想知道是否可以让浏览器在一个文件中播放 AVI 文件video tag 我在网上找到的所有谈论它的内容都集中在 MP4 和 Ogg 格式 但没有人谈论 AVI 格式 我发现的唯一解决方案是放弃video标记并使视频可以使用 JW Play
  • Lua 如何创建可用于变量的自定义函数?

    对于像 io close 这样的方法 你可以像这样使用它 file close 有没有办法创建一个像这样工作的自定义函数 您可以在变量上调用它 对我来说 我尝试使用它通过使用 string find 查找空格来将参数与文本文件分开 所以在文
  • 如何在 Node.js 中进行 Base64 编码?

    Node js 是否有内置 Base64 编码 我问这个的原因是final from crypto只能输出十六进制 二进制或ASCII数据 例如 var cipher crypto createCipheriv des ede3 cbc e
  • 对于某些版本的 PHP,“未指定输入文件”

    我安装了多个版本的 PHP 我写的 基本上 它是一个 ApacheLounge 安装 在 Windows 10 上通过 FastCGI 与 PHP 进行通信 这曾经让我在不同的虚拟主机上同时运行这些 PHP 版本 Apache 通过 Fas
  • 如何可视化来自谷歌协议缓冲区的数据?

    我想使用谷歌协议缓冲区存储数据 另一种序列化格式也可以 然后有一个用户界面来浏览该数据 是否有 C 框架 API 可以让我做到这一点 例如 它可以使用protobuf的反射接口 然后将数据填充到Qt的QTableView 或从其他工具包 中
  • 从 C 中的 long 中提取单个数字

    我正在为我的 C 课程 第一门编程课程 做作业 作业的一部分是编写代码 让用户输入一个最多9位数的数字 程序需要判断这个数字是 递增 真递增 递减 真递减 增减 实减实增 不减不增 共7个选项 由于这是我们的第一个作业 我们不允许使用课堂上