请问下面的代码(c语言)哪里错了?

#include<stdio.h>intsum(int,int);intsub(int,int);intplus(int,int);inteil(int,int);int... #include<stdio.h>
int sum(int,int);
int sub(int,int);
int plus(int,int);
int eil(int,int);
int rem(int,int);
int main()
{
int a,b;
printf("Input:");
scanf("%d%d",&a,&b);
printf("%d + %d = %d\n",a,b,sum(a,b));
printf("%d - %d = %d\n",a,b,sub(a,b));
printf("%d * %d = %d\n",a,b,plus(a,b));
printf("%d / %d = %d\n",a,b,eil(a,b));
printf("%d %% %d = %d\n",a,b,rem(a,b));
}
int sum(int a1,int b2)
{
int sum;
sum = a1 + b2;
}
int sub(int a1,int b2)
{
int sub;
sub = a1 - b2;

}
int plus(int a1,int b2)
{
int plus;
plus = a1 * b2;
}
int eil(int a1,int b2)
{
int eil;
eil = a1 / b2;
}
int rem(int a1,int b2)
{
int rem;
rem = a1 % b2;
}

最后面的取余算出来是错的(c语言初学者,刚刚学函数)
展开
 我来答
White_MouseYBZ
2019-04-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6294万
展开全部

在自定义函数的最后一个}前加一句return x;——x是要返回的值,如函数

int rem(int a1,int b2)
{
    int rem;
    rem = a1 % b2;
}

要改为

int rem(int a1,int b2)
{
    int rem;
    rem = a1 % b2;
    return rem;//加上这一句
}

函数都改为如下简单形式

int rem(int a1,int b2)
{
    return a1 % b2;
}
更多追问追答
追问
那为什么其他的函数不需要return呢?
追答
都需要!函数名前有返回值类型,不写返回语句就连编译都过不了——除非你的编译器太山寨!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2019-04-23 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
你不光取余的函数是错的,其他所有函数都是错的,因为没有返回值。
把rem = a1 % b2;改为return a1 % b2,其他所有函数同理。
更多追问追答
追问
那为什么取余的运算结果是错的,其他几个又对了?
追答
其他结果正确,只是一种巧合,因为函数的返回值通常放在EAX寄存器中,而你在计算时产生的结果也临时放在EAX寄存器中以便稍后赋值给变量。函数返回后父函数把EAX寄存器中的内容当做是被调函数的返回值,而此时EAX寄存器中的内容恰好是你想要返回的东西。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s332953358
2019-04-23 · TA获得超过124个赞
知道小有建树答主
回答量:76
采纳率:83%
帮助的人:14.5万
展开全部

rem函数,这个返回值。

int rem(int a1,int b2)
{
int rem;
rem = a1 % b2;

return rem;

}

编程要养成好习惯,每个函数都应该要有个返回值。

追问
嗯嗯知道了,但为什么就取余的结果是错的,其他几个是对的呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式