地址传递之跳蚤跳跳跳

 

[试题描述]

编写形如void fun(int *a, int *b, int t)的函数,该函数帮助电子跳蚤以y轴为对称轴从第一象限上的点跳到第二象限,再以x轴为对称轴跳到第三象限,再以y轴为对称轴跳到第四象限,再以x轴为对称轴跳到第一象限……如此跳来跳去,参数t为跳的次数(t > 0);最终该函数将形参a、b指向的整数赋值为电子跳蚤最后的落点。

在主函数main()中输入三个正整数m、n、t,m、n分别代表第一象限的点坐标,t代表跳的次数;然后调用函数fun(int *, int *, int),并将整数m、n的地址和整数t作为该函数的实参传入;函数调用完毕后输出整数m、n的值。

[输入]

输入三个正整数m、n、t,以空格分开,m、n代表第一象限点的坐标,t代表跳的次数。

[输出]

输出函数fun(int *, int *, int)调用完毕后,m、n的值。

[输入示例1]

12 3 5

[输出示例1]

-12 3

[输入示例2]

12 3 2

[输出示例2]

-12 -3

[输入示例3]

12 3 3

[输出示例3]

12 -3

[输入示例4]

12 3 8

[输出示例4]

12 3

[数据范围]

输入和输出均为int范围的整数

#include<stdio.h>
void fun(int m, int n, int t)
{
	int i;
	for(i=1;i<=t;i++)
	{
	switch(t%4)
	{
		case 0:printf("%d %d",m,-n);break;
		case 1:printf("%d %d",m,n);break;
		case 2:printf("%d %d",-m,n);break;
		case 3:printf("%d %d",-m,-n);break;
		default:printf("error\n");
	}
	}
}
void fun(int *pm, int *pn, int *pt)
{
	int i;
	for(i=1;i<=*pt;i++)
	{
		switch(*pt%4)
		{
			case 0:printf("%d %d",*pm,*-pn);break;
			case 1:printf("%d %d",*pm,*pn);break;
			case 2:printf("%d %d",*-pm,*pn);break;
			case 3:printf("%d %d",*-pm,*-pn);break;
			default:printf("");
		}
	}
}
int main()
{
	int m,n,t;
	int *pm=&m,*pn=&n;
	scanf("%d %d %d",&m,&n,&t);
	fun(pm,pn);
	printf("%d %d",m,n);
return 0;
}

 error C2171: “-”:“int *”类型的操作数非法
 error C2171: “-”:“int *”类型的操作数非法
error C2171: “-”:“int *”类型的操作数非法

error C2661: “fun”: 没有重载函数接受 2 个参数 

求大佬可以解答一下这个地址传递负号怎么传递?实在搞不明白了

还有为啥“fun”: 没有重载函数接受 2 个参数 ??????

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值