LYZLYZLYZ_ 2023-01-12 10:07 采纳率: 100%
浏览 30
已结题

这个东西俺怎么就是搞不明白啊(哭)

题目内容:
下面代码的功能是将百分制成绩转换为5分制成绩, 具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,否则将其转换为5分制输出。
因为我不会处理输入‘a'输出 Input error!的情况 就去搜了一下代码

#include <stdio.h>
int main()
{
    printf("Please input score:\n");
    int score,s;
    char grade;
    scanf("%d",&score);
    s=score/10;
    switch(s)
    {
        case 10:
        case 9: grade='A';    printf("grade: %c\n",grade);break;
        case 8: grade='B';     printf("grade: %c\n",grade);break;
        case 7: grade='C';    printf("grade: %c\n",grade);break;
        case 6: grade='D';    printf("grade: %c\n",grade);break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:grade='E';printf("grade: %c\n",grade);break;
        default:printf("Input error!\n");
    }
    return 0;
}

然后这个代码运行输入’a'结果是对的
但是我有点不明白的是 为什么这个能运行的对呀 然后我就找它结果对的关键在哪里
找了下我就又发现一个点 删掉在case中进行的操作(如下代码)结果又不对了呀 这到底是为啥呀(悲)

#include <stdio.h>
int main()
{
    printf("Please input score:\n");
    int score,s;
    char grade;
    scanf("%d",&score);
    s=score/10;
    switch(s)
    {
        case 10:
        case 9: break;
        case 8: break;
        case 7: break;
        case 6: break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:break;
        default:printf("Input error!\n");
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 於黾 2023-01-12 10:50
    关注

    原因就是score没有初值
    当你输入a,它不能转换成数字,那么score就没有被赋值
    正常它就应该是0,那么会进入default
    但是因为没有初值,它是个随机内存,万一它本来就是5呢,肯定就不对了呀
    你改了代码重新编译,IDE就会换块内存来执行,score的初值就会改变
    如果你老老实实的让输入数字就输入数字也不会有这种问题,没初值而又不输入数字,可不就出问题了吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月14日
  • 已采纳回答 1月12日
  • 创建了问题 1月12日

悬赏问题

  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?