如何避免“定义为int型变量,却输入了字符,倒致陷入无限死循环”问题? 您所在的位置:网站首页 c语言while无限循环怎么办 如何避免“定义为int型变量,却输入了字符,倒致陷入无限死循环”问题?

如何避免“定义为int型变量,却输入了字符,倒致陷入无限死循环”问题?

2024-02-23 05:04| 来源: 网络整理| 查看: 265

例子如下: 本来是让用户输入整数,怎样防止用户不小心输入字符导致的程序错误?例如下面的代码,输入字符’a’就会出现死循环,怎样解决?

#include int main() { int a = 0; // 素数的个数 int num = -1; // 输入的整数 while (num > 32767 || num if (num % i == 0) { a++; // 素数个数加1 } } if (a == 0) { printf("%d是素数。\n", num); } else { printf("%d不是素数。\n", num); } return 0; }

很容易想到以下这种方法(仅仅这样想感觉没啥问题,但实际上还是会无限循环): 判断一下输入的值,如果是数字再执行下面的语句块。不是数字就输出"输入异常字符,请输入整数n:" while (num > 32767 || num printf(“输入异常字符,请输入整数n:”); } if (num > 0 && num 0并且 printf("请输入大于0且小于等于32767的整数n:"); gets(num); if(strlen(num)>5) continue; for(int i=0;i n[i]=num[i]-'0'; if(i==strlen(num)-1) istrue=1; } else break; } if(istrue){ for(int i=1;i//判断这个数是否在0~32767之间 istrue=0; continue; } } } for (int i = 2; i a++; // 素数个数加1 } } if (a == 0) { printf("%d是素数。\n", t); } else { printf("%d不是素数。\n", t); } return 0; }

运行结果: 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有