/*

这题有个疑问:
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. linux 下 tomcat 安装

    下载 根据已安装的jdk版本选择合适的版本,否则不兼容 https://tomcat.apache.org/whichversion.html 选择合适的压缩包 源码 二进制:已针对固定的操作系统和机 ...

  2. Android知识点剖析系列:深入了解layout_weight属性

    摘录自:http://www.cnblogs.com/net168/p/4227144.html 前言 Android中layout_weight这个属性对于经常捣鼓UI的我们来说,肯定不会陌生.但是 ...

  3. myeclipse10不用打开myeclipse configuration center安装插件的方法

    我使用myeclipse10,网上找了一大堆的插件安装方法,全部都是要通过help->myeclipse configuration center进行安装 不用打开myeclipse  conf ...

  4. 数据结构 链式哈希表(Hash Table)的接口定义与实现分析(完整代码)

    链式哈希表的接口定义 关于哈希表与链式哈希表的描述可以参阅:http://www.cnblogs.com/idreamo/p/7990860.html 链式哈希表的操作与属性有:初始化.销毁.插入元素 ...

  5. ROM、SDRAM、RAM、DRAM、SRAM、FLASH区别

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  6. js_3_for_if_try

    在js中有哪些特殊变量? null 指向一个空地址,一个特殊的地址 var u 定义了一个特殊变量u,类型未定义,boolean(u)=false js中的for循环是什么样子? 对列表: for(v ...

  7. python_爬校花图片

    如何用python爬取校花图片并保存到本地来? 1. 获取什么数据? 校花名字  name 校花所在学校 school 校花图片的url   img_ulr 2.如何获取? 打开网页http://ww ...

  8. C/C++基础知识总结

    [006] HIWORD宏取高16位. [005] 使用strcmp需判断参数是否为NULL [004] main函数的第三个参数envp 有的编译器支持三个参数的main函数,但不推荐这么写. [0 ...

  9. linux根据端口号查询来源程序

    1.根据端口号查询进程  netstat -tunlp|grep port 2.根据进程查询来源程序 ps aux | grep pid 上图看出所属进程为2281 上图看出占用8083端口的程序为n ...

  10. 自己写的日志框架--linkinLog4j--实现基本的框架功能

    OK,上面一步我们已经知道了日志框架的必要性,然后我们也对比了直接不用日志框架来记录日志的种种弊端.现在我们开始就来一步一步的实现自己的日志框架. 大体的思路如下: 1,实现多种日志级别,通过设值不同 ...