☆逆光背景 2023-11-09 13:54 采纳率: 100%
浏览 65
已结题

在N个数中查找x的位置。

本题要求完成函数的设计,实现在数组中查找x的位置并返回主函数输出。如x不存在,则输出"Not found!"。

函数接口定义:
int find(int a[], int x );
裁判测试程序样例:
#include "stdio.h"
#define N 5
void main()
{
  int a[N],i; int x,k ;
  for(i=0;i<N;i++)
    scanf("%d",&a[i]);        
  scanf("%d",&x);   /* 输入被查找的x  */
  k=find(a,x);    /*   求x在a数组中的位置   */
  if(k==-1)   printf("Not found!");           
  else        printf("Loc is %d",k ); 
}
/*   编写的代码将放置到这里  */
int find(int a[], int x )
{
    int flag=0,k=0;
    for(int i=0;i<N;i++)
    {
    if(a[i]==x)
    {
    k=i+1;
    break;
    }
    else
    flag++;
    }
    if(flag==0)
    {
    k==-1;
    }
    return k;
}

这是测试代码:
10 8 5 6 7
9
运行结果:
Loc is 0
这是为什么?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-09 19:39
    关注

    【以下回答由 GPT 生成】

    在给定的代码中,我们首先定义了一个整型变量flag和一个整型变量kflag用于统计是否找到了匹配的数值xk用于记录x在数组中的位置。初始时,flagk都被赋值为0。

    接下来,我们使用一个循环遍历数组a,对于数组中的每一个元素a[i],我们检查是否与x相等。如果相等,说明找到了匹配的数值,将k更新为i+1,然后退出循环。如果不相等,将flag加1。循环结束时,如果flag仍然为0,说明数组中没有找到匹配的数值,将k赋值为-1。

    最后,我们根据k的值进行输出。如果k为-1,说明找不到匹配的数值,输出"Not found!";否则,输出x在数组中的位置。

    在给定的测试代码中,输入的数组为10、8、5、6、7,要查找的数值为9。我们可以看到,在循环中,数组中的第一个元素10与9不相等,flag加1,此时flag的值为1。其他元素也与9不相等,flag的值仍然为1。循环结束后,flag的值为1,不等于0,所以k的值不会被赋值为-1。因此,最后的输出是"Loc is 0"。

    综上所述,代码的输出结果是正确的。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月9日