#include<stdio.h>
#include<time.h>
#define N 15
int main()
{
int a[N];
int b[N];
int i,j,k,x,y,z;
x=0;
z=0;
srand((unsigned)time(NULL));
for(i=0;i<N;i++)
{
a[i]=rand()%100;
}
for(i=0;i<N;i++)
{
for(j=0;j<N-i;j++)
{
if(a[j+1]>a[j])
{
z=a[j];
a[j]=a[j+1];
a[j+1]=z;
}
}
}
printf("输出降序排列的数组 ");
for(j=0;j<N;j++)
{
printf("%d ",a[j]);
}
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[j]<a[i])
{
x++;
}
}
b[i]=x+1;
}
printf("输入数字 ");
scanf("%d",&y);
printf("输出序号 ");
for(i=0;i<N;i++)
{
if (y=a[i])
{
z=1;
printf("%d ",b[i]);
}
}
if(z=0)
printf("无此数");
system("pause");
return 0;
}
输出结果总是“14 27 39 50 60 69 77 84 90 95 99 102 104 105 105”这样的一串数
正确输出应该是一个序号。
求大神帮助 T T
#include<time.h>
int main()
{
int i,j,t,x;
int a[15];
srand(time(0));
for(i=0;i<15;i++)
a[i]=rand()%100;
printf("生成的数组如下:\n");
for(i=0;i<15;i++)
printf("%4d",a[i]);
printf("\n");
//排序(从大到小)
for(i=14;i>0;i--)
for(j=0;j<i;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的数组如下:\n");
for(i=0;i<15;i++)
printf("%4d",a[i]);
printf("\n");
printf("请输入一个数:");
scanf("%d",&x);
j=-1;
for(i=0;i<15;i++)
if(a[i]==x)
j=i+1;
if(j!=-1)
printf("该数在数组中的第%d个位置!\n",j);
else printf("数组中没有这个数!\n");
return 0;
}
{
if (y==a[i])
{
z=1;
printf("%d ",b[i]);
}
}
这里的y=a[i]改为==
请采纳谢谢追问
虽然他输出了一个数字,可是这个数字真的不是序号啊
比如这个,输出28明显有问题
if (y==a[i])
{
z=1;
printf("%d ",i+1);
}
这个输出改为i+1就是序号了
表示这里的这个“无此数”输不出来T T
z=0;
for(i=0;i<N;i++)
{
if (y==a[i])
{
z=1;
printf("输出序号 ");
printf("%d ",i+1);
}
}
if(z==0)
{
printf("无此数\n");
}
首先你的z因为当了一个临时的变量在前面排序的时候用到了所以值不是0了
在找之前重新初始化为0
然后在if条件语句中是两个等于号忘记2次了小伙伴