C语言求和:处理不规范输入的整数加法
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;}
代码解释
-
isPositiveInteger函数:用于判断一个字符串是否为正整数。 * 首先检查字符串是否为空,如果为空则返回false。 * 然后遍历字符串的每个字符,如果发现任何一个字符不是数字,则返回false。 * 如果所有字符都是数字,则返回true。 -
main函数: * 首先使用scanf函数读取一行输入字符串。 * 然后使用一个指针ptr找到第一个空格的位置,并将空格替换为字符串结束符�,这样就将输入字符串分成了两个部分。 * 接着定义两个整型变量A和B,用于存储转换后的整数。 * 定义一个布尔变量isValid,用于标记输入是否合法,初始值为true。 * 分别调用isPositiveInteger函数判断两个字符串是否为正整数。 * 如果是正整数,则使用atoi函数将其转换为整数,并赋值给对应的变量。 * 否则,将isValid标记为false。 * 最后根据isValid的值判断输入是否合法: * 如果合法,则输出A + B = 和的形式。 * 否则,输出? + ? = ?。
示例
以下是几个输入输出示例:
输入:
123 456
输出:
123 + 456 = 579
输入:
- 18
输出:
? + ? = ?
输入:
-100 blabla bla...33
输出:
? + ? = ?
这个程序可以有效地处理各种不规范的输入,并给出正确的结果或错误提示,提高了程序的健壮性。
原文地址: https://www.cveoy.top/t/topic/cdVz 著作权归作者所有。请勿转载和采集!