帮我找下这个程序的漏洞
来源:百度知道 编辑: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++)
有一个整形数组 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