工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2014|回复: 10

C语言问题

[复制链接]
发表于 2006-4-23 03:13 | 显示全部楼层 |阅读模式
#include <stdio.h>
int main(){
    float mark;
    while(scanf("%f",&mark),mark<=100&&mark>=0){
         switch((int)mark/10){
                case 9:printf("A"); break;
                case 8:printf("B"); break;
                case 7:printf("C"); break;
                case 6:printf("D"); break;
                default: printf("E");
         }
     }
    return 0;
}
当输入 为 1/2时,会出现很奇怪的事
整个屏幕不停地出现“E”
发表于 2006-4-23 10:00 | 显示全部楼层
那不是1/2的问题,是因为输入非法float.你输0.5就不会了
回复

使用道具 举报

 楼主| 发表于 2006-4-23 11:18 | 显示全部楼层
那就是没有办法可以验证输入 的正确性??
回复

使用道具 举报

发表于 2006-4-23 11:48 | 显示全部楼层
不是没办法,是挺麻烦的
一般做法可能是接收字符或字符串,然后再作处理
回复

使用道具 举报

发表于 2006-4-23 12:17 | 显示全部楼层
输入任何一个非数字的字符,都会不停出现E
回复

使用道具 举报

发表于 2006-4-24 18:47 | 显示全部楼层
为什么会不停地出现E,而不只是出现一次?
回复

使用道具 举报

发表于 2006-5-1 17:42 | 显示全部楼层
因为你有了while(scanf("%f",&mark),mark<=100&&mark>=0)
所以你输入E的时候一直都满足mark<=100&&mark>=0的条件,永远进入死循环
回复

使用道具 举报

发表于 2006-5-1 17:46 | 显示全部楼层
而且实数型数据是不能跟字符数据进行转换
所以你定义mark的时候必须定义为整型
回复

使用道具 举报

发表于 2006-5-1 18:42 | 显示全部楼层
原帖由 宁风 于 2006-5-1 17:42 发表
因为你有了while(scanf("%f",&mark),mark<=100&&mark>=0)
所以你输入E的时候一直都满足mark<=100&&mark>=0的条件,永远进入死循环

不对,照您这么说,我输入一个90,那岂不是会不断出现A?不知道您有没有发现,当你第一个数就输入一个非法字符时,并没有出现E,只有您输入类似1/2这样的冬冬时,才会出现这种一直prE的情况。

[ 本帖最后由 gyCai 于 2006-5-1 18:56 编辑 ]
回复

使用道具 举报

发表于 2006-5-1 20:21 | 显示全部楼层
。。。。。。。。。。。。。
为什么没人帮我做试题啊
回复

使用道具 举报

 楼主| 发表于 2006-5-5 23:04 | 显示全部楼层
解决了,应该这样:
#include <stdio.h>
int main(){
    float mark;
    while((scanf("%f",&mark)) && mark<=100 && mark>=0){/*注意这里!!!!!!!!!!!!!!!!!!!!!因为scanf()输入匹配时返回1*/
         switch((int)mark/10){
                case 9:printf("A"); break;
                case 8:printf("B"); break;
                case 7:printf("C"); break;
                case 6:printf("D"); break;
                default: printf("E");
         }
     }
    return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-30 23:43

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表