【发布时间】:2014-03-30 10:22:09
【问题描述】:
我为以下问题编写了以下代码:
给定一个由 N 个正整数组成的序列 A,编写一个程序,找出满足 i A[j] > A[j]A[i](A[i] 的 A[j] 次幂 > A[j] 的 A[i] 次幂)。
我的代码通过了除此之外的所有测试用例:
15
0 5 2 3 0 8 7 8 0 7 1 2 4 5 3
输出应该是 35,但我的程序给出的输出是 0。 我的程序如下:
#include<stdio.h>
int power(int x, int y);
int main()
{
int N,A[N],count=0;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%d",&A[i]);
}
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
{
if(i<j)
{
if(power(A[i],A[j])>power(A[j],A[i]))
count++;
}
}
}
printf("%d",count);
return 0;
}
int power(int x, int y)
{
int result = x;
if(y == 0) return 1;
if(x < 0 || y < 0) return 0;
for (int i = 1; i < y; ++i)
result *= x;
return result;
}
请仅在 C 语言代码中提出更正建议。
【问题讨论】:
-
欢迎来到 SO。提问时请使用网站提供的格式化工具。除了 Gassa 在他的回答中提到的错误之外,您还应该考虑使用与
int不同的类型。使用int,权力很容易溢出。我的猜测是你的教授的意思是你使用double,然后使用现有的库函数pow来获得力量。 -
我在制作这个程序时不允许使用库函数,所以我必须自己定义幂函数。关于格式化工具,我是新手,是的,我正在学习使用它们。