求教怎样用C语言实现输入exit后退出程序,在线等。

ailurus 2011-08-12 03:20:36
我的程序是这样的:
#include "stdio.h"

void main()
{
void pay();
pay();

getch();
}

void pay()
{
float a,b,c,d,e,f; /*a为税前工资,b为三险一金,c为税率,
d为速算扣除数,e为所扣税款,f为税后工资*/
a=0;b=0;
printf("请输入税前工资额和三险一金额:");
scanf("%f %f",&a,&b);
printf("\n");
if(a-b-3500<=0)
{c=0;d=0;}
else if((a-b-3500)>0&&(a-b-3500)<=500)
{c=0.05f;d=0;}
else if((a-b-3500)>500&&(a-b-3500)<=2000)
{c=0.10f;d=25;}
else if((a-b-3500)>2000&&(a-b-3500)<=5000)
{c=0.15f;d=125;}
else if((a-b-3500)>5000&&(a-b-3500)<=20000)
{c=0.20f;d=375;}
else if((a-b-3500)>20000&&(a-b-3500)<=40000)
{c=0.25f;d=1375;}
else if((a-b-3500)>40000&&(a-b-3500)<=60000)
{c=0.30f;d=3375;}
else if((a-b-3500)>60000&&(a-b-3500)<=80000)
{c=0.35f;d=6375;}
else if((a-b-3500)>80000&&(a-b-3500)<=100000)
{c=0.40f;d=10375;}
else if((a-b-3500)>10000)
{c=0.45f;d=15375;}
e=(a-b-3500)*c-d;
f=a-b-e;
printf("%.2f %.2f\n",e,f);
system("pause");
pay();
}


现在运行程序后,退步出来,我想在主函数调用pay()函数后,再加一些内容,能够实现输入exit后退出程序,试了好多方法都不行,求教各位该怎么做。谢谢了!
...全文
1400 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xin_wu_hen 的回复:]

呵呵,不客气。不过,inline是内联函数说明的关键词,要来表示函数的内联属性的,不是笔误。。。。。
[/Quote]

我还以为是笔误呢,这个inline以前没见过,我是用的tc编译的,加上inline报错了啊
xin_wu_hen 2011-08-12
  • 打赏
  • 举报
回复
呵呵,不客气。不过,inline是内联函数说明的关键词,要来表示函数的内联属性的,不是笔误。。。。。
ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xin_wu_hen 的回复:]
将pay作为内联函数,可以减少每次函数调用的性能开销。同时,输入条件可以简单的设为Y和N,功能不变。
[/Quote]

谢谢了!
ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xin_wu_hen 的回复:]

C/C++ code

#include <stdlib.h>
#include <stdio.h>
void pay();
void main()
{

while (1)
{
printf("Continue or not:Y or N:");
char c = getchar();
if (c == 'Y' || c=='y')
……
[/Quote]

多谢大神!不过有一点小错误,下面的pay()函数前有个inline,应该是笔误吧。还有那个主函数里的char c的定义,应该先声明char c,再初始化c=getchar(),这样就完美了!多谢多谢!
xin_wu_hen 2011-08-12
  • 打赏
  • 举报
回复
将pay作为内联函数,可以减少每次函数调用的性能开销。同时,输入条件可以简单的设为Y和N,功能不变。
xin_wu_hen 2011-08-12
  • 打赏
  • 举报
回复

#include <stdlib.h>
#include <stdio.h>
void pay();
void main()
{

while (1)
{
printf("Continue or not:Y or N:");
char c = getchar();
if (c == 'Y' || c=='y')
pay();
else if (c == 'N' || c=='n')
{
exit(1);
}
}
}

inline void pay()
{
float a,b,c,d,e,f; /*a为税前工资,b为三险一金,c为税率,
d为速算扣除数,e为所扣税款,f为税后工资*/
a=0;b=0;
printf("Please input income before taxing:");
scanf("%f %f",&a,&b);
printf("\n");
if(a-b-3500<=0)
{c=0;d=0;}
else if((a-b-3500)>0&&(a-b-3500)<=500)
{c=0.05f;d=0;}
else if((a-b-3500)>500&&(a-b-3500)<=2000)
{c=0.10f;d=25;}
else if((a-b-3500)>2000&&(a-b-3500)<=5000)
{c=0.15f;d=125;}
else if((a-b-3500)>5000&&(a-b-3500)<=20000)
{c=0.20f;d=375;}
else if((a-b-3500)>20000&&(a-b-3500)<=40000)
{c=0.25f;d=1375;}
else if((a-b-3500)>40000&&(a-b-3500)<=60000)
{c=0.30f;d=3375;}
else if((a-b-3500)>60000&&(a-b-3500)<=80000)
{c=0.35f;d=6375;}
else if((a-b-3500)>80000&&(a-b-3500)<=100000)
{c=0.40f;d=10375;}
else if((a-b-3500)>10000)
{c=0.45f;d=15375;}
e=(a-b-3500)*c-d;
f=a-b-e;
printf("%.2f %.2f\n",e,f);
//system("pause");
//pay();
}



ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zxp1132123 的回复:]

主函数--调用PAY函数--pause---调用PAY函数--pause---调用PAY函数--pause。。。。。。。。
[/Quote]

请问,怎样退出来?
zxp1132123 2011-08-12
  • 打赏
  • 举报
回复
主函数--调用PAY函数--pause---调用PAY函数--pause---调用PAY函数--pause。。。。。。。。
ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 agoago_2009 的回复:]

把整个代码放在一个死循环里如 while(1),当捕获了 退出命令后,跳出循环,结束
[/Quote]

什么意思?能说具体点不?
ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fly55rain 的回复:]

char a[5] = "";
gets(a);
if(strcmp(a, "exit") == 0)
exit(0);

增加头文件
#include <string.h>
#include <stdlib.h>
[/Quote]

兄弟,不好使啊,我试了你的方法,并没有退出程序,而是得到输出都为0的结果。。。
Gloveing 2011-08-12
  • 打赏
  • 举报
回复
把整个代码放在一个死循环里如 while(1),当捕获了 退出命令后,跳出循环,结束
小木 2011-08-12
  • 打赏
  • 举报
回复
char a[5] = "";
gets(a);
if(strcmp(a, "exit") == 0)
exit(0);

增加头文件
#include <string.h>
#include <stdlib.h>

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧