这就是个很简单的程序,没有错误但运行出来数字不对。

这就是个很简单的程序,没有错误但运行出来数字不对。,第1张

咳,你这程序问题挺多的,首先:

1、c中函数定义前要声明,在你的main函数前要先声明好你的函数。

2、所谓函数,在有一组输入时,应该有且仅有一组对应的输出。在以前学数学的时候,老师有没有说过函数y=f(x),当x为一个值时,可以唯一确定到一个y值(大概这个意思吧),比如正比例函数,二次函数,三角函数都是如此。因此,你的这个call函数要么只能返回一个和,要么只能返回一个平均数,不能两个都返回。我试了一下,你这样写先返回sum,再返回avg,实际返回的还是avg(C这个还行,要是java中直接就编译不过,这种写法已经违反了java的语法了)。

3、另外就是你根本没有在main里面调用你写的这个函数,函数定义在那里,却不使用,它好孤独。

4、函数定义里的这些int a,int b这些形参就是给你拿来赋值的,你直接在函数体里把a赋值成1,b赋值成2,那形参就失去了它们的意义了。

个人认为比较正确规范的写法应该是这样:

#include<stdio.h>

int callSum(int,int,int)

int callAvg(int,int,int,int)

int main(){

int a=1

int b=2

int c=3

int d=3

int sum=0

int avg=0

sum=callSum(a,b,c)

printf("和:%d\n",sum)

avg = callAvg(a,b,c,d)

printf("平均数:%d\n",avg)

return 0

}

int callSum(int a,int b,int c){

int sum = a +b +c

return sum

}

int callAvg(int a,int b,int c,int d){

int avg =(a+b+c)/d

return avg

}

你可以试试,运行结果:

调用Waiter(int)方法传递参数1,Waiter(int)方法中调用Waiter(String)方法传递参数"Welcome",Waiter(String)中先调用Waiter()方法输出Good-bye,然后输出参数s的内容Welcome。

strcmp的函数运行原理大致如下:

int strcmp(char *str1,char *str2)

{

int i

for(i=0str1[i] &&str2[i]i++)

{

if(str1[i]>str2[i]) return 1

if(str1[i]<str2[i] return -1

}

return 0

}

可以看到,虽然"a\0"有三个字节,"a"只有两个字节。但比较到各自的第二个单元时,因为两者都是'\0',所以循环结束,返回0。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11957685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存