C语言中15个数由从大到小顺序存放在一个数组中,输入一个数,要求找出该数是第几个元素的值。

#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<stdio.h>
#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-04
for(i=0;i<N;i++)
{
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次了小伙伴

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网