C语言 ——如何判断输入的是数值以外的其它数

来源:百度知道 编辑:UC知道 时间:2024/06/03 08:28:55
先请大家看看我写的代码
// 成绩等级判定程序.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdio.h"

void main()
{
printf("欢迎使用成绩等级判定系统,请输入您的成绩:");

int a;
scanf("%d",&a);/*输入个数值给A*/
for

while(a>100||a<0)
{
if(a<100||a>0)
{printf("您的输入有误!请重新输入:\n");}

scanf("%d",&a);
}

switch(a/10)
{
case 10 :printf("您的成绩等级是—S—继续保持~!");break;
case 9 :printf("您的成绩等级是—A—继续加油~!");break;
case 8 :printf("您的成绩等级是—B—继续努力~!");break;
case 7 :printf("您的成绩等级是—C—赶快拼搏~!");break;
case 6 :printf("您的成绩等级是—D—别放弃咯~!");break;
default :printf("您的成绩等级是—?—……检讨~!");
}

}

我想请问:我的这个程序编译运行后输入超过100或小于0的数都是正常的
但是只要输入数值以外的东西就会出死循环!!
请问各位高手,如何修改我这个程序才能让我的程序“顺便”判断输入的不是数值而提示

楼主你的程序逻辑也太混乱了吧:
while(a>100||a<0)就是说a>100或a<0这个循环才执行,既然这样那么接下来的一句 if(a<100||a>0)怎么可能发生?因为a>100或a<0时while才执行嘛!还有既然switch()语句放在while(a>100||a<0)大循环内,那么a/10或者大于10或者小于0,不可能等于10、9、8、7、6,程序总是执行switch()中的default :printf("您的成绩等级是—?—……检讨~!"); 这是什么逻辑呀!

scanf()和printf()函数都有返回值且都是整型量。scanf()的返回值是scanf()函数正确接受到的对应型号数的个数。比如
int i,a,b,c;
i=scanf("%d%d%d",&a,&b,&c);
如果输入1_@_100,则i=2;如果输入12_100_-1,则i=3;如果输入@_w_A,则i=0.
本题的一个完整的c程序如下,已在win-tc和Dev-c++下调试通过。
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
main()
{
int a;
printf("欢迎使用成绩等级判定系统,请输入您的成绩:");
loop:
while (scanf("%d",&a) == 1) /*如果输入的是一个整型数据,那么向下执行,否则程序退出*/
{
while (a>100||a<0)
{ printf("您的输入有误!请重新输入:\n");
goto loop;
}
switch(a/10)
{
case 10 :printf("您的成绩等级是—S—继续保持~!&qu