求教怎样用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后退出程序,试了好多方法都不行,求教各位该怎么做。谢谢了!
...全文
1530 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ailurus 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xin_wu_hen 的回复:]

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

我还以为是笔误呢,这个inline以前没见过,我是用的tc编译的,加上inline报错了啊
大IP 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(),这样就完美了!多谢多谢!
大IP 2011-08-12
  • 打赏
  • 举报
回复
将pay作为内联函数,可以减少每次函数调用的性能开销。同时,输入条件可以简单的设为Y和N,功能不变。
大IP 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>
内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。

70,037

社区成员

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

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