typetyper003 2023-03-02 20:24 采纳率: 100%
浏览 52
已结题

如何确保输入的数据一定是整数,当不是整数时停止执行代码并报错

比如
int a;
scanf(''%d'',&a);
a=-a;
printf(''%d'',a);
输入1j时不读取j只输出-1
输入开头是其他字符而非数字时输出一个固定值

怎么确保输入非法时使程序停止运行并执行printf(''error'');

  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-02 23:09
    关注

    基于Monster 组和GPT的调写:
    用scanf()函数返回值来确保输入数据是否为整数。当输入非法时,scanf()函数将返回0,因此可以检查返回值是否为0来判断输入是否为整数。

    以下是实现这个功能的代码:

    #include <stdio.h>
    
    int main() {
        int a;
        if (scanf("%d", &a) == 0) {  // 检查返回值是否为0
            printf("error");
            return 1;  // 停止程序运行
        }
        a = -a;
        printf("%d", a);
        return 0;
    }
    
    
    

    这里,如果scanf()函数返回值为0,表示输入非法,程序将输出error并停止运行。如果输入合法,程序将继续执行,输出取反后的整数值。

    对于输入开头是其他字符而非数字时输出一个固定值的需求,可以使用scanf()函数的返回值和getchar()函数结合使用。具体实现如下:

    #include <stdio.h>
    
    int main() {
        int a;
        int result = scanf("%d", &a);  // 检查输入是否为整数
        if (result == 0) {  // 非法输入
            printf("error");
            return 1;
        }
        if (result == EOF || getchar() != '\n') {  // 检查输入是否以换行符结束
            printf("固定值");
            return 1;
        }
        a = -a;
        printf("%d", a);
        return 0;
    }
    
    
    

    这里,首先使用scanf()函数检查输入是否为整数,如果不是,则输出error并停止程序。如果是整数,则使用getchar()函数检查输入是否以换行符结束。如果输入没有以换行符结束,说明输入开头是其他字符而非数字,程序将输出固定值并停止运行。如果输入合法,则继续执行程序,输出取反后的整数值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月3日
  • 已采纳回答 3月3日
  • 创建了问题 3月2日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集