[试题描述]
编写形如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 个参数 ??????