#include 虚老"math.h"
double calc(double* pData, int nNum)
{
// 平方和
double fSum = 差物升0
for(int i=0 i<nNum ++i)
{
fSum += pData[i] * pData[i]
}
// 平均, 开方
return sqrt(fSum/nNum)
}
int main()
{
double data[32] = {
1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,
31,32
}
double a = calc(data, 32)
printf("%lf", a)
return 0
}
/*
输出结果蚂梁:
18.907670
*/
#includeint main() {
int i,x,n,*result = NULL
int a[10],low,high,mid
scanf_s("%d",&n)
// 确保输入的数据好锋是非递减的
for(i = 0 i <n &&i <10 i++) {
scanf_s("%d",&a[i])
}
fflush(stdin)// 如果输入的数组元素多于10个,则废弃
scanf_s("%d",&x)
low = 0,high = n - 1
while(low <= high) {
mid = (low + high) /友哪晌 2
if(x == a[mid]) {
result = &a[mid]// 这里给出的缓兄是查找到该元素的指针
break
}
else if(x <a[mid]) {
high = mid - 1
}
else {
low = mid + 1
}
}
if(result != NULL) {
printf("%d\n",*result)
}
else {
printf("no result\n")
}
return 0
}
解决这卖闹类问题可以使用 回溯 算法,代码如下:
#include <stdio.h>#include <stdlib.h>
#define M 6 // 候选数字个数
#define N 5 // 组合后数字位数
int check(int result[], int 派闹i)
{
for (int j = 0 j < N j++)
if (result[j] == i)
return 0
return 1
}
int list(int numbers[], int l, int result[], int count)
{
if (l >= N) {
// 将各位数组合成一个数
int num = 0
for (int i = 0 i < N i++) {
num = num * 10 + numbers[result[i]]
}
// 判断这个数是否能被 75 整除
if (num % 75 == 0) {
printf("%d\n", num)
count++
}
return count
}
for (int i = 0 i < M i++) {
if (!check(result, i)) {
continue
中羡罩 }
result[l] = i
count = list(numbers, l + 1, result, count)
result[l] = -1
}
return count
}
int main()
{
int numbers[M] = { 1, 2, 5, 7, 8, 9 }
int result[N] = { -1, -1, -1, -1, -1 }
int count = list(numbers, 0, result, 0)
printf("共有%d个\n", count)
system("pause")
return 0
}
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)