完成输入n个数,从(0~n-1)个数中找寻丢失的值(使用纯C)

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 代码分析
    • 小结

概要

本文将介绍一个用户输入处理的程序,其中包括从数组中寻找最小和最大值,并通过计算找出丢失的值的功能。以下是整体架构流程,技术名词解释,技术细节和小结。

整体架构流程

  1. 用户输入:程序接收用户输入的数组。
  2. 寻找最小和最大值:通过遍历数组找到其中的最小值和最大值。
  3. 计算丢失的值:根据数组的范围和已有值的列表,计算出缺失的值。

技术名词解释

  1. 数组:一种数据结构,用于存储多个相同类型的数据元素。
  2. 最小值和最大值:数组中的最小和最大的数值。
  3. 计算:进行数学或逻辑操作以获取特定结果。

代码分享

            while (1)
            {
                int array[10] = {0};
                int size_array = 0;

                printf("please input the sizo of the array\n");
                scanf("%d", &size_array);

                if (size_array < 0 || size_array > 9) // 限制取值范围
                    return -1;

                for (int i = 0; i < size_array; i++)
                {
                    printf("please input the %d number\n", i + 1);
                    scanf("%d", &array[i]);
                    // printf("the value of the %d number is: %d\n", i, array[i]);

                    if (array[i] < 0) // 47 < array[i] <58  48~57
                    {
                        printf("the input elements are not integers from figure\n");
                        i--; // 如果输入的为非0~9的数字,将本次循环的次数-1,希望下次还输入第i个数
                        continue;
                    }
                }

                int array_num_max = array[0]; // 假设数组内最大的数为array[0]
                int array_num_min = array[0]; // 假设数组内最小的数为array[0]
                int total_array_sum = 0;      // 计算总共的大小
                int total_size_array = sizeof(array) / sizeof(array[0]);

                for (int i = 0; i < total_size_array - 1; i++) // 拿到数组内最大的数和最小的数
                {
                    for (int j = i + 1; j < total_size_array; j++)
                    {
                        if (array[j] > array_num_max)
                            array_num_max = array[j];

                        if (array[j] < array_num_min && array[j] != 0)
                            array_num_min = array[j];
                    }
                }

                // printf("array_num_max :%d\n", array_num_max);
                // printf("array_num_min :%d\n", array_num_min);

                if (array_num_max == array_num_min + size_array)
                {
                    // 计算从最小数加到最大数的大小
                    for (int i = 0; i < size_array + 1; i++)
                    {
                        total_array_sum += array_num_min;
                        array_num_min++;
                    }
                    // printf("total_array_sum: %d\n", total_array_sum);

                    // 计算实际的大小
                    int actual_array_sum = 0;
                    for (int i = 0; i < size_array; i++)
                        actual_array_sum += array[i];
                    // printf("actual_array_sum: %d\n", actual_array_sum);

                    memset(array, 0, sizeof(array));
                    int missing_number = total_array_sum - actual_array_sum;
                    printf("missing_number: %d\n", missing_number);
                }

                else
                    printf("The input data does not match the format. Please re-enter\n");
            }

小结

通过编写一个程序,可以有效地处理用户输入的数组,并找到其中的最小和最大值,同时计算出可能丢失的值。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值