我想给用户一个号码,比如3, 然后从用户
中提供3个号码 像这样: int n;
printf("insert one number");
scanf("%d", n);
int a;
for(int i = 1; i <=n; i++){
scanf("%d", a);
}
并且不使用Array计算这个... 使用数组是非常重要的
Σa[i] a [j](i≠j)
输入示例:
3 1 2 3
计算这个
1x2 + 1x3 + 2x1 + 2x3 + 3x1 + 3x2
和输出22
抱歉我的英语不好,有人可以帮助我吗?答案 0 :(得分:2)
我打算在没有给你答案的情况下回答这个问题:
由于输入的第一个数字是您要读入的值的数量,因此您需要单独存储它并使用它来创建循环。
你的循环(使用你的示例输入)需要计算:
(1 * 2 + 1 * 3)+(2 * 1 + 2 * 3)+(3 * 1 + 3 * 2)
这归结为memo1288所暗示的:弄清楚数学成分。
答案 1 :(得分:1)
我们做一些数学运算。基于您给出的示例,原始表达式的完整形式为:
f(a,n)=Σa[i] a [j](i&lt; n,j&lt; n,j≠i)
=Σa[i](i 当我们用n + 1替换n时,我们得到: f(a,n + 1)=Σa[i](i =Σa[i](i =Σa[i](i =Σa[j](j =Σa[j](j = f(a,n)+ 2a [n]Σa[i](i 换句话说,n个数的计算值等于n-1个数的计算值加上2 *第n个数乘以所有先前数的总和。 如果不使用数组,应该很容易看到如何做到这一点。您只需要跟踪数字的运行总和以及计算的运行值。 我会让你写出实际的代码,因为这显然是一个功课问题,但这应该是很多信息可以让你开始。