C语言函数返回值异常

2025-01-02 15:16:42
推荐回答(4个)
回答1:

你说的是函数的返回者吧函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值。对函数的值(或称函数返回值)有以下一些说明: 1) 函数的值只能通过return语句返回主调函数。 return 语句的一般形式为: return 表达式;或者为: return (表达式);该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 2) 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。 3) 如函数值为整型,在函数定义时可以省去类型说明。 4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为: void s(int n) { …… } 一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型。

回答2:

还没弄懂素数概念吧!n%k的结果只要有一个为0,就不是素数,就必须中断循环!就你的程序举例吧!
for(k=2;k<=n/2;k++)
if(n%k==0)
yes=0;
else
yes=1;
return
yes;
你的程序等价于
for(k=2;k<=n/2;k++)
{
if(n%k==0)
yes=0;
else
yes=1;
}
return
yes;注意编程规范
令n=9,循环从k=2-->k=4
k=2,yes=1;k=3
yes=0(此时已经判断出9为非素数)但你的循环未中断,继续执行k=4
yes=1
此时循环已经结束
最终结果yes=1,程序判断9为素数,显然出错了!
把你的程序和二楼写的好好比较一下,二楼的程序很对。
希望你能有所收获!

回答3:

在c中任何函数都有返回值,这个是定下的,主函数也有返回值
返回值分几个方面,逐个说一下
主函数的返回值,这个一般用户用不到,程序执行的时候,系统会根据这个返回值来判断程序的运行结果
不管定义神马类型的返回值,在tc中默认为void型(这个可以省略),可以根据需要自己定义都可以。
vc中好像必须写,要不然编译系统提示出错

子函数的返回值,分两类
void,也就是在不需要子函数返回数值的时候用到。注意的是不需要不代表没有返回值。调用成功返回1,不成功返回0,我好像在哪里看到过这个说法,我不确定
非void型,这个返回值类型根据定义来返回
值得注意的是,在子函数中,只要执行return一定结束子函数,不管后面有多少代码

一些系统自带的函数,如printf,scanf等,最好了解他的返回值

回答4:

根据你的程序来看应该是一个void型,
不过你这是一个交换数据函数,如果这样传进来,是修改不了原址的
而如果你想输出交换后的结果,就只接在函数里面输出,因为等出了这个函数,a和b的值是不会变的。