| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:各位高手人才帮帮我啊...
只看楼主 加入收藏
ASTROTUNG
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-11-19
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:2 
各位高手人才帮帮我啊...
本人c语言入门者.学不会困惑中啊
大家看看我这个程序哪编错了??怎么改呢
大家帮帮忙...谢谢啦
题目:输入一个正整数n(1<n<=10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
【输入形式】先输入一个正整数n,再输入n个整数
【输出形式】交换后的n个数
【样例输入】5
            8 2 5 1 4
【样例输出】1 2 5 4 8

我编的
#include<stdio.h>
int main()
{ int n,i,min,max,k,t,x,y;
  int a[10];
  scanf("%d",&n);
  for(i=0;i<n;i++)
  scanf("%d",&a[n]);
  min=a[0];
  max=a[0];
   x=0;
   y=0;
  for(i=1;i<n;i++)
  {if(min>a[i]);
   {min=a[i];
    x=i;
}
   if(max<a[i])
   {max=a[i]
    y=i;
}
}
 t=a[y];a[y]=a[n-1];a[n-1]=t;
 k=a[x];a[x]=a[0];a[0]=k;
 for(i=0;i<n;i++)
 printf("%d",a[i]);
 return 0;
}
搜索更多相关主题的帖子: 人才 c语言入门 include 正整数 最大值 
2011-11-19 20:41
double聪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:118
注 册:2011-11-19
收藏
得分:20 
首先你这个程序有4个明显的错误:
1:scanf("%d",&a[n]); 应为scanf("%d",&a[i]);
2: if(max<a[i])
   {max=a[i]
    y=i;
   第二行少“;”。
3:printf("%d",a[i]);在%d后应加个空格。
4:for(i=1;i<n;i++)
  {if(min>a[i]);
   {min=a[i];
    x=i;
  把第二行末尾的“;”去掉。
完成以上这些步骤,你已可以成功把你的样例输入和输出正确了。

但是,你这程序是有缺陷的也就是说有些例子无法做到。
例如:5
      2 4 5 3 1   本来的正确应为 1 4 2 3 5. 可你的程序只能做到5 4 1 3 2.
其实你只是少考虑了一点。
你的程序的这两行是想进行交换:
        t=a[y];a[y]=a[n-1];a[n-1]=t;
        k=a[x];a[x]=a[0];a[0]=k;
先把最大交换:a[2]=5,a[4]=1----->a[2]=1,a[4]=5
但最小交换出现问题。因为最小的数的位置已经发生变化。原本a[4]=1,而现在是a[2]=1;
所以你只需要多一个小小的判断步骤就可以了。

这个是修改好的程序:
#include<stdio.h>
int main()
{ int n,i,min,max,k,t,x,y;
  int a[10];
  scanf("%d",&n);
  for(i=0;i<n;i++)
  scanf("%d",&a[i]);
  min=a[0];
  max=a[0];
   x=0;
   y=0;
  for(i=1;i<n;i++)
  {if(min>a[i])
   {min=a[i];
    x=i;
}
   if(max<a[i])
   {max=a[i];
    y=i;
}
}
if(x==n-1)
{
    t=a[x];
    a[n-1]=a[y];
    a[y]=a[0];
    a[0]=t;
}
else
{
t=a[y];a[y]=a[n-1];a[n-1]=t;
k=a[x];a[x]=a[0];a[0]=k;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
这个就应该没问题了
2011-11-19 23:09
ASTROTUNG
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-11-19
收藏
得分:0 
回复 2楼 double聪
谢谢啦...以后有问题还请多多帮助啊
2011-11-22 14:30
快速回复:各位高手人才帮帮我啊...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027750 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved