![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
杭电ACM 2016题 我不知道我代码哪里错了请指出来 谢谢 我不要AC的代码 我就是想问问我写的代码哪里错了
#include<stdio.h>intmain(){intn,a[101];inti,p,j;while(scanf("%d",&n)!=EOF){if(n==0)br...
#include<stdio.h>
int main()
{
int n,a[101];
int i,p,j;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
p=a[0];
for(i=1;i<n;i++)//找出最小的数字
{
if(p>a[i])
{
j=i;
p=a[i];
}
}
p=a[0]; //最小的数与第一个数交换位置
a[0]=a[j];
a[j]=p;
for(i=0;i<n;i++)
{
if(i<(n-1))
{
printf("%d",a[i]);
printf(" ");
}
else
{
printf("%d\n",a[i]);
}
}
}
return 0;
} 展开
int main()
{
int n,a[101];
int i,p,j;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
p=a[0];
for(i=1;i<n;i++)//找出最小的数字
{
if(p>a[i])
{
j=i;
p=a[i];
}
}
p=a[0]; //最小的数与第一个数交换位置
a[0]=a[j];
a[j]=p;
for(i=0;i<n;i++)
{
if(i<(n-1))
{
printf("%d",a[i]);
printf(" ");
}
else
{
printf("%d\n",a[i]);
}
}
}
return 0;
} 展开
1个回答
展开全部
#include<stdio.h>
int main()
{
int n,a[101];
int i,p,j;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
j=0;//这儿加上赋初值。
p=a[0];
for(i=1;i<n;i++)//找出最小的数字
{
if(p>a[i])
{
j=i;
p=a[i];
}
}
p=a[0]; //最小的数与第一个数交换位置
a[0]=a[j];
a[j]=p;
for(i=0;i<n;i++)
{
if(i<(n-1))
{
printf("%d",a[i]);
printf(" ");
}
else
{
printf("%d\n",a[i]);
}
}
}
return 0;
}
追问
给变量j初始化好像没什么变化啊,能解释一下吗?
追答
有变化的啊。如果你这个最小值是第1个的话,你的j不赋值,就是随机值的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询