C#基础练习61-65

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)) / 4W = A / L 来计算矩形的长和宽。这个公式是通过解一元二次方程得到的,其中 P 为周长,A 为面积。公式计算出的 LW 保证了矩形的周长和面积分别等于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 charstr.Length;

// 遍历字符串中的每个字符

for (int i = 0; i < str.Length; i++)

{

char originalChar = stri;

int asciiValue = (int)originalChar; // 当前字符的ASCII值

// 减4操作

asciiValue -= 4;

// 如果减4后的ASCII值小于等于32或大于100,则保留原字符

if (asciiValue <= 32 || asciiValue > 100)

{

transformedCharsi = originalChar;

}

else

{

// 减4后,其字符的ASCII值加上原字符的ASCII码值,得到新字符

asciiValue += (int)originalChar;

transformedCharsi = (char)asciiValue;

}

}

// 将修改后的字符串存回数组x对应的位置

xx.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);
}
}

相关推荐
hez20101 天前
在 .NET 上构建超大托管数组
c#·.net·.net core·gc·clr
雨落倾城夏未凉6 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫7 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫8 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m6259 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户91721561902119 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠9 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫11 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech12 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf13 天前
C#摸鱼实录——IoC与DI案例详解
c#