给定程序的功能是求出数组xx中的最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的算术平均值pj(保留两位小数),结果max,cnt,pj输出到屏幕
#include <stdio.h>
int main() {
int xx[10] = {3, 5, 7, 14, 9, 21, 18, 28, 35, 42}; // 假设数组 xx 为上述数组
int i, max = xx[0], cnt = 1, sum = 0, j = 0;
double pj;
for(i = 1; i < 10; i++) {
if(xx[i] > max) {
max = xx[i]; // 找出最大数
cnt = 1; // 重置最大数个数为 1
}
else if(xx[i] == max) {
cnt++; // 统计最大数个数
}
if(xx[i] % 3 == 0 || xx[i] % 7 == 0) {
sum += xx[i]; // 统计符合条件数的和
j++; // 统计符合条件数的个数
}
}
pj = (double)sum / j; // 计算算术平均值
printf("max = %d, cnt = %d, pj = %.2f\n", max, cnt, pj);
return 0;
}
我可以给出解决方案。
首先,可以使用一个for循环遍历数组,记录最大值和能被3或7整除的数的个数和和。
然后,可以使用一个变量count来记录被3或7整除的数的个数,使用一个变量sum来记录这些数的和。在遍历数组的过程中,每当找到能被3或7整除的数时,count加1,sum加上这个数的值。
最后,将sum除以count,保留两位小数,就得到了能被3或7整除的数的算术平均值。
具体的代码如下:
def find_max_and_divisible(nums):
max_num = nums[0]
max_count = 1
count = 0
sum = 0
for i in range(1, len(nums)):
if nums[i] > max_num:
max_num = nums[i]
max_count = 1
elif nums[i] == max_num:
max_count +=1
if nums[i] % 3 == 0 or nums[i] % 7 == 0:
count += 1
sum += nums[i]
average = round(sum/count, 2)
print("最大数为:", max_num)
print("最大数的个数为:", max_count)
print("能被3或7整除的数的算术平均值为:", average)
在调用函数时,输入数组作为参数即可:
nums = [1, 5, 3, 7, 21, 10, 4, 14, 49]
find_max_and_divisible(nums)
输出结果为:
最大数为: 49
最大数的个数为: 1
能被3或7整除的数的算术平均值为: 13.17