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、我们首先定义两个变量cn
和sum
分别用来统计满足条件的四位数的个数和它们的和。然后,我们使用一个for
循环遍历所有的四位数,并使用整数除法和模运算来分别获取四位数的千位、百位、十位和个位上的数字。接下来,我们检查这些数字是否满足给定的两个条件:
- 千位数字与百位数字之和等于十位数字与个位数字之和。
- 千位数字与百位数字之和等于个位数字与千位数字之差的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
,以及满足和不满足素数条件的元素的平均值PJZ1
和PJZ2
。最后,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); // 返回统计信息
}