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日

悬赏问题

  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效