/*

这题有个疑问:
const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收
const double BASE2=BASE1+(BREAK2-BREAK1)*RATE2; //第三个分界点前总共要缴的税收
为什么只有移到子函数里面有用,放开头提示错误!提示:initializer is not a constant

*/
#include<stdio.h>

const double HOURLYPAID=10; //每个小时的薪水
const double TIMEBREAK=40; //工时的分界点
const double COEFFICIENT=1.5; //工时的系数
const double RATE1=0.15; //税率
const double RATE2=0.2; //税率
const double RATE3=0.25; //税率
const double BREAK1=300; //税收分界点
const double BREAK2=600; //税收分界点

//const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收
//const double BASE2=BASE1+(BREAK2-BREAK1)*RATE2; //第三个分界点前总共要缴的税收

void choose_1();
void stars();
int choose_screen();

int main(void)
{
int i = 0;

while(i!=5)
{

i = choose_screen();
switch(i)
{
case 1:
case 2:
case 3:
case 4:choose_1();continue;
case 5:printf("谢谢使用\n");break;
default:
printf("输入错误,请输入1~5的整数");

}

}

return 1;
}

int choose_screen()
{
int i;

stars();
printf("请选择工资等级,退出请按5\n") ;

printf("1)$8.75/hr \t\t\t 2)$9.33/hr \n");
printf("3)$10.00/hr \t\t\t 4)$11.20/hr \n");
printf("5)quit\n");

stars();

scanf("%d",&i);

return i;

}

void stars()
{
printf("*************************************************\n");

}

void choose_1()
{
const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收
const double BASE2=BASE1+(BREAK2-BREAK1)*RATE2; //第三个分界点前总共要缴的税收

double time; //工时
double salary; //总收入
double tax; //税收
double profit; //净利润

printf("请输入一周的工作小时数: ");
scanf("%lf", &time);

if(time>TIMEBREAK) //如果工作时间超过40个小时
time=(time-TIMEBREAK)*COEFFICIENT+TIMEBREAK;

salary=HOURLYPAID*time;

if(salary<=BREAK1)
tax=salary*RATE1;
else if(salary<=BREAK2)
tax=BASE1+(salary-BREAK1)*RATE2;
else
tax=BASE2+(salary-BREAK2)*RATE3;

profit=salary-tax;

printf("工资总额是: %lf\n", salary);
printf("税金是: %lf\n", tax);
printf("净工资是: %lf\n", profit);

}

//******************************************************************

 这三种情况是可以的,const static xxxxx;不行

//......................................................

//.....................................................

//编辑器用的是http://www.pc6.com/softview/SoftView_51072.html下载的

因为编辑器不支持c99标准。--之后知道的

c中const定义的问题的更多相关文章

  1. php中const定义常量

    const 常量 1.在定义时必须被初始值,2.前面不加任何修饰符3.变量名字母一般都大写4.常量可以被子类继承5.一个常量是属于一个类的,而不是某个对象的 作用:当某些值是固定不变的,就用const ...

  2. js 中const 定义的值是否能更改

    const定义的基本类型不能改变,但是定义的对象是可以通过修改对象属性等方法来改变的. 1. const aa=trueaa=falseconsole.log(aa)VM1089:2 Uncaught ...

  3. C中const 定义常量的使用

    先看如下代码 #include <stdio.h> #include <string.h> #define ARRSIZE(a) (sizeof(a)/sizeof(a[0]) ...

  4. PHP 中 define() 和 const 定义常量时的区别

    自 PHP 5.3.0 起,有两种方式定义常量,使用 const 关键字或者 define() 函数:   1 2 const FOO = 'BAR'; define('FOO', 'BAR'); 这 ...

  5. C/C++中define定义的常量与const常量

    常量是在程序中不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之间的相关问题: define定义的常量: ...

  6. C/C++中const关键字的用法及其与宏定义的比较

    1.const关键字的性质 简单来说:const关键字修饰的变量具有常属性. 即它所修饰的变量不能被修改. 2.修饰局部变量 ; ; 这两种写法是等价的,都是表示变量的值不能被改变,需要注意的是,用c ...

  7. ES6 js中const,var,let区别 今天第一次遇到const定义的变量

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  8. PHP中const和define()定义常量的细节区别

    转自:http://www.365mini.com/page/difference-of-define-and-const.htm 众所周知,在PHP中(php 4及以后),我们可以使用函数defin ...

  9. PHP中define()和const定义常量的区别

    在PHP中可以通过define()和const两种方式定义常量可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么? 从5.3版本 ...

随机推荐

  1. OpenCV鼠标滑轮事件

    鼠标的滑轮事件实现图像的缩放很方便,具体在回调函数中如下写: 其中scale可以在外部定义为全局变量,通过响应CV_EVENT_MOUSEWHEEL滑轮事件获取Scale的具体值. 获取Scale值需 ...

  2. sql子查询

    一.子查询入门: 1.单值子查询: 单值子查询的唯一限制:子查询的返回值必须只有一行记录,而且只能有一列(又被称为标量子查询). 可以使用在select语句的列表.表达式中,以及where语句中等. ...

  3. Django之modelform组件

    一.简介与基本使用 简介:django中的modelform组件同时具有model和form作用,但是耦合度比较高,当项目需要拆分时候就比较困难了,所以在使用modelform时候需要先考虑项目的扩展 ...

  4. springmvc +mybatis 配置多数据源

    1.数据源配置: jdbc_multiple.properties: # MySQL #======================================================== ...

  5. intellij-项目目录隐藏无用的文件和文件夹

    File-->Editor-->File Types

  6. JVM-类的四种载入方式

    package org.burning.sport.javase.classloader; public class ClassLoaderMain { public static void main ...

  7. 两层嵌套list,选取list中最长的list的长度

    # coding=utf-8 import pandas as pd file_path = "test_aa.xlsx" dt = pd.read_excel(file_path ...

  8. springmvc图片上传(兼容ie8以上,实时预览)

    html代码: <form id="uploadform" method="post" enctype="multipart/form-data ...

  9. linkin大话面向对象--属性详解

    成员变量和局部变量 成员变量: 1.在一个类中,任何方法之外定义的变量:     2.从面向对象的思想来说我们又把实例变量看成一个类的属性.     3.实例变量在没有符初值时系统会自动帮我们做初始化 ...

  10. IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】

    1. 自定义错误页虽然自定义错误页很简单,但只有少数管理员有效地利用了它.管理员可以在MMC中将HTTP错误信息映像到服务器上的绝对URL或是某个文件,更为详细的信息可以在这里找到.如果你嫌这太麻烦, ...