我写的
#include<stdio.h>
int main()
{ int a[10],n,x=0,y=1000,i,t,m,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(t=0;t<n;t++)
{ if(a[t]<y)
{ y=a[t];
}
if(a[t]>x)
{ x=a[t];
}
}
for(j=0;j<n;j++)
{ if(a[j]==y)
{ a[j]=a[0];
}
if(a[j]==x)
{ a[j]=a[n-1];
}
}
a[0]=y;
a[n-1]=x;
for(m=0;m<n;m++)
{ if(m==(n-1))
{ printf("%d",a[m]);
}
else
{ printf("%d ",a[m]);
}
}
return 0;
}
输出对的,但我学校的oj说我错、、擦
可以参考下面的代码:
#include <stdio.h>
void main()
{
int i,j=0,k=0,t,n,min,max,a[10];
printf("输入整百数度的个数: ");
scanf("%d",&n);
printf("输入%d个整数: ",n);
scanf("%d",&a[0]);
max=a[0];min=a[0];
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
if(max<a[i]) {max=a[i];j=i;}
if(min>a[i]) {min=a[i];k=i;}
}
t=a[k];a[k]=a[0];a[0]=t;
t=a[j];a[j]=a[n-1];a[n-1]=t;
printf("交换顺序后内输出: ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
扩展资料:
1、printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出
信息。在编写程序时经常会用到此函数。函数的原型为:
int printf(const char *format, ...);
函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。
printf()函数的调用格式为:
printf("<格式化字符串>", <参量表>);
2、for循环
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。
参考资料来源:百度百科-for循环
参考资料来源:百度百科-printf()
你肯定是错了,而且是基本全错。
错误1、x=0,y=1000
你怎么知道输入的整数都在1到1000之间?而且,如果你输入的数就在0~1000之间,没有一个值是0或者1000,后面的a[j]==x,a[j]==y根本就都不存在了。
错误2、是交换,不是直接赋值。a[j]=a[0],a[j]=a[n-1]都错了。
你说输出是对的,应该是巧合。
#include <stdio.h>可能是因为在初值x=0,y=1000的时候你默认了最大值不小于0,最小值不大于1000? 可以将x,y的初值赋值为a[0]试试
下面是根据你的代码修改的
#include<stdio.h>下面是我自己写的
#include<stdio.h>
int main()
{ int a[10],n,x=0,y=1000,i,t,m,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(t=0;t<n;t++)
{ if(a[t]<y)
{ y=a[t];
}
if(a[t]>x)
{ x=a[t];
}
}
for(j=0;j<n;j++)
{ if(a[j]==y)
{ a[j]=a[0];
break;
}
for(j=0;j<n;j++)
if(a[j]==x)
{ a[j]=a[n-1];
break;
}
}
a[0]=y;
a[n-1]=x;
for(m=0;m<n;m++)
{ if(m==(n-1))
{ printf("%d",a[m]);
}
else
{ printf("%d ",a[m]);
}
}
return 0;
}
本回答被网友采纳