自学内容网 自学内容网

C#基础36-40

36.求出10000以内个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用函数把结果输出。

37.把全部由英文字母组成的一个字符串中的第一个字符的ASCII值加1, 得到第一个新的字符, 第二个字符的ASCII值加2,得到第二个新的字符, 第三个字符的ASCII值加3,得到第三个新的字符以,此类推一直处理到最后一个字符,得到最后一个新的字符, 得到的新字符分别存放在原字符串对应的位置上,之后把已处理的字符串仍重新输出。

38.任意输入一字符串,把字符串中的所有大写字母改写成小写字母, 如果是字母a, 则改写成字母z,其它字符保持不变。把已处理的字符串输出。

39.设A,B,C为三个不为零的正整数,计算并输出下列不定方程组解的个数CN以及满足此条件的所有A,B,C。不定方程组为:A+B+C=13;A-C=5。

40.求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,并通过n返回这些数的个数。

36、具体实现如下:

  1. 使用CheckCondition函数检查1000到9999之间的每个数是否满足个位数上的数减去千位、百位和十位数上的数大于零的条件。
  2. 如果满足条件,则将该数存入数组b中,并增加计数器cnt
  3. 数组b排序后使用Array.Reverse方法进行从大到小的逆序排序。
  4. 最后调用OutputResults函数输出满足条件的四位数的个数和列表。

代码如下:

private static void Main(string[] args)
{
    int cnt = 0; // 用于计数满足条件的四位数个数
    int[] b = new int[9000]; // 因为10000以内共有9000个四位数,所以数组b的大小设置为9000

    // 循环检查每个四位数是否满足条件
    for (int num = 1000; num <= 9999; num++)
    {
        if (CheckCondition(num))
        {
            b[cnt] = num; // 存储满足条件的四位数
            cnt++; // 增加计数
        }
    }

    // 对数组b进行从大到小排序
    Array.Sort(b);
    Array.Reverse(b);

    // 输出结果
    OutputResults(b, cnt);
}

// 判断条件是否满足的函数
static bool CheckCondition(int num)
{
    // 分别计算千位、百位、十位和个位上的数字
    int thousand = num / 1000;
    int hundred = (num % 1000) / 100;
    int ten = (num % 100) / 10;
    int one = num % 10;

    // 判断个位数上的数减去千位、百位和十位数上的数是否大于零
    return one - thousand - hundred - ten > 0;
}

// 输出结果的函数
static void OutputResults(int[] b, int cnt)
{
    Console.WriteLine("满足条件的四位数个数为: " + cnt);
    Console.WriteLine("满足条件的四位数列表(从大到小)为:");
    foreach (int number in b)
    {
        if (number != 0) // 因为数组末尾会有未使用的零填充,需要排除
        {
            Console.Write(number + " ");
        }
    }
    Console.WriteLine(); // 输出换行
}

37、这个需要自定一个函数来得到所出的结果,代码如下:

 private static void Main(string[] args)
 {
     string originalString = "Hello, World!"; // 原始字符串
     string modifiedString = ModifyStringByAscii(originalString);

     // 输出修改后的字符串
     Console.WriteLine("修改后的字符串为: " + modifiedString);
 }

 // 修改字符串函数
 static string ModifyStringByAscii(string input)
 {
     char[] charArray = input.ToCharArray(); // 将字符串转换为字符数组
     int asciiAddition = 1; // ASCII值增加的起始值

     for (int i = 0; i < charArray.Length; i++)
     {
         if (char.IsLetter(charArray[i])) // 检查是否为英文字母
         {
             // 计算新的字符并存放在原数组位置上
             charArray[i] = (char)(charArray[i] + asciiAddition);
             asciiAddition++; // 增加的ASCII值递增
         }
     }

     // 将修改后的字符数组转换回字符串
     return new string(charArray);
 }

38、我们需要自定义一个函数来处理字符的转换,以及如果是a,则转换成z,代码如下:

 private static void Main(string[] args)
 {
     Console.WriteLine("请输入任意字符串:");
     string originalString = Console.ReadLine(); // 读取用户输入的字符串
     string processedString = ConvertToProcessedString(originalString); // 调用函数处理字符串

     // 输出处理后的字符串
     Console.WriteLine("处理后的字符串为:");
     Console.WriteLine(processedString);
 }

 // 将输入字符串中所有大写字母改写成小写字母,如果是字母a,则改写成字母z,其它字符保持不变
 static string ConvertToProcessedString(string input)
 {
     char[] charArray = input.ToCharArray(); // 将字符串转换为字符数组
     for (int i = 0; i < charArray.Length; i++)
     {
         // 如果是大写字母,则转换为小写字母,如果是字母'a',则转换为'z'
         if (char.IsUpper(charArray[i]))
         {
             charArray[i] = char.IsLetter(charArray[i]) && charArray[i] == 'A'
                 ? 'Z' : char.ToLower(charArray[i]);
         }
         // 如果是字母'a',则改写为'z'
         else if (charArray[i] == 'a')
         {
             charArray[i] = 'z';
         }
     }
     return new string(charArray); // 将字符数组转换回字符串并返回
 }

39、要解这个不定方程组,我们首先可以使用第二个方程A - C = 5A表示为C的函数,即A = C + 5。然后我们将这个表达式代入第一个方程A + B + C = 13中,得到B的值。

现在我们来写C#代码,计算出满足条件的所有可能的整数解(A, B, C),并输出解的个数CN以及这些解,代码如下:

 private static void Main(string[] args)
 {
     int CN = 0; // 解的个数

     // A = C + 5
     // A + B + C = 13
     // 因此 B + 2C = 8
     // 我们遍历C的可能值,即从1到6(因为C为正整数且不能为零)
     for (int C = 1; C <= 6; C++)
     {
         // 计算B的值
         int B = 8 - 2 * C;

         // 检查B是否为正整数
         if (B > 0)
         {
             // 计算A的值
             int A = C + 5;

             // 输出当前解
             Console.WriteLine($"满足条件的解(A, B, C): ({A}, {B}, {C})");

             // 解的个数加一
             CN++;
         }
     }

     // 输出解的总数
     Console.WriteLine($"满足条件的解的个数CN: {CN}");
 }

40、我们假设全符合,实际没有那么多,代码如下:

 private static void Main(string[] args)
 {
     int[] a = new int[1000]; // 假设最多有1000个数满足条件,实际使用时可能不足
     int n = 0; // 满足条件的数的个数

     // 遍历1到1000的整数
     for (int i = 1; i <= 1000; i++)
     {
         // 检查是否能被7或11整除,但不能同时被7和11整除
         if ((i % 7 == 0 || i % 11 == 0) && !(i % 7 == 0 && i % 11 == 0))
         {
             a[n] = i; // 将满足条件的数加入数组
             n++;      // 增加计数
         }
     }

     // 输出满足条件的数的个数
     Console.WriteLine("能被7或11整除但不能同时被7和11整除的整数个数为: " + n);

     // 输出所有满足条件的整数
     Console.WriteLine("满足条件的整数列表为:");
     for (int i = 0; i < n; i++)
     {
         Console.Write(a[i] + " ");
     }
 }


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

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