我是靠谱客的博主 安静咖啡,最近开发中收集的这篇文章主要介绍对于p255.c的讨论-用功能函数实现找数据和定位数据对于p255.c的讨论题目描述解题代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 对于p255.c的讨论
  • 题目描述
    • 核心条件:
    • 原代码
  • 解题代码
    • 解题分析

对于p255.c的讨论

题目描述

 	程序P255.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位置添加代码或将__________换成代码)——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
	程序的功能是:从键盘分别读入5个数到arrA中、8个数至arrB中,再读入一个数num(这些数均≥0),然后分别调用自定义函数在数组arrA和arrB中查找大于num的最小数(不考虑有多个最小值的情况)所在位置的下标、再输出该下标。

在这里插入图片描述

核心条件:

  1. 处理一个数组,找出位置
  2. 这个位置上的数的特点:大于num,且最小
  3. 返回位置,即索引值

原代码

#include <stdio.h>

/* userCode(<70字符): 自定义函数之原型声明 */
______________________________

int main(void)
{
	int arrA[5], arrB[8], num, minPosA, minPosB;

	printf("请输入5个数:");
	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
	printf("请输入8个数:");
	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
	printf("请再输入一个数:");
	scanf("%d", &num);

	______________________________  /* userCode(<50字符): 调用函数查找在arrA中大于num的最小数所在的下标 */
	if (-1 == minPosA)
	{
		printf("narrA: not Find!");
	}
	else
	{
		printf("nminPos(arrA) = %d", minPosA);
	}

	______________________________  /* userCode(<50字符): 调用函数查找在arrB中大于num的最小数所在的下标 */
	if (-1 == minPosB)
	{
		printf("narrB: not Find!n");
	}
	else
	{
		printf("nminPos(arrB) = %dn", minPosB);
	}

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */




解题代码

#include <stdio.h>

/* userCode(<70字符): 自定义函数之原型声明 */
int getPos(int *arr, int n, int num);

int main(void)
{
    int arrA[5], arrB[8], num, minPosA, minPosB;

    printf("请输入5个数:");
    scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    printf("请输入8个数:");
    scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    printf("请再输入一个数:");
    scanf("%d", &num);

    minPosA = getPos(arrA, 5, num); /* userCode(<50字符): 调用函数查找在arrA中大于num的最小数所在的下标 */
    if (-1 == minPosA)
    {
        printf("narrA: not Find!");
    }
    else
    {
        printf("nminPos(arrA) = %d", minPosA);
    }

    minPosB = getPos(arrB, 8, num); /* userCode(<50字符): 调用函数查找在arrB中大于num的最小数所在的下标 */
    if (-1 == minPosB)
    {
        printf("narrB: not Find!n");
    }
    else
    {
        printf("nminPos(arrB) = %dn", minPosB);
    }

    return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int getPos(int *arr, int n, int num)
{
    int i = 0;
    int tmp;
    int pos = -1; // 位置,默认找不到,返回-1

    // 第一个符合:大于num的数,作为最小的数
    for (i = 0; i < n; i++)
    {
        if (arr[i] > num)
        {
            tmp = arr[i];
            pos = i;
            break;
        }
    }
    // 接下来看还有没有更小的符合大于num的数
    for (; i < n; i++)
    {
        if (arr[i] > num && arr[i] < tmp)
        {
            tmp = arr[i];
            pos = i;
        }
    }

    return pos;
}

解题分析

  1. 输入数组,肯定会再传一个数据长度n
  2. 遍历数组,找符合条件的数据,记下相应的下标
  3. 由于有个最小的比较,先找一个符合条件的擂主,再打擂更新即可
  4. 功能函数,返回的就是这个下标
  5. 功能函数,入口包括 【数组,个数,num数】 三个即 可

最后

以上就是安静咖啡为你收集整理的对于p255.c的讨论-用功能函数实现找数据和定位数据对于p255.c的讨论题目描述解题代码的全部内容,希望文章能够帮你解决对于p255.c的讨论-用功能函数实现找数据和定位数据对于p255.c的讨论题目描述解题代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部