c语言程序,求答案和解题过程。

#include<stdio.h>intadds(intx,inty);voidmain(){inta=5,b=-1,c;c=adds(a,b);printf("%d,"... #include<stdio.h>
int adds(int x,int y);
void main()
{int a=5,b=-1,c;
c=adds(a,b);
printf("%d,",c);
c=adds(a,b); printf("%d\n",c);
}
int adds(int x,int y)
{static int m=0,n=3;
n*=++m;
m=n%x+y++;
return(m);}
展开
 我来答
自我编程
2018-02-20 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

#include<stdio.h>
int adds(int x,int y);
void main()
{
    int a=5,b=-1,c;
    printf("调用函数add,将a,b的值作为参数进行传值,a,b值不变\n");
    c=adds(a,b);
    printf("运行函数add 静态变量m初值0  n初值3\n");
    printf("执行n*=++m;  m先++再取值运算, n=3\n");
    printf("执行m=n%x+y++;  y先取值运算再++  m=3%5-1, m=2  ,返回打印m的值 打印“2,”\n");


    printf("再次调用函数add 传参值不变,静态变量值保留,m初值2  n初值3\n");
    printf("执行n*=++m;  m先++再取值运算, n=9\n");
    printf("执行m=n%x+y++;  y先取值运算再++  m=9%5-1, m=3  ,返回打印m的值 打印“3”\n");

    printf("所以最终打印:\n");
    printf("%d,",c);
    c=adds(a,b); printf("%d\n",c);
}
int adds(int x,int y)
{
    static int m=0,n=3;
    n*=++m;
    m=n%x+y++;
    return(m);
}
White_MouseYBZ
2018-02-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6636万
展开全部
输出是2,3。
n*=++m;——n=3*1==3。
m=n%x+y++;——m=3%5+(-1)=3-1==2。所以第一次输出2,。
n*=++m;——n=3*3==9。
m=n%x+y++;——m=9%5+(-1)=4-1==3。所以第二次输出3。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式