生成k个小于n的互不相同的随机数出错
环境:windows xp, vc6.0
#include <stdio.h>#include <stdlib.h>#include<time.h>#define N 20#define K 10void swap(int *a, int *b){ *a ^= *b; *b ^= *a; *a ^= *b;}void generateDiffRandV1(int a[], int n, int k){ int i; time_t t; for (i = 0; i < n; i++){ a[i] = i; } srand((int)time(&t)); for (i = 0; i < k; i++){ swap(&a[i], &a[i+rand()%(n-i)]); }}int main(){ int a[N]; generateDiffRandV1(a, N, K); printArray(a, K); return 0;}void swap(int *a, int *b){ if (a != b) { *a ^= *b; *b ^= *a; *a ^= *b; }}
[解决办法]
void swap(int *a, int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
如果a和b的值一样,是什么结果?