自学内容网 自学内容网

C#基础41-45

41. 利用如下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:
(1)取X1初值为0.0;
(2)X0=X1,把X1的值赋给X0;
(3)X1=COS(X0),求出一个新的X1;
(4)若X0-X1绝对值小0.000001,执行步骤(5),否则执行步骤(2);
 (5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。
请编写函数实现程序的要求,最后调用函数把结果输出到控制台。

42.计算出自然数m和n,它们满足的条件是m+m+m=n+n的个数cn,以及满足此条件所有的m与n的和SUM。请编写函数实现程序的要求,最后调用函数把结果cn和sum输出到控制台。

43.求n以内(不包括n)同时能被3和7整数的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到控制台。

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

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

41、这里我们可以直接调用cos方法,代码如下:

 private static void Main(string[] args)
 {
     double root = FindRootCos(0.0, 0.000001); // 初值为0.0,迭代精度为0.000001
     Console.WriteLine($"方程 cos(x) - x = 0 的一个实根为: {root}");
 }

 // 实现迭代方法求解方程 cos(x) - x = 0 的根
 static double FindRootCos(double x1, double tolerance)
 {
     double x0 = x1; // 初始化x0为x1

     do
     {
         x0 = x1; // 更新x0的值
         x1 = Math.Cos(x0); // 计算新的x1值
     } while (Math.Abs(x0 - x1) > tolerance); // 检查迭代是否满足精度要求

     return x1; // 返回计算得到的根
 }

42、首先这里我们要小于自然数intmax,要不然会溢出,代码如下:

 private static void Main(string[] args)
 {
     (int cn, int sum) = CalculateMAndNSum(); // 调用函数计算并接收返回值

     Console.WriteLine($"满足条件的自然数对(m, n)的个数 cn: {cn}");
     Console.WriteLine($"这些数对(m, n)的和 sum: {sum}");
 }

 // 计算满足条件的自然数对(m, n)的个数cn,以及它们的和sum
 static (int, int) CalculateMAndNSum()
 {
     int cn = 0; // 满足条件的自然数对(m, n)的个数
     int sum = 0; // 满足条件的自然数对(m, n)的和

     for (int m = 1; m <= 2147483647 / 3; m++) // m的最大值要小于等于INT_MAX/3
     {
         int n = m + m / 3; // 根据条件 m+m+m=n+n 计算n的值

         // 如果n是自然数且满足m+m+m=n+n,则计算这些数对的和
         if (n < int.MaxValue / 2 && m * 3 == n * 2)
         {
             cn++; // 增加计数
             sum += m + n; // 累加满足条件的数对的和
         }
     }

     return (cn, sum); // 返回计数和和
 }

43、之前有写过,可以直接调用方法,代码如下:

private static void Main(string[] args)
{
    int n = 100; // 例如,设置n为100,您可以修改这个值来测试不同的n
    double s = SumOfMultiplesOf3And7(n); // 调用函数计算平方根s
    Console.WriteLine($"小于{n}的所有同时能被3和7整除的自然数之和的平方根s为: {s}");
}

// 计算小于n的所有同时能被3和7整除的自然数之和的平方根s
static double SumOfMultiplesOf3And7(int n)
{
    int sum = 0; // 初始化和为0
    for (int i = 3; i < n; i++)
    {
        // 同时检查能否被3和7整除
        if (i % 3 == 0 && i % 7 == 0)
        {
            sum += i; // 累加符合条件的数
        }
    }

    // 计算和的平方根并返回
    return Math.Sqrt(sum);
}

44、定义一个函数AnalyzeArray来分析数组x,计算奇数和偶数的个数以及数组中下标为奇数的元素值的算术平均值。然后,我们调用这个函数,并将结果输出到控制台.代码如下:

private static void Main(string[] args)
{
    // 示例数组x,你可以替换为其他数组以进行测试
    int[] x = { 1, 4, 3, 7, 10, 9 };
    int n = x.Length; // 数组x的长度

    // 调用函数分析数组x
    var (cn1, cn2, pj) = AnalyzeArray(x);

    // 输出结果到控制台
    Console.WriteLine($"奇数的个数cn1: {cn1}");
    Console.WriteLine($"偶数的个数cn2: {cn2}");
    Console.WriteLine($"数组下标为奇数的元素值的算术平均值pj(保留2位小数): {pj:F2}");
}

// 分析数组x,计算奇数和偶数的个数以及下标为奇数的元素的算术平均值
static (int cn1, int cn2, double pj) AnalyzeArray(int[] x)
{
    int cn1 = 0; // 奇数的个数
    int cn2 = 0; // 偶数的个数
    double sumOddIndexElements = 0; // 下标为奇数的元素值的总和
    int oddIndexCount = 0; // 下标为奇数的元素的个数

    for (int i = 0; i < x.Length; i++)
    {
        // 计算奇数和偶数的个数
        if (x[i] % 2 == 0)
        {
            cn2++;
        }
        else
        {
            cn1++;
            if (i % 2 == 1) // 下标为奇数
            {
                sumOddIndexElements += x[i];
                oddIndexCount++;
            }
        }
    }

    // 计算下标为奇数的元素的算术平均值,注意要除以个数,而不是数组长度
    double pj = oddIndexCount > 0 ? sumOddIndexElements / oddIndexCount : 0;

    return (cn1, cn2, pj); // 返回奇数的个数、偶数的个数和算术平均值
}

45、跟44一样,只不过下标换成值了,那我们可以稍微改下:代码就不写了,效果图如下


原文地址:https://blog.csdn.net/weixin_44498188/article/details/144053673

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!