whatdocument 2023-03-11 17:57 采纳率: 100%
浏览 173
已结题

c语言-查找数据,定义两个函数

6-7 查找数据
分数 5
作者 余贞侠
单位 成都信息工程大学
调用自定义函数Input从键盘读入数据到数组Arr中,读满20个数或者遇到-9999结束。再读入一个数num,然后调用自定义函数Search在数组arrA中查找num,输出查找的位置信息(下标从0计算),没有找到输出“not Find!”

函数接口定义:

int Input(int *p,int n);
int Search(int *p, int n, int num);

Input函数将数据读入数组中并返回实际读入的元素个数; Search函数返回查找num的位置信息,没有找到返回-1

裁判测试程序样例:

#include<stdio.h>
int Input(int *p,int n);
int Search(int *p, int n, int num);

int main(void)
{
        int Arr[20],cnt=0, num, Pos;
         cnt = Input(Arr,20);
         scanf("%d", &num);    
    
         Pos = Search(Arr,cnt,num) ;  
        if (-1 == Pos)
        {
                printf("not Find!\n");
        }
        else
        {
                printf("%d\n", Pos);
        }

        return 0;
}

/* 请在这里填写答案 */
输入样例:
18 99 45 33 66 3 11 57 70 100 48 -9999
11
输出样例:
6
输入样例:
18 99 45 -33 66 23 101 -57 70 70 28 999 -45 33 66 3 11 57 80 10
100
输出样例:
not Find!

求解,还有为什么输入一行以后会直接输出。

  • 写回答

5条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-11 18:34
    关注

    基于Monster 组和GPT的调写:

    
    #include <stdio.h>
    
    int Input(int *p, int n) {
        int cnt = 0;
        while (cnt < n) {
            int x;
            scanf("%d", &x);
            if (x == -9999) break;
            p[cnt++] = x;
        }
        return cnt;
    }
    
    int Search(int *p, int n, int num) {
        for (int i = 0; i < n; i++) {
            if (p[i] == num) return i;
        }
        return -1;
    }
    
    int main(void) {
        int Arr[20], cnt = 0, num, Pos;
        cnt = Input(Arr, 20);
        scanf("%d", &num);
        Pos = Search(Arr, cnt, num);
        if (-1 == Pos) {
            printf("not Find!\n");
        } else {
            printf("%d\n", Pos);
        }
        return 0;
    }
    
    

    img

    img

    输入一行以后会直接输出,可能是在终端中输入完一行后按下回车键,这时回车键也被当做一个字符读入了,导致程序继续往下执行。可以在每次调用scanf函数后加上一个额外的getchar函数来读取回车键。例如,将scanf("%d", &num);修改为scanf("%d", &num); getchar();。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!