A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ambition 中级黑马   /  2015-4-19 11:42  /  1282 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我是一名菜鸟,请各位指点
int main()
{
  int score = 0;
   while (score<0 || score> 100)
    {printf ("请输入分数;\n");
    scanf ("%d, &score");
        }
        if (score>=90)
        {printf ("A\n");
        }
        else if (score>=80)
        {printf ("B\n");
        }
        else if (score>=70)
        {printf ("C\n");
        }
        else if (score>=60)
        {printf ("D\n");
        }
        else
        {printf ("E\n");
        };
        return 0;
};
我想着判断一下输入的分数 是否在0~100间 所以编写了一个while 语句 为什么一执行 就输出E

7 个回复

倒序浏览
  1. int score = 0;
  2.    while (score<0 || score> 100)
  3.     {printf ("请输入分数;\n");
  4.     scanf ("%d, &score");
  5.         }
复制代码

score初始值是 0 然后直接就根本不进入while循环
然后进入if判断 因为score是0 所以就输出else里面的E

请不要吝啬你的黑马币 给点吧
回复 使用道具 举报
本帖最后由 MadPawn 于 2015-4-19 13:40 编辑

你想啊,你score的初始值是0,然后到while语句,条件是小于0大于100才提示输入分数,而你的0是不满足这个条件的,所以会执行接下来的if语句,一路判定下去就直接是E了。
你把  while (score<0 || score> 100)这个语句修改一下就好了
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int score = 0;
  5.         while (score<=0 || score> 100)
  6.         {
  7.                 printf ("请输入分数:\n");
  8.                 scanf ("%d",&score");
  9.         }
  10.         if (score>=90)
  11.         {
  12.                 printf ("A\n");
  13.         }
  14.         else if (score>=80)
  15.         {
  16.                 printf ("B\n");
  17.          }
  18.         else if (score>=70)
  19.         {
  20.                 printf ("C\n");
  21.         }
  22.         else if (score>=60)
  23.         {
  24.                 printf ("D\n");
  25.         }
  26.         else
  27.         {
  28.                 printf ("E\n");
  29.         }
  30.         return 0;
  31. }
复制代码




回复 使用道具 举报
MadPawn 发表于 2015-4-19 13:34
你想啊,你score的初始值是0,然后到while语句,条件是小于0大于100才提示输入分数,而你的0是不满足这个条 ...

我感觉还是该初始条件比较好,毕竟还是有0分这个分数的
int score = -1;就好了
回复 使用道具 举报
麻木 发表于 2015-4-19 12:16
score初始值是 0 然后直接就根本不进入while循环
然后进入if判断 因为score是0 所以就输出else里面的E

while语句中不是首先得初始化吗?

点评

看不下去了 等洒家代码 洒家代码给你了 你看着赏点黑马币 洒家想去下基础题  发表于 2015-4-19 18:11
回复 使用道具 举报
wslinke 发表于 2015-4-19 14:44
我感觉还是该初始条件比较好,毕竟还是有0分这个分数的
int score = -1;就好了 ...

不行 初始化是一的话 老提醒你“请输入分数”
回复 使用道具 举报
麻木 中级黑马 2015-4-19 18:39:33
7#
本帖最后由 麻木 于 2015-4-19 18:43 编辑
ambition 发表于 2015-4-19 17:44
不行 初始化是一的话 老提醒你“请输入分数”

代码给你了 自己在eclipse上用java亲跑 可用
你原有代码需要在while检测里面重新吧系统输入的值赋给score,不然score永远都是-1然后在while里面死循环

有多余的黑马币没 分点呗

  1. package ambition;
  2. import java.util.*;

  3. public class ambition {

  4.         public static void main(String[] args) {
  5.                
  6.                  Scanner scanner = new Scanner(System.in);
  7.                  System.out.println("请输入分数");
  8.                  int score = scanner.nextInt();
  9.                    while (score<0 || score> 100)
  10.                    {
  11.                            System.out.println("请输入分数");
  12.                         score = scanner.nextInt();
  13.                    }
  14.                         
  15.                         if (score>=90)
  16.                         {
  17.                                 System.out.println('A');
  18.                         }
  19.                         else if (score>=80)
  20.                         {
  21.                                 System.out.println('B');
  22.                         }
  23.                         else if (score>=70)
  24.                         {
  25.                                 System.out.println('C');
  26.                         }
  27.                         else if (score>=60)
  28.                         {
  29.                                 System.out.println('D');
  30.                         }
  31.                         else
  32.                         {
  33.                                 System.out.println('E');
  34.                         };
  35.                        
  36.        
  37.         }

  38. }
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马