扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
答案是22
站在用户的角度思考问题,与客户深入沟通,找到茂南网站设计与茂南网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖茂南地区。
调用函数fun时,先计算fun(--x,--y); 再计算fun(x++,y++)
前缀 -- (或++):是先减(加)1后再将其结果代入运算
后缀 ++ (或--):是先代入数据后在对其进行加(减)1运算
故而
第一步:计算fun(--x,--y)时实际上代入的值为 fun(5,6) == 11; 即先将x和y减1后再代入
此时 x == 5, y == 6
第二步:计算fun(x++,y++)时,代入的值为fun(5,6) == 11; 即先将x和y代入运算然后再加1
此次调用后x == 6,y==7
第三步:计算fun(fun(x++,y++),fun(--x,--y)) ,此时实际上代入的值为 fun(11,11) == 22;
因此函数运行后 z 的值为 22; x 的值为6,y 的值为7
另外就是楼主最后一条打印语句出错了,应该是笔误吧:改为 printf("%d\n",z);
#include stdio.h
#include stdlib.h
#include time.h
int n,n1;
char fun(int op){if(op==0)return '+';else if(op==1)return '*';else if(op==2)return '-';else return '/';}
int Compute( int a, int b, int op )
{
int p;
if(op==0)p=a+b;else if(op==1)p=a*b;else if(op==2)p=a-b;else p=a/b;
if(n==p){n1++;
return 1;}
else
return 0;
}
void Print(int flag)
{
if(flag==1)printf("Right!\n");
else
printf("Not correct!\n");
}
void main()
{
srand((unsigned)time(NULL));
int a,b,op,i=0,num;
while(true)
{
if(i==10)break;
a=rand()%10+1;
b=rand()%10+1;
op=rand()%4;
if(a%b==0a=b)
{
i++;
printf("%d%c%d=",a,fun(op),b);
scanf("%d",n);
num=Compute(a,b,op);
Print(num);
}
}
printf("you grade is:%d,you falsed %d!\n",n1*10,10-n1);
}
你可以这么理解,比如我们定义了一个函数fun(),如果这个函数有返回值,那么在调用程序里面(比如主函数)就可以把这个函数当成一个数使用;如果没有返回值,那么通常他就是一个独立的语句存在。
比如fun函数里面有个return 0;表示返回值是零,那么在调用函数里面就可以存在诸如
a=fun();b=a+fun();if(fun()=0{};……这类的语句,表示a=0;b=a+0;if(00){};等等,当然也可能是返回一个变量的值,你个指针的值是一样的。
如果没有return 语句,那么函数没有返回值,调用函数里面就不能把他当做一个数值来使用,会出现:
fun();单独成句的语句,在fun()里面可能进行了一些操作,但不需要结果。
C语言自带的函数通常都有返回值,计算函数返回计算结果,操作函数返回操作结果(成功返回1,失败返回0)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流