输入两个整数求和
题目描述:编写一个程序,实现两个整数的加法运算。
要求:
1、通过用户输入获取两个整数。
2、对两个整数进行加法运算并输出结果。
3、程序遇到非数字输入应给出提示并要求重新输入。
4、程序运行完毕后应等待用户输入并按回车键结束程序。
示例:
请输入第一个整数: 12
请输入第二个整数: 34
12 + 34 = 46
请按回车键结束程序。
下面给出该题目的 C 语言解答。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_INPUT_LEN 100 // 定义最大输入长度int main()
{char input1[MAX_INPUT_LEN], input2[MAX_INPUT_LEN]; // 用字符数组存储用户输入的字符串int num1, num2; // 存储用户输入的整数// 获取第一个整数并进行输入检测while(1){printf("请输入第一个整数:");if (fgets(input1, MAX_INPUT_LEN, stdin) != NULL) // 读取用户输入的字符串{if (sscanf(input1, "%d", &num1) == 1) // 将字符串转换为整数{break;}}printf("输入错误,请重新输入!\\n");}// 获取第二个整数并进行输入检测while(1){printf("请输入第二个整数:");if (fgets(input2, MAX_INPUT_LEN, stdin) != NULL) // 读取用户输入的字符串{if (sscanf(input2, "%d", &num2) == 1) // 将字符串转换为整数{break;}}printf("输入错误,请重新输入!\\n");}// 计算两个整数的和并输出结果printf("%d + %d = %d\\n", num1, num2, num1+num2);// 等待用户输入并按回车键结束程序printf("请按回车键结束程序。");getchar();return 0;
}
上面给出的解答,对用户输入的非数字字符进行了输入检测,并对用户进行了错误提示。如果读者需要进一步了解解答中的细节,可自行查阅 C 语言相关资料。
该题目的主要目的是让你练习使用 C 语言编写简单的控制台程序。下面是程序运行的主要流程和思路:
-
首先,我们需要用 C 语言提供的字符数组类型
char[]
来存储用户输入的整数,我们定义了input1
和input2
两个字符数组;同时,我们定义了num1
和num2
两个整形变量来存储转换后的整数。 -
为了防止用户输入的字符超出我们程序的处理范围,我们需要对读入的字符数进行限制。我们定义了
MAX_INPUT_LEN
常量来设定输入字符最大长度为100。在输入的过程中,我们需要判断用户是否输入了超过100个字符,以避免程序崩溃。 -
我们希望用户输入的整数不出现错误,因此需要加入输入检测机制。在用户输入的过程中,我们通过
fgets()
函数来从标准输入流中读取指定长度的字符,即从终端读取最多MAX_INPUT_LEN - 1
个字符。接着,我们使用sscanf()
函数来将字符串转换为整数,如果输入的不是数字,则无法完成转换,我们需要通过判断语句提示用户重新输入。 -
当用户的输入都已合法地转换为数字之后,我们需要计算两个整数的和值,并将结果输出至终端。这里我们直接使用了
num1 + num2
的表达式计算其和值。 -
最后,为了保证程序在终端停留,我们使用
getchar()
函数来暂停程序的运行,直到用户按下回车键结束程序。
需要注意的是,在程序设计中需要考虑用户在任何步骤中的可能输入错误及错误提示相应的处理,确保程序具备良好的健壮性。
当用户运行上面给出的代码后,程序会先输出 “Please input two integer numbers:”,提示用户输入两个整数,然后等待用户的输入。
接着,程序利用 fgets()
函数从标准输入中读入一行用户输入。fgets()
函数会读入最多 MAX_INPUT_LEN - 1
个字符,遇到换行符停止读取,然后自动在字符串的末尾添加 ‘\\0’ 来标识字符串的结束。如果用户输入的字符数超过了 MAX_INPUT_LEN - 1
,fgets()
函数会截断输入字符串,并且在末尾添加 ‘\\0’ 来标识字符串的结束。
接着,程序利用 sscanf()
函数从用户输入的字符串中读入两个整数变量 num1
和 num2
,如果 sscanf()
函数无法成功转换输入字符串,即输入字符串中至少有一个非数字字符,那么程序会输出 “Invalid input! Please input again:” 提示用户重新输入,直到输入的字符串符合要求。
如果读入的字符串可以成功被 sscanf()
函数转换为两个整数变量 num1
和 num2
,那么程序直接利用加法运算得到这两个数的和,并输出结果字符串至终端。
最后,为了让程序停下来,等待用户按下回车键后结束程序,程序调用了 getchar()
函数来读取一个字符,等待用户的回车操作。
整个程序大致的流程就是:输入两个整数 -> 转换输入的字符串为整数 -> 计算和值 -> 输出结果,一旦输入错误,程序会要求用户重新输入,直到输入正确。最后程序等待用户按下回车键结束程序。
这段程序主要做了以下几件事情:
- 定义了一个常量
MAX_INPUT_LEN
,表示输入的字符串最长为多少字符。 - 定义了两个整数变量
num1
和num2
,它们用于存储用户在控制台上输入的两个整数。 - 在控制台输出了 “Please input two integer numbers:”,提示用户输入两个整数。
- 利用
fgets()
函数从标准输入中读取一行字符串,最多读取MAX_INPUT_LEN - 1
个字符,保存在input_str
中。 - 判断读取的字符串是否符合要求,如果不是两个整数的字符串格式,通过输出 “Invalid input! Please input again:” 再次提示用户输入直到符合格式。
- 利用
sscanf()
函数从读取的字符串中获取两个整数,保存在num1
和num2
两个变量中。 - 计算两个整数的和
sum
。 - 在控制台输出 “The sum is %d”,其中
%d
是整数格式字符串的占位符,表示输出sum
的值。然后在输出后加上换行符\\n
。 - 利用
getchar()
函数让程序停留在控制台上,等待用户按下回车键。
这段程序可以接收用户输入的两个整数,并计算它们之和,最后输出给用户。如果用户输入的不是两个整数的字符串格式,则要求用户重新输入,以保证程序的正常运行。