帮我找下这个程序的漏洞

来源:百度知道 编辑:UC知道 时间:2024/06/25 23:22:43
题目是这样的:
有一个整形数组 A[0..N-1];存放的元素为 0~N-1 (1<N<=10)之间的整数,且 A[i]≠A[j](i≠j)。例如,当N=6时,有:A=(4,3,0,5,1,2)。此时,数组A的编码定义如下:
A[0]编码为0;
A[i]编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数 (i=1,2,…,N-1)
例如上面数组 A的编码为:B=(0,0,0,3,1,2)
若给出数组A,则可求出其编码。同理,若给出数组A的编码,可求出A中的原数据。

输入:
推导方向(取值为1或2,如为1,则表示根据数组求数组编码;如为2,则表示根据编码反求数组)
数组个数
数组或数组编码元素

输出:
数组编码、或数组本身(元素之间以空格分隔)
我的程序是这样的:
#define N 10
#include "stdio.h"
main()
{ int a[N],i,b[N]={0},c[N],n,j,x,l=0,k=0;
scanf("%d",&x);
scanf("%d",&n);
if (x==1)
{for (i=0;i<=n-1;i++)
{scanf("%d",&a[i]);}
for (i=1;i<=n-1;i++)
for (j=0;j<=i-1;j++)
if (a[j]<a[i]) b[i]++;
for (i=0;i<=n-2;i++)
printf("%d ",b[i]);
printf("%d\n",b[n-1]);
}
else {for (i=0;i<=n-1;i++)

改了一下,你看看

#define N 10
#include "stdio.h"
main()
{
    int a[N],i,b[N]={0},c[N],n,j,x,l=0,k=0;
    scanf("%d",&x);
    scanf("%d",&n);
    if (x==1)
    {
        for (i=0;i<=n-1;i++)
        {
            scanf("%d",&a[i]);
        }
        for (i=1;i<=n-1;i++)
        for (j=0;j<=i-1;j++)
            if (a[j]<a[i]) b[i]++;
        for (i=0;i<n;i++)
   &nb