1、通过使用指针,在函数调用时,传递带有地址的参数,并使用指针更改其值;这样,修改后的值就会变成原始参数。
成都服务器托管,创新互联建站提供包括服务器租用、服务器机柜租用、带宽租用、云主机、机柜租用、主机租用托管、CDN网站加速、域名申请等业务的一体化完整服务。电话咨询:18980820575
2、通过使用指针返回结果为:
3、通过使用结构:因为结构是用户定义的数据类型;可以定义一个包含两个整数变量的结构,并将更大和更小的值存储到这些变量中,然后使用该结构的值。
4、通过使用结构返回结果为:
5、通过使用数组,当一个数组作为参数传递时,基地址将传递给该函数,因此无论对数组副本所做的任何更改,都会更改为原始数组。
6、通过使用数组返回结果为:
你说的是函数的返回者吧函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值。对函数的值(或称函数返回值)有以下一些说明: 1) 函数的值只能通过return语句返回主调函数。 return 语句的一般形式为: return 表达式;或者为: return (表达式);该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 2) 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。 3) 如函数值为整型,在函数定义时可以省去类型说明。 4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为: void s(int n) { …… } 一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型。
/*
*
main.c
*
*
Created
on:
2011-6-11
*
Author:
ice
*/
#includestdio.h
double
salary();/*计算工资税的函数*/
int
main(void)
{
int
choice;
//
char
want0;////这个want0变量没有使用
double
result;
while(1)
{
printf("欢迎使用个人所得税计算器\n");
printf("\n");
printf("1.工资、薪金所得税计算\n");
printf("\n");
printf("请输入需要计算的税收项目序号:");
scanf("%d",
choice);
if(choice==1)
{
result
=
salary();//要有一个值接受返回值才可以啊
printf("%lf",
result);
}
}
}
double
salary()
{
double
sal,
result;
printf("请输入您的薪水:");
scanf("%lf",
sal);
if(sal=3000)
{
result=sal;
}
if(sal3000sal=4500)
{
result=sal*0.05;
}
if(sal4500sal=7500)
{
result=sal*0.1-75;
}
if(sal7500sal=12000)
{
result=sal*0.2-525;
}
if(sal12000sal=38000)
{
result=sal*0.25-975;
}
if(sal38000sal=58000)
{
result=sal*0.3-2725;
}
if(sal58000sal=83000)
{
result=sal*0.35-5475;
}
if(sal83000)
{
result=sal*0.45-13475;
}
return
result;
}
乱码是因为你输出的是主函数里的 result 而这个没有初始化
所以是乱码
1 主程序少了两个 }
2 if(choice==1)
{
result = salary(); //虽然函数返回了 但是并没有把值赋给任何变量,改为这样 printf("%lf", result);
}
#includestdio.h
double salary();/*计算工资税的函数*/
void main()
{
int choice;
char want0;
double result;
while(1)
{
printf("欢迎使用个人所得税计算器\n");
printf("\n");
printf("1.工资、薪金所得税计算\n");
printf("\n");
printf("请输入需要计算的税收项目序号:");
scanf("%d", choice);
if(choice==1)
{
result = salary();
printf("个人所得税为:%lf。\n", result);
}
}
}
double salary()
{
double sal, result;
printf("请输入您的薪水:");
scanf("%lf", sal);
if(sal=3000)
{
result=sal;
}
if(sal3000sal=4500)
{
result=sal*0.05;
}
if(sal4500sal=7500)
{
result=sal*0.1-75;
}
if(sal7500sal=12000)
{
result=sal*0.2-525;
}
if(sal12000sal=38000)
{
result=sal*0.25-975;
}
if(sal38000sal=58000)
{
result=sal*0.3-2725;
}
if(sal58000sal=83000)
{
result=sal*0.35-5475;
}
if(sal83000)
{
result=sal*0.45-13475;
}
return result;
}
有 else 是
只有 n == 0 return jcjg;返回jcjg 否则不确定返回何值(实际返回 eax 寄存器的最后一次值)
没有 else 任何时候 return jcjg;总是会返回jcjg。
不过没见过这样用递归的,
像这种简单计算,正常都是用迭代处理,不用递归的;
只有像树一类的复杂的数据结构,和排序或更复杂的算法,才用递归实现.
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
//jc(n - 1);改成
return jc(n - 1);看行不行;
}
else
{
return jcjg;
}
}
应该这样用,连接的时候不要指定数据库,分步操作和检测
if(!mysql_real_connect(character_ptr,"localhost","root","24157518",
NULL
,0,NULL,0))
printf("Error
connecting
to
server:
%s\n",
mysql_error(character_ptr));
if(!mysql_select_db(character_ptr,
"test_database"))
printf("Error
connecting
to
database:
%s\n",
mysql_error(character_ptr));