已知一个数组有10个整数元素,从键盘输入一个数,在数组中查找并输出位置,若未找到输出“查无此数”
时间: 2023-04-25 13:01:14 浏览: 231
可以使用循环遍历数组,逐个比较数组元素和输入的数是否相等,若相等则输出该元素的位置。如果遍历完整个数组都未找到相等的元素,则输出“查无此数”。具体实现可以参考以下代码:
#include <stdio.h>
int main()
{
int arr[10] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10}; // 假设数组为{1, 3, 5, 7, 9, 2, 4, 6, 8, 10}
int num, i, pos = -1; // pos初始化为-1,表示未找到
printf("请输入一个整数:");
scanf("%d", &num);
for (i = 0; i < 10; i++) {
if (arr[i] == num) {
pos = i; // 找到相等的元素,记录位置
break; // 找到即可退出循环
}
}
if (pos == -1) {
printf("查无此数\n");
} else {
printf("该数在数组中的位置为:%d\n", pos);
}
return 0;
}
相关问题
已知一个数组有10个整数元素,从键盘输入一个数,在数组中查找并输出位置,若未找到输出“查无此数”;
可以使用循环遍历数组,逐个比较数组元素和输入的数是否相等,若相等则输出该元素的位置,若遍历完整个数组仍未找到相等的元素,则输出“查无此数”。具体代码如下:
#include <stdio.h>
int main()
{
int arr[10] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10}; // 初始化数组
int num, i, pos = -1; // pos表示找到的位置,初始值为-1
printf("请输入一个数:");
scanf("%d", &num);
for (i = ; i < 10; i++) // 循环遍历数组
{
if (arr[i] == num) // 如果找到相等的元素
{
pos = i; // 记录位置
break; // 跳出循环
}
}
if (pos == -1) // 如果未找到相等的元素
{
printf("查无此数\n");
}
else // 如果找到了相等的元素
{
printf("该数在数组中的位置为:%d\n", pos);
}
return ;
}
已知一个数组有10个整数元素,该数组从大到小已经排序,从键盘输入一个数,用折半查找的方法查找并输出位置,若未找到输出“查无此数”;
可以使用折半查找的方法在已排序的数组中查找输入的数。具体步骤如下:
从键盘输入一个数,保存到变量中。
定义两个变量left和right,分别表示数组的左右边界。初始时,left为0,right为数组长度减1。
进入循环,判断left是否小于等于right。如果不成立,说明已经查找完毕,未找到该数,输出“查无此数”。
计算中间位置mid,即mid=(left+right)/2。
判断中间位置的数是否等于输入的数。如果相等,说明已经找到该数,输出位置mid。
如果中间位置的数大于输入的数,说明要查找的数在左半部分,将right更新为mid-1。
如果中间位置的数小于输入的数,说明要查找的数在右半部分,将left更新为mid+1。
回到步骤3,继续查找。
下面是示例代码:
# 定义已排序的数组
arr = [10, 8, 6, 5, 4, 3, 2, 1, 0, -1]
# 从键盘输入一个数
num = int(input("请输入要查找的数:"))
# 定义左右边界
left = 0
right = len(arr) - 1
# 进入循环
while left <= right:
# 计算中间位置
mid = (left + right) // 2
# 判断中间位置的数是否等于输入的数
if arr[mid] == num:
print("位置为:", mid)
break
# 如果中间位置的数大于输入的数,更新右边界
elif arr[mid] > num:
right = mid - 1
# 如果中间位置的数小于输入的数,更新左边界
else:
left = mid + 1
else:
print("查无此数")
注意,这里使用了else语句,它会在while循环正常结束时执行,即当left>right时。如果在循环中找到了该数,会执行break语句跳出循环,此时else语句不会执行。如果循环结束时仍未找到该数,会执行else语句输出“查无此数”。
相关推荐
















