为什么运行不了?一直提示16行有问题

请编fun函数写程序,从键盘输入百分制成绩,要求输出等级制成绩A、B、C、D。90~100分为A,80~89分为B,
60~79分为C,1~59分为D。不考虑小数,输入为整数, 输出为字符。

img

img

default: 从这里看,题目要你用switch,而不是 if

char fun(int n) 
{
    char s; 
    switch(n) { 
        case 10: case 9: s = 'A'; break; 
        case 8: s = 'B'; break; 
        case 6: case 7: s = 'C'; break; 
        default: s = 'D';
    }
    return s;
}

供参考:

char fun(int n)
{
    char s;
    /***********Program**********/
    switch(n){
        case 10:
        case 9 : s = 'A'; break;
        case 8 : s = 'B'; break;
        case 7 :
        case 6 : s = 'C'; break;
    /*********** End  *********/
        default: s = 'D';
    }
    return s;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7809749
  • 你也可以参考下这篇文章:请编fun函数写程序,从键盘输入百分制成绩,要求输出等级制成绩A、B、C、D。90~100分为A,80~89分为B,60~79分为C,1~59分为D。不考虑小数,输入为整数
  • 除此之外, 这篇博客: 65.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。中的 效果 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在这里插入图片描述

  • 以下回答来自chatgpt:

    答案:

    根据参考资料中的代码,可以看出出现16行错误是因为使用了不兼容的scanf_s函数。解决方法有两种:

    1.使用scanf函数

    将代码中的scanf_s("%d", &a)改为scanf("%d", &a)即可。

    修改后的代码如下:

    include

    int main() { int a; printf("输入学生的成绩:\n"); scanf("%d", &a); if (a < 0 || a>100) { printf("输入的成绩错误!\n"); } else { if (a > 90) { printf("该同学的等级为:A"); } if (a >= 75 && a <= 89) { printf("该同学的等级为:B"); } if (a >= 60 && a <= 74) { printf("该同学的等级为:C"); } if (a >= 0 && a <= 59) { printf("该同学的等级为:D"); } } return 0; }

    2.使用scanf_s函数,并开启安全编译选项

    在使用scanf_s函数时,需要开启安全编译选项,否则会出现错误提示。具体操作如下:

    (1) 在Visual Studio中打开项目,选择解决方案资源管理器。

    (2) 选中项目,在菜单栏中选择“项目-属性”。

    (3) 在弹出的窗口中,选择“C/C++”选项卡,选择“预处理器”后,在预处理器定义中添加_SCL_SECURE_NO_WARNINGS

    (4) 在同一窗口中,选择“链接器”选项卡,在“系统”选项中,将“启用安全检查”改为“否”。

    (5) 修改代码,即将代码中的scanf_s("%d", &a)改为scanf_s("%d", &a, sizeof(int))

    修改后的代码如下:

    include

    int main() { int a; printf("输入学生的成绩:\n"); scanf_s("%d", &a, sizeof(int)); if (a < 0 || a>100) { printf("输入的成绩错误!\n"); } else { if (a > 90) { printf("该同学的等级为:A"); } if (a >= 75 && a <= 89) { printf("该同学的等级为:B"); } if (a >= 60 && a <= 74) { printf("该同学的等级为:C"); } if (a >= 0 && a <= 59) { printf("该同学的等级为:D"); } } return 0; }

    注意:在使用scanf_s函数时,如果输入的是字符串,需要将缓冲区长度作为第三个参数传入。如果输入的是整型或浮点型变量,则需要将变量的大小(以字节为单位)作为第三个参数传入。同时,在使用scanf_s函数时,建议使用格式控制符“%*c”,可以帮助清除输入缓冲区。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^