C语言求和:处理不规范输入的整数加法

这篇文章提供了一个C语言程序,用于解决一个简单的加法问题,但需要处理各种不规范的输入情况。

问题描述

给定两个整数 A 和 B,计算它们的和。然而,输入可能包含以下情况:

  • 输入的不是整数,例如包含字母、小数点等字符。* 输入的整数超出规定的范围(例如1到1000)。* 输入包含多个空格或其他非法字符。

我们需要编写一个程序,能够处理这些不规范的输入,并给出正确的结果或错误提示。

C语言代码实现c#include <stdio.h>#include <stdbool.h>#include <ctype.h>

bool isPositiveInteger(char *str) { if (*str == '�') { return false; } for (int i = 0; str[i] != '�'; i++) { if (!isdigit(str[i])) { return false; } } return true;}

int main() { char str[1001]; scanf('%s', str); char *ptr = str; while (*ptr != ' ') { ptr++; } *ptr = '�'; // 将第一个空格替换为字符串结束符 int A, B; bool isValid = true; if (isPositiveInteger(str)) { A = atoi(str); } else { isValid = false; } if (isPositiveInteger(ptr + 1)) { B = atoi(ptr + 1); } else { isValid = false; } if (isValid) { printf('%d + %d = %d ', A, B, A + B); } else { printf('? + ? = ? '); } return 0;}

代码解释

  1. isPositiveInteger 函数:用于判断一个字符串是否为正整数。 * 首先检查字符串是否为空,如果为空则返回 false。 * 然后遍历字符串的每个字符,如果发现任何一个字符不是数字,则返回 false。 * 如果所有字符都是数字,则返回 true

  2. main 函数: * 首先使用 scanf 函数读取一行输入字符串。 * 然后使用一个指针 ptr 找到第一个空格的位置,并将空格替换为字符串结束符 ,这样就将输入字符串分成了两个部分。 * 接着定义两个整型变量 AB,用于存储转换后的整数。 * 定义一个布尔变量 isValid,用于标记输入是否合法,初始值为 true。 * 分别调用 isPositiveInteger 函数判断两个字符串是否为正整数。 * 如果是正整数,则使用 atoi 函数将其转换为整数,并赋值给对应的变量。 * 否则,将 isValid 标记为 false。 * 最后根据 isValid 的值判断输入是否合法: * 如果合法,则输出 A + B = 和 的形式。 * 否则,输出 ? + ? = ?

示例

以下是几个输入输出示例:

输入:

123 456

输出:

123 + 456 = 579

输入:

  1. 18

输出:

? + ? = ?

输入:

-100 blabla bla...33

输出:

? + ? = ?

这个程序可以有效地处理各种不规范的输入,并给出正确的结果或错误提示,提高了程序的健壮性。

C语言求和:处理不规范输入的整数加法

原文地址: https://www.cveoy.top/t/topic/cdVz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录