关于#c++#的问题,请各位专家解答!

无法运行


#include <stdio.h >
#include<stdlib.h>
#define _CRT_SECURE_NO_
int main()
{
    long i;
    double bonus, bon1, bon2, bon4, bon6, bon10;
    int c;
    bon1 = 100000 * 0.1;
    bon2 = bon1 + 100000 * 0.075;
    bon4 = bon2 + 200000 * 0.05;
    bon6 = bon4 + 200000 * 0.03;
    bon10 = bon6 + 400000 * 0.015;
    printf("请输入利润i:");
    scanf_s("%ld", i);
    c = i / 100000;
    if (c > 10) c = 10;
    switch (c)
    {
    case 0: bonus = i * 0.1; break;
    case 1: bonus = bon1 + (i - 100000) * 0.075; break;
    case 2:
    case 3: bonus = bon2 + (i - 200000) * 0.05; break;
    case 4:
    case 5: bonus = bon4 + (i - 400000) * 0.03; break;
    case 6:
    case 7:
    case 8:
    case 9: bonus = bon6 + (i- 600000) * 0.015; break;
    case 10:bonus = bon10 + (i - 100000) * 0.01;
    }
    printf("奖金是%10.2f", bonus);
    system("pause");
    return 0;
}

scanf_s("%ld", i);
->
scanf_s("%ld", &i);

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7631960
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++如何用数组给一行数字排序(冒泡法)源程序附带注释
  • 除此之外, 这篇博客: C++ 常见问题中的 析构函数中可以抛出异常吗? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 从语法上面讲,析构函数抛出异常是可以的,C++并没有禁止析构函数引发异常,但是C++不推荐这一做法,从析构函数中抛出异常是及其危险的。
    析构函数可能在对象正常结束生命周期时调用,也可能在有异常发生时从函数堆栈清理时调用。前一种情况抛出异常不会有无法预料的结果,可以正常捕获;但后一种情况下,因为函数发生了异常而导致函数的局部变量的析构函数被调用,析构函数又抛出异常,本来局部对象抛出的异常应该是由它所在的函数负责捕获的,现在函数既然已经发生了异常,必定不能捕获,因此,异常处理机制只能调用terminate()。若真的不得不从析构函数抛出异常,应该首先检查当前是否有仍未处理的异常,若没有,才可以正常抛出。

  • 您还可以看一下 高升老师的零基础C++程序设计课程中的 多态是灵魂小节, 巩固相关知识点