| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:请帮我看看我的程序错在哪
只看楼主 加入收藏
王启元
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2010-4-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
请帮我看看我的程序错在哪
#include<stdio.h>
int main()
{
int n,i,j;
int pos,temp;
int a[10];
printf("please input n\n");
scanf("%d",&n);
printf("please in put n no\n");
  for(i=0;i<n;i++)
      scanf("%d",&a[i]);
    for(i=0;i<n-1;i++)
  {
      pos=i;
      for(j=i+1;j<n;j++)
          if(a[pos]<a[j])
              pos=j;
      
      if(pos!=i)
      {
          temp=a[i];
          a[i]=a[j];
          a[j]=temp;
      }
  }

  for(i=0;i<n;i++)
      printf("%8d",a[i]);
}
题目要求是:输入一个正整数n(1<n<=10),再输入n个整数,将它们从小到大排序后输出


[ 本帖最后由 王启元 于 2010-4-21 22:06 编辑 ]
搜索更多相关主题的帖子: include please 正整数 
2010-04-21 21:42
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:0 
试试这个。

#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,j;
int temp;
int a[10];
printf("please input n\n");
scanf("%d",&n);
printf("please in put n no\n");
  for(i=0;i<n;i++)
      scanf("%d",&a[i]);
    for(i=0;i<n-1;i++)
      for(j=0;j<n-i;j++)
      {
          if(a[j]>a[j+1])
         {
           temp=a[j+1];
          a[j+1]=a[j];
          a[j]=temp;
         }
     }


  for(i=0;i<n;i++)
      printf("%8d",a[i]);

    return 0;
}

 
2010-04-21 22:06
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:0 
你的排序算法有问题:
for(i=0;i<n-1;i++)
  {
      pos=i;
      for(j=i+1;j<n;j++)
          if(a[pos]<a[j])
              pos=j;
      
      if(pos!=i)
      {
          temp=a[i];
          a[i]=a[j];
          a[j]=temp;
      }
  }
2010-04-21 22:08
王启元
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2010-4-12
收藏
得分:0 
好像还不dui
2010-04-21 22:12
王启元
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2010-4-12
收藏
得分:0 
回复 3楼 NOMIPS
恩,好像是的 可怎么该啊?
2010-04-21 22:18
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:10 
sorry,一时快了忘了-1,楼主请复习冒泡排序算法!


int main(int argc, char *argv[])
{
int n,i,j;
int temp;
int a[10];
printf("please input n\n");
scanf("%d",&n);
printf("please in put n no\n");
  for(i=0;i<n;i++)
      scanf("%d",&a[i]);
    for(i=0;i<n-1;i++)
      for(j=0;j<n-i-1;j++) /*这里要-1*/
      {
          if(a[j]>a[j+1])
         {
           temp=a[j+1];
          a[j+1]=a[j];
          a[j]=temp;
         }
     }


  for(i=0;i<n;i++)
      printf("%8d",a[i]);

    return 0;
}
2010-04-21 22:23
parkour
Rank: 2
等 级:论坛游民
帖 子:63
专家分:39
注 册:2009-1-3
收藏
得分:0 
我试过这样可以
#include<stdio.h>
int main()
{
        int n, i, j, pos, temp, a[10];
        printf("please input n\n");
        scanf("%d", &n);
        printf("please input n no\n");
        for(i = 0; i < n; i++)
                scanf("%d",&a[i]);
        for(i = 0; i < n - 1; i++)
        {
        //      pos = i;
                for(j = i + 1; j < n; j++)
                {
                        if(a[i] > a[j])
                        {
                                temp = a[i];
                                a[i] = a[j];
                                a[j] = temp;
                          }
             }
        }
        for(i = 0; i < n; i++)
                printf("%8d", a[i]);
        printf("\n");
        return 0;
}
2010-04-21 23:26
王启元
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2010-4-12
收藏
得分:0 
回复 7楼 parkour
嗯,不错。谢谢
2010-04-22 16:54
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:0 
直接把前面的那部分去了
 for(i = 0; i < n - 1; i++)
        for(j=i+1;j<n;j++)
                       if(a[i] > a[j])
                        {
                                temp = a[i];
                                a[i] = a[j];
                                a[j] = temp;
                          }
             }
        }
        for(i = 0; i < n; i++)
                printf("%8d", a[i]);
        printf("\n");
        return 0;
2010-04-22 17:00
快速回复:请帮我看看我的程序错在哪
数据加载中...
 
   



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

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