gpt4 book ai didi

c - 如果用户没有在 C 中引入 3 位数字,则打印错误

转载 作者:行者123 更新时间:2023-11-30 17:08:33 25 4
gpt4 key购买 nike

我对 C 编程非常陌生,这是迄今为止我的第一个问题,因为这是我第一次在论坛上找不到适合我的应用程序的任何回复。

所以:是的,这是学校练习,但我不希望你们为我做。我要做的就是创建一个程序,询问一个 3 位数字,并将该数字中的所有数字相加。

我已经这样做了,但我想更深入,让用户无法输入 3 位数以外的数字。到目前为止我有这个:

 include <stdio.h>
include <stdlib.h>
include <math.h>
include <string.h>
include <time.h>
include <conio.h>
include <ctype.h>

int main()
{
int mainnum, secnum, suma, resto ;
char repetir;
suma = 0;
do
{
printf("Input a 3 digit number: ");
scanf("%d", &mainnum);
fflush(stdin);

if (mainnum>999)
{
printf("ERROR: Number is too big\n");
}
else if (mainnum<99)
{
printf("ERROR: Number is too small\n");
}
else if (!isdigit(mainnum))
{
printf("ERROR: You introduced invalid characters\n");
}

} while (mainnum>999 || mainnum<99 || !isdigit(mainnum));
secnum = mainnum;



while (secnum != 0)
{
resto = secnum % 10;
suma = suma + resto;
secnum = secnum / 10;
}



printf("The sum of %d digits = %d\n \n", mainnum, suma);


if (suma != 0) suma = 0;

printf("Press Y to repeat, or any key to exit: ");
getchar();
repetir = getchar();

} while (repetir == 'y' || repetir == 'Y');

return 0;

}

我惨痛地了解到“isdigit”函数不起作用,因为 int 不是 ASCII 字符。我花了几个小时寻找一种方法来完成这项工作,但我似乎无法实现。

感谢任何帮助和更正!

最佳答案

用于测试数字是否正确输入的伪代码:

read an int value
if it worked
read a char value
if it worked
if the char value is newline
if the int value's range is correct
print the int value

您可以通过测试 scanf() 的函数返回值来检查“它是否有效”。请参阅手册页了解它应该是什么。

输入另一个字符的原因是为了测试下一个字符是否是换行符。例如,如果输入为 123a,则数字将被正确输入,但读取的下一个字符将是 a 而不是 newline。它还会检测您是否输入 123.45,因为下一个字符将是

应该不需要刷新输入缓冲区 - 事实上它位于错误的位置,并且会破坏我对下一个字符是否为换行符的第二次测试。

关于c - 如果用户没有在 C 中引入 3 位数字,则打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com