C#基础练习61-65

发布于:2024-11-29 ⋅ 阅读:(35) ⋅ 点赞:(0)

61.已知一个矩形的周长为100,面积为300,求该矩形的边长?

62.在屏幕上用*打印输出如下等腰梯形(要求使用控制语句完成)

         * * * * * * * * *
        * * * * * * * * * *
       * * * * * * * * * * *
      * * * * * * * * * * * *
     * * * * * * * * * * * * *
    * * * * * * * * * * * * * *

63.用一个数组来存放一个8进制数,并将该8进制数转换为16进制后存入该数组中,最后输出。

64.数组x中存有一字符串,请编制函数,把所有字符的ASCII码值减4,如果减4后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则减4后的字符的ASCII码值加上原字符的ASCII码值,得到的新字符仍存入原字符对应的位置上。最后将数组x输出。

65.数组x中存有一字符串,请编制函数,把字符串中所有小写字母改写成它的上一个字母,其它字符不变,如果是'a'则改成'z',处理后的字符仍存入原字符对应的位置上,最后输出x。

61、我们首先定义了周长 perimeter 和面积 area。然后,我们使用公式 L = (P + sqrt(P^2 - 4 * A * 2)) / 4 和 W = A / L 来计算矩形的长和宽。这个公式是通过解一元二次方程得到的,其中 P 为周长,A 为面积。公式计算出的 L 和 W 保证了矩形的周长和面积分别等于100和300。

最后,代码输出了矩形的长和宽。注意,我们使用了 Math.Sqrt 函数来计算平方根,它定义在 System 命名空间下的 Math 类中,代码如下:

private static void Main(string[] args)
{
    // 周长和面积
    double perimeter = 100;
    double area = 300;

    // 解方程找到长和宽
    double length = (perimeter + Math.Sqrt(perimeter * perimeter - 4 * area * 2)) / 4;
    double width = area / length;

    // 输出结果
    Console.WriteLine($"矩形的长为: {length}");
    Console.WriteLine($"矩形的宽为: {width}");
}

62、代码如下:

63、我们首先定义了一个8进制数的字符串 octalNumber,然后创建一个整数数组 octalArray 来存储8进制数的每一位。ConvertOctalArrayToHex 函数首先将数组转换为8进制字符串,然后使用 Convert.ToInt32 方法将其转换为10进制整数,其中第二个参数指定基数为8。之后,我们使用 Convert.ToString 方法将10进制整数转换为16进制字符串,其中第二个参数指定基数为16。最后,为了使输出结果更加清晰,我们使用 ToUpper 方法将16进制字符串转换为大写,代码如下:

private static void Main(string[] args)
{
    // 8进制数字符串
    string octalNumber = "173"; // 例如,将8进制数173存入数组
    // 存储8进制数的数组
    int[] octalArray = { 1, 7, 3 };

    // 将8进制数组转换为16进制字符串
    string hexadecimalString = ConvertOctalArrayToHex(octalArray);

    // 输出结果
    Console.WriteLine($"8进制数 {octalNumber} 转换为16进制后为 {hexadecimalString}");
}

// 将8进制数的数组转换为16进制字符串的函数
static string ConvertOctalArrayToHex(int[] octalArray)
{
    // 将数组转换为8进制字符串
    string octalString = string.Join("", octalArray);

    // 将8进制字符串转换为整数
    int decimalNumber = Convert.ToInt32(octalString, 8);

    // 将整数转换为16进制字符串
    string hexString = Convert.ToString(decimalNumber, 16).ToUpper();

    return hexString;
}

64、在 TransformArray 函数中,我们遍历字符串数组 x 中的每个字符串,并创建一个新的字符数组 transformedChars。对于字符串中的每个字符,我们先将其转换为ASCII值,然后执行减4操作。如果结果小于等于32或大于100,我们保留原始字符。否则,我们将减4后的ASCII值与原始ASCII值相加,得到新字符,并存入 transformedChars

最后,我们使用 x.ToList().IndexOf(str) 找到原始字符串在数组 x 中的索引,并用修改后的字符串替换原位置的字符串。

Main 方法定义了一个示例字符串数组 x,调用 TransformArray 函数对数组中的字符串进行转换,然后输出转换后的数组X。代码如下:

private static void Main(string[] args)
{// 示例字符串数组x
    string[] x = { "Hello, World!", "C# Programming" };
    TransformArray(x); // 调用函数进行字符转换

    // 输出修改后的数组x
    foreach (string str in x)
    {
        Console.WriteLine(str);
    }
}

// 函数用于根据特定规则修改字符串中每个字符的ASCII值
static void TransformArray(string[] x)
{
    foreach (string str in x)
    {
        char[] transformedChars = new char[str.Length];

        // 遍历字符串中的每个字符
        for (int i = 0; i < str.Length; i++)
        {
            char originalChar = str[i];
            int asciiValue = (int)originalChar; // 当前字符的ASCII值

            // 减4操作
            asciiValue -= 4;

            // 如果减4后的ASCII值小于等于32或大于100,则保留原字符
            if (asciiValue <= 32 || asciiValue > 100)
            {
                transformedChars[i] = originalChar;
            }
            else
            {
                // 减4后,其字符的ASCII值加上原字符的ASCII码值,得到新字符
                asciiValue += (int)originalChar;
                transformedChars[i] = (char)asciiValue;
            }
        }

        // 将修改后的字符串存回数组x对应的位置
        x[x.ToList().IndexOf(str)] = new string(transformedChars);
    }
}

65、在 TransformLowercaseChars 函数中,我们遍历字符串数组 x 中的每个字符串,并将其转换为字符数组 transformedChars。接着,我们遍历 transformedChars 中的每个字符,检查是否为小写字母。如果是,则执行相应的替换操作:如果是 'a',则替换成 'z';否则,将该字符的 ASCII 值减去 1,得到它的上一个字符。

最后,我们将修改后的字符数组转换回字符串,并使用 x.ToList().IndexOf(str) 找到原数组中的索引位置,更新字符串数组 x

Main 方法定义了一个示例字符串数组 x,调用 TransformLowercaseChars 函数对数组中的字符串进行转换,然后输出转换后的数组 x.代码如下:

private static void Main(string[] args)
{ // 示例字符串数组x
    string[] x = { "Hello World!", "C# Programming", "a", "z", "ab" };
    TransformLowercaseChars(x); // 调用函数进行转换

    // 输出转换后的数组x
    foreach (string str in x)
    {
        Console.WriteLine(str);
    }
}

// 函数用于将字符串中所有小写字母改写成它的上一个字母
static void TransformLowercaseChars(string[] x)
{
    foreach (string str in x)
    {
        char[] transformedChars = str.ToCharArray();

        for (int i = 0; i < transformedChars.Length; i++)
        {
            // 检查字符是否为小写字母
            if (char.IsLower(transformedChars[i]))
            {
                // 如果是 'a',则改写成 'z'
                if (transformedChars[i] == 'a')
                {
                    transformedChars[i] = 'z';
                }
                else
                {
                    // 否则改写成前一个字母
                    transformedChars[i] = (char)(transformedChars[i] - 1);
                }
            }
        }

        // 将转换后的字符数组转换回字符串,并更新原数组的位置
        x[x.ToList().IndexOf(str)] = new string(transformedChars);
    }
}