C#基础46-50

server/2024/11/27 23:07:18/

46.数组x中有n个数,求出奇数的个数cn1和偶数的个数cn2以及数组x下标为偶数的元素值的算术平均值pj(保留2位小数)。结果cn1,cn2,pj输出到控制台。

47.求出10000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cn以及这些数的和sum。

48.数组a中存放有任意10个1000至9999之间的数。请编制函数其功能是:要求按每个数的后三位的大小进行降序排列,然后将排列后顺序数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数把结果b输出到控制台中。

例:处理前 9012 5099 6012 7025 8088      处理后 5099 8088 7025 6012 9012

49.数组a中存有n个数,请编制一函数,其功能是:求出所有这些数是素数的个数CNT,再求出所有满足此条件的数的平均值PJZ1,以及不满足条件的四位数平均值PJZ2,最后调用函数把结果CN,PJZ1,PJZ2输出到控制台.

50.数组a中存放有n个数,求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数CNT,再把所有满足此条件的数平均值PJZ1,以及不满足条此条件的数平均值PJZ2,最后调用函数把结果CNT及PJZ1,PJZ2输出。

46、跟上一篇的44类型一样,只不过变成偶数了,代码效果图如下:

47、我们首先定义两个变量cnsum分别用来统计满足条件的四位数的个数和它们的和。然后,我们使用一个for循环遍历所有的四位数,并使用整数除法和模运算来分别获取四位数的千位、百位、十位和个位上的数字。接下来,我们检查这些数字是否满足给定的两个条件:

  1. 千位数字与百位数字之和等于十位数字与个位数字之和。
  2. 千位数字与百位数字之和等于个位数字与千位数字之差的10倍。

如果一个四位数同时满足这两个条件,我们就增加cn的值,并将这个四位数加到sum上。

最后,我们在控制台上输出满足条件的四位数的个数cn和它们的和sum

代码如下

 private static void Main(string[] args)
 {
     int cn = 0; // 符合条件的四位数的个数
     int sum = 0; // 符合条件的四位数的和

     // 遍历1000到9999之间的所有四位自然数
     for (int i = 1000; i <= 9999; i++)
     {
         // 获取千位、百位、十位和个位上的数字
         int thousand = i / 1000;
         int hundred = (i % 1000) / 100;
         int ten = (i % 100) / 10;
         int one = i % 10;

         // 检查是否满足给定的条件
         if (thousand + hundred == ten + one &&
             thousand + hundred == (one - thousand) * 10)
         {
             cn++; // 增加符合条件的数的个数
             sum += i; // 累加符合条件的数的和
         }
     }

     // 输出结果
     Console.WriteLine($"符合条件的四位自然数的个数 cn: {cn}");
     Console.WriteLine($"这些数的和 sum: {sum}");
 }

48、我们要定义一个函数实现这样的方法SortArray函数使用了C#的Array.Sort方法,并传入了一个自定义的比较器。这个比较器首先检查两个数的后三位是否相等,如果相等,则按原始数值升序排列;如果不相等,则按后三位数字的降序排列。

Main方法定义了一个示例数组a,调用SortArray函数对数组进行排序,并将排序后的数组输出到控制台。代码如下:

private static void Main(string[] args)
{
    // 示例数组a,你可以替换为其他数组以进行测试
    int[] a = { 9012, 5099, 6012, 7025, 8088 };
    int[] b = SortArray(a); // 调用函数对数组a进行排序并存储结果到数组b

    // 输出排序后的数组b
    Console.WriteLine("排序后的数组b:");
    foreach (int number in b)
    {
        Console.Write(number + " ");
    }
}

// 按照指定规则对数组进行排序的函数
static int[] SortArray(int[] a)
{
    Array.Sort(a, (x, y) =>
    {
        // 提取后三位数字
        int lastThreeDigitsX = x % 1000;
        int lastThreeDigitsY = y % 1000;

        // 比较后三位数字,如果相等则比较整个数值
        if (lastThreeDigitsX == lastThreeDigitsY)
        {
            return x.CompareTo(y); // 如果后三位数字相等,按升序排列
        }
        else
        {
            return lastThreeDigitsY.CompareTo(lastThreeDigitsX); // 否则按后三位数字降序排列
        }
    });

    return a; // 返回排序后的数组
}

49、我们需要代码定义了一个名为CalculatePrimes的函数,它接收一个整数数组a作为参数,计算数组中素数的个数CNT,以及满足和不满足素数条件的元素的平均值PJZ1PJZ2。最后,Main方法调用CalculatePrimes函数,并将结果输出到控制台。代码如下:

private static void Main(string[] args)
{
    // 示例数组a,你可以替换为其他数组以进行测试
    int[] a = { 11, 13, 14, 17, 19, 20, 21 };
    var results = CalculatePrimes(a); // 调用函数计算统计信息

    // 输出结果到控制台
    Console.WriteLine($"所有这些数是素数的个数 CNT: {results.CNT}");
    Console.WriteLine($"所有满足条件的数的平均值 PJZ1: {results.PJZ1:F2}");
    Console.WriteLine($"不满足条件的数的平均值 PJZ2: {results.PJZ2:F2}");
}

// 计算数组中素数的个数CNT,以及满足和不满足条件的元素的平均值PJZ1和PJZ2
static (int CNT, double PJZ1, double PJZ2) CalculatePrimes(int[] a)
{
    double sumOfPrimes = 0; // 素数的总和
    double sumOfNonPrimes = 0; // 非素数的总和
    int countOfPrimes = 0; // 素数的个数
    int countOfNonPrimes = 0; // 非素数的个数

    foreach (int number in a)
    {
        bool isPrime = true; // 假设当前数是素数
        if (number > 1) // 小于等于1的数不是素数
        {
            for (int i = 2; i <= Math.Sqrt(number); i++)
            {
                if (number % i == 0) // 如果能被任何小于等于其平方根的数整除,则不是素数
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                sumOfPrimes += number; // 累加素数
                countOfPrimes++;
            }
            else
            {
                sumOfNonPrimes += number; // 累加非素数
                countOfNonPrimes++;
            }
        }
    }

    double pjz1 = countOfPrimes > 0 ? sumOfPrimes / countOfPrimes : 0; // 计算满足条件的数的平均值
    double pjz2 = countOfNonPrimes > 0 ? sumOfNonPrimes / countOfNonPrimes : 0; // 计算不满足条件的数的平均值

    return (CNT: countOfPrimes, PJZ1: pjz1, PJZ2: pjz2); // 返回统计信息
}

50、我们需要在代码里定义一个名为 AnalyzeArray 的函数,它接受一个整数数组 a 作为参数,并计算出数组中满足个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数 CNT,以及满足和不满足条件的数的平均值 PJZ1 和 PJZ2。最后,Main 方法调用 AnalyzeArray 函数,并将结果输出到控制台。代码如下:

private static void Main(string[] args)
{
    // 示例数组a,你可以替换为其他数组以进行测试
    int[] a = { 1234, 5678, 9012, 4321, 3210, 8765 };
    var results = AnalyzeArray(a); // 调用函数分析数组a

    // 输出结果到控制台
    Console.WriteLine($"个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数 CNT: {results.CNT}");
    Console.WriteLine($"满足条件的数的平均值 PJZ1: {results.PJZ1:F2}");
    Console.WriteLine($"不满足条件的数的平均值 PJZ2: {results.PJZ2:F2}");
}

// 分析数组a,计算满足条件的数的个数CNT,以及平均值PJZ1和PJZ2
static (int CNT, double PJZ1, double PJZ2) AnalyzeArray(int[] a)
{
    double sumOfSatisfied = 0; // 满足条件的数的总和
    double sumOfNotSatisfied = 0; // 不满足条件的数的总和
    int countOfSatisfied = 0; // 满足条件的数的个数
    int countOfNotSatisfied = 0; // 不满足条件的数的个数

    foreach (int number in a)
    {
        int thousand = number / 1000; // 千位上的数
        int hundred = (number % 1000) / 100; // 百位上的数
        int ten = (number % 100) / 10; // 十位上的数
        int one = number % 10; // 个位上的数

        // 判断条件是否满足
        if (one - thousand - hundred - ten > 0)
        {
            sumOfSatisfied += number; // 累加满足条件的数
            countOfSatisfied++;
        }
        else
        {
            sumOfNotSatisfied += number; // 累加不满足条件的数
            countOfNotSatisfied++;
        }
    }

    double pjz1 = countOfSatisfied > 0 ? sumOfSatisfied / countOfSatisfied : 0; // 计算满足条件的平均值
    double pjz2 = countOfNotSatisfied > 0 ? sumOfNotSatisfied / countOfNotSatisfied : 0; // 计算不满足条件的平均值

    return (CNT: countOfSatisfied, PJZ1: pjz1, PJZ2: pjz2); // 返回统计信息
}


http://www.ppmy.cn/server/145460.html

相关文章

基于DVB-T的COFDM+16QAM+LDPC图传通信系统matlab仿真,包括载波同步,定时同步,信道估计

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 图传测试&#xff1a; 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理…

蓝桥杯每日真题 - 第23天

题目&#xff1a;&#xff08;直线&#xff09; 题目描述&#xff08;12届 C&C B组C题&#xff09; 解题思路&#xff1a; 题目理解: 在平面直角坐标系中&#xff0c;从给定的点集中确定唯一的直线。 两点确定一条直线&#xff0c;判断两条直线是否相同&#xff0c;可通过…

IDEA隐藏文件或文件夹

1.问题来源 idea开发springboot项目时&#xff0c;有时会有很多额外的包或文件出现&#xff0c;如.iml、.idea、build等。这些包对业务代码开发没有任何影响&#xff0c;但影响idea项目结构效果&#xff0c;看起来很不舒服&#xff0c;这就可以使用改设置&#xff0c;屏蔽这些文…

【vue3实现微信小程序】每日专题与分页跳转的初步实现

快速跳转&#xff1a; 我的个人博客主页&#x1f449;&#xff1a;Reuuse博客 新开专栏&#x1f449;&#xff1a;Vue3专栏 参考文献&#x1f449;&#xff1a;uniapp官网 免费图标&#x1f449;&#xff1a;阿里巴巴矢量图标库 ❀ 感谢支持&#xff01;☀ 前情提要 &#x…

EasyExcel: 结合springboot实现表格导出入(单/多sheet), 全字段校验,批次等操作(全)

全文目录,一步到位 1.前言简介1.1 链接传送门1.1.1 easyExcel传送门 2. Excel表格导入过程2.1 easyExcel的使用准备工作2.1.1 导入maven依赖2.1.2 建立一个util包2.1.3 ExcelUtils统一功能封装(单/多sheet导入)2.1.4 ExcelDataListener数据监听器2.1.5 ResponseHelper响应值处理…

【SQL Server】华中农业大学空间数据库实验报告 实验五 索引

1.实验目的 通过课堂理论学习与实验课的实际操作&#xff0c;充分理解索引的相关概念&#xff0c;作用&#xff0c;以及特点&#xff0c;创建索引的基本目的是提高系统性能&#xff0c;虽然实验课堂中我们实际使用的实验数据无法很好的体现索引的优点&#xff0c;但希望我们能…

Spring事务笔记

目录 1.Spring 编程式事务 2.Transactional 3.事务隔离级别 4.Spring 事务传播机制 什么是事务? 事务是⼀组操作的集合, 是⼀个不可分割的操作. 事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求. 所以这组操作要么同时成 功, 要么同时失败 1.Spri…

开源加密库mbedtls及其Windows编译库

目录 1 项目简介 2 功能特性 3 性能优势 4 平台兼容性 5 应用场景 6 特点 7 Windows编译 8 编译静态库及其测试示例下载 1 项目简介 Mbed TLS是一个由ARM Maintained的开源项目&#xff0c;它提供了一个轻量级的加密库&#xff0c;适用于嵌入式系统和物联网设备。这个项…