咳,你这程序问题挺多的,首先:
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)