十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。
我们提供的服务有:成都做网站、网站设计、外贸营销网站建设、微信公众号开发、网站优化、网站认证、济南ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的济南网站制作公司
C语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转,但是必须在同一个函数中使用。
因此解决的方法也是用一个特殊的值作为需要返回的标志,然后在两层调用函数中都遇到该值就返回,但是这个方法也有两个前提:
1)你的两个子函数都是由返回值的函数
2)你选择的特殊值和函数正常的返回的取值不会冲突,不会引起二义性。
因此建议你的这个问题还是用C++ 的异常去解决比较好。
中断里面不能用形参和返回值!!!
具体的做法是声明一个全局变量,在中断中改变变量的值或者说状态。
主程序就负责判断这个变量的状态,根据状态做出选择,如果状态比较多就用SWITCH,否则if就可以了。
对于你补充的问题可以这样
在函数里,需要退出的地方写上,return;
if(有推出键按下) retrun;
#include"stdio.h"
#include"string.h"
struct account
{
char name[20];
int money;
}accounts;
void plm()
{
printf("您账户的余额:%d",accounts.money);
}
void qwe()
{
int cunkuan;
printf("请输入存款金额:");
scanf("%d",cunkuan);
accounts.money=cunkuan+accounts.money;
printf(" 存款成功!\n账户余额:%d\n",accounts.money);
}
void poi()
{
int qukuan,i;
printf("请输入取款金额:");
while(1)
{
scanf("%d",qukuan);
if(accounts.moneyqukuan)
{
printf("账户余额不足!你的账户余额:%d\n请重新输入:",accounts.money);
}
else
{
accounts.money=accounts.money-qukuan;
printf("取款成功!\n账户余额:%d\n",accounts.money);
break;
}
}
}
void main()
{
char name[20];
char mima[20];
int q;
printf("====================================================\n");
printf("====================================================\n");
printf("==================欢迎你使用银行系统================\n");
printf("====================================================\n");
printf("====================================================\n\n");
printf("请输入你的账户名:");
gets(name);
printf("请输入密码:");
gets(mima);
printf("\n");
if(strcmp(name,"zengxin")==0strcmp(mima,"12345")==0)
{
printf("登陆成功!\n");
int t=1;
while(t)//主函数加上一个while循环就好了,t表示是否继续使用系统,选择0时,t=1,即可退出系统了
{
printf(" 1 存款 2 取款 3 开户\n");
printf(" 4 销户 5 查询 0 退出\n请选择:");
scanf("%d",q);
switch (q)
{
case 1:
{
qwe();
break;
}
case 2:
{
poi();
break;
}
case 3:
break;
case 4:
break;
case 5:
{
plm();
break;
}
case 0:
{
t=0;
break;
}
}
}
}
else
printf("输入的账户名和密码错误!!");
}
c语言怎样从分函数回到主函数的方法。
如下参考:
1.通过使用指针,在调用函数时,传递一个地址参数并使用指针更改其值;因此,修改后的值成为原始参数,如下所示。
2.使用指针返回的结果如下图所示。
3.使用structure:由于结构是用户定义的数据类型,因此可以定义一个包含两个整型变量的结构,在这些变量中存储越来越大和越来越小的值,然后使用该结构的值。
4.通过使用这个结构,下面显示的结果将返回,如下图。
5.通过使用数组,当数组作为参数跟踪传递时,基地址将传递给函数,因此对数组副本所做的任何更改都将更改为原始数组,如下图。
6.通过使用数组,返回的结果如下图所示。