用c语言定义一个数组s,除了某个元素只出现一次以外,其余每个元素均出现两次及以上,输出那个只出现了一次的元素
时间: 2023-09-16 13:05:36 浏览: 58
### 回答1:
可以用异或运算来解决这个问题,因为两个相同的数异或起来结果为0,而0与任何数异或都是那个数本身。
具体实现如下:
```c
#include <stdio.h>
int main() {
int s[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 8};
int size = sizeof(s) / sizeof(s[0]);
int result = 0;
for (int i = 0; i < size; i++) {
result ^= s[i];
}
printf("那个只出现了一次的元素是:%d\n", result);
return 0;
}
```
这段代码会输出:那个只出现了一次的元素是:7
### 回答2:
可以使用异或运算来解决这个问题。首先,将数组的第一个元素赋值给一个变量res,然后从数组的第二个元素开始,依次对res进行异或运算,直到数组遍历完成。最后,res的值就是只出现一次的元素。
具体的代码如下所示:
```c
#include <stdio.h>
int main() {
int s[] = {1, 2, 2, 3, 3, 4, 4, 5, 5};
int n = sizeof(s) / sizeof(s[0]);
int res = s[0];
for (int i = 1; i < n; i++) {
res ^= s[i];
}
printf("只出现了一次的元素是:%d\n", res);
return 0;
}
```
在这个例子中,数组s中除了数字1之外,其余每个元素都出现了两次。所以输出的结果将会是1。
需要注意的是,这个方法只适用于解决只有一个元素出现一次的情况。如果有多个元素只出现一次,就无法使用这种方法解决。