第9行和第11行式子两边位置放反了,把两处式子左右交换下即可。
修改如下:
#include <stdio.h>
int main(void){
int a,b,t,*p,*q;
a=10;
b=2;
p=&a;
q=&b;
t=*p; // 改变p指向位置的值前, 把p指向位置的值保存到变量t中
*p=*q; // 把p指向位置的值改变为q指针指向位置的值
*q=t; // 把q位置的值 改变为 t的值,通过以上三步,达到交换两个指针位置值的目的
printf("a=%d,b=%d",a,b);
return 0;
}
t是用于中间过渡的变量,所以在交换之间应该先给t进行赋值,存放起来,不然后面找不到
t=*p; // 因为下一步是要把p指针指向的位置的值给修改掉,那么就要提前先把p位置原本的值找个地方存放起来,不然就直接被覆盖,再也找不到
*p=*q; // 这里把p位置的值换成了q位置的值,这个时候,p/q两个位置的值都是q位置原本的值, 完成了对p位置的修改
*q=t; // 这里把事先保存在t的值赋值给q位置,完成对q位置的修改
#include <bits/stdc++.h>
using namespace std;
int Na,Nb,Useda[10005],Usedb[10005],ans;
int main(){
cin>>Na>>Nb;
ans=Na;
int x;
for(int i=0;i<Na;i++)
{
cin>>x;
Useda[x]=1;//标记A集合
}
for(int i=0;i<Nb;i++)
{
cin>>x;
Usedb[x]=1;//标记B集合
}
for(int i=0;i<=10000;i++)
if(Useda[i]==1&&Usedb[i]==1)//计算AB的差集
ans--;
cout<<ans;
return 0;
}