用C语言查找数组中的相同元素,并输出它的下标
时间: 2023-03-30 07:02:40 浏览: 581
可以使用双重循环来查找数组中的相同元素,具体代码如下:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 2, 6, 7, 8, 2};
int len = sizeof(arr) / sizeof(arr[]);
int i, j;
for (i = ; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] == arr[j]) {
printf("相同元素的下标为:%d, %d\n", i, j);
}
}
}
return ;
}
```
输出结果为:
```
相同元素的下标为:1, 5
相同元素的下标为:1, 9
相同元素的下标为:5, 9
```
相关问题
1)打印数组元素; (2)输入一个身高值(例如156),在数组中查找该数值,如果找到,则打印该数值在数组中第一次 出现的下标,若未找到,则打印“无该身高的学生”。 (3)查找数组中是否有相同的身高值,若有,则打印身高值, 出现总次数,和对应的数组下标;否 则,输出“无身高相同的学生”。 假设条件: (1)数组数据为正整数 (2)数组中只有一个相同的身高值,并且相同身高值的出现次 数只有两次。c语言
1)打印数组元素:
可以使用循环遍历数组,逐个打印数组元素,例如:
for(int i=; i<数组长度; i++){
printf("%d ", 数组[i]);
}
2)输入一个身高值(例如156),在数组中查找该数值,如果找到,则打印该数值在数组中第一次出现的下标,若未找到,则打印“无该身高的学生”。
可以使用循环遍历数组,逐个查找身高值,如果找到,则打印该数值在数组中第一次出现的下标,例如:
int height = 156; // 要查找的身高值
int index = -1; // 身高值在数组中第一次出现的下标,初始化为-1
for(int i=; i<数组长度; i++){
if(数组[i] == height){
index = i;
break;
}
}
if(index == -1){
printf("无该身高的学生");
}else{
printf("%d", index);
}
3)查找数组中是否有相同的身高值,若有,则打印身高值, 出现总次数,和对应的数组下标;否则,输出“无身高相同的学生”。
可以使用两层循环遍历数组,逐个比较身高值,如果有相同的身高值,则记录身高值、出现总次数和对应的数组下标,例如:
int sameHeight = -1; // 相同的身高值,初始化为-1
int count = ; // 相同身高值的出现总次数,初始化为
int index = -1; // 相同身高值在数组中第一次出现的下标,初始化为-1
for(int i=; i<数组长度; i++){
for(int j=i+1; j<数组长度; j++){
if(数组[i] == 数组[j]){
sameHeight = 数组[i];
count = 2;
index = i;
break;
}
}
if(sameHeight != -1){
break;
}
}
if(sameHeight == -1){
printf("无身高相同的学生");
}else{
printf("%d %d %d", sameHeight, count, index);
}
C语言已知一维数组中的10个元素各不相同,但已按升序排列。查找数组中是否存在值为key的数组元素。如果有,输出相应的下标,否则输出not found。你有什么好方法吗? 输入要求 先从键盘输入10个升序排列的整数,然后再输入一个待查找的数据key。 输出要求 输出对应结果。若不存在则输出not found.
这个问题属于计算机科学中的算法问题,我可以回答。可以使用二分查找算法来在该已知一维数组中查找指定的元素。具体方法如下:
1. 定义一个函数,输入参数为已知数组和待查找元素key,返回值为待查找元素在数组中的下标或-1(表示未找到)。
2. 定义左侧指针left为0,右侧指针right为数组长度减一。
3. 通过while循环查找元素。首先判断left指针是否小于或等于right指针,如果是则进行下一步,否则表示未找到。
4. 定义中间指针mid为左侧指针和右侧指针的平均值。
5. 判断中间指针指向的元素是否等于待查找元素key,如果是则返回mid,否则进行下一步。
6. 判断中间指针指向的元素是否大于待查找元素key,如果是则将右侧指针right更新为mid减一,否则将左侧指针left更新为mid加一。
7. 回到步骤3,继续查找。
如果最终未找到,则返回-1。
具体实现代码如下:
```
#include <stdio.h>
int binary_search(int arr[], int key, int len)
{
int left = 0, right = len - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main()
{
int arr[10];
printf("请输入10个升序排列的整数:");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
int key;
printf("请输入待查找的数据:");
scanf("%d", &key);
int index = binary_search(arr, key, 10);
if (index == -1) {
printf("not found\n");
} else {
printf("%d\n", index);
}
return 0;
}
```
当输入待查找的数据为已知数组中存在的元素时,程序会输出该元素在数组中的下标;当输入待查找的数据为已知数组中不存在的元素时,程序会输出not found。
阅读全文