| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:谁能帮我看看我的哪里错了 谢谢
只看楼主 加入收藏
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
结帖率:100%
收藏
已结贴  问题点数:17 回复次数:5 
谁能帮我看看我的哪里错了 谢谢
题目是:录入10对数字 是数组[10][2], 要求把第一列数字是从大到小排列,如果第一列数字相同的话,第二列数字从小到大排列.
输出后就像这样:2 3   65 12   23 3    6 98    25 10    65 3    1 2    2 1    43 12   63 23
Sorted in descending order for first element and ascending for second element of pair:
65 3
65 12
63 23
43 12
25 10
23 3
6 98
2 1
2 3
1 2


我写的是:
#include <stdio.h>
#define ROWS 10
#define COLS 2


int main (int argc, char *argv[]) {
   
   int A[ROWS][COLS],i,j,count_1,count_2,min,max_2;   
   printf("Enter 10 pairs of integers:\n\n");
   for (i=0;i<ROWS;i++){
       for (j=0;j<COLS;j++){
         scanf("%d",&A[i][j]);
       }
   }
   
   for (i=0;i<ROWS;i++){
       for(count_1=i+1;count_1<ROWS;count_1++){
          if (A[i][0]<A[count_1][0]){
             min=A[i][0],A[i][0]=A[count_1][0],A[count_1][0]=min;
             if (A[i][0]==A[count_1][0]){
                 for(j=0;j<COLS;j++){
                     for(count_2=j+1;count_2<COLS;count_2++){
                         if(A[i][j]>A[i][count_2]){
                           max_2=A[i][j],A[i][j]=A[i][count_2],A[i][count_2]=max_2;
                         }
                     }
                 }
             }
          }
       }
   }
   printf("Sorted in descending order for first element and ascending for second element of pair:\n");
   for(i=0;i<ROWS;i++){
      
         printf("%d%5d\n",A[i][0],A[i][1]);
         
      
   }
   printf("\n");
   return 0;
}

我写的非常难看 各位见谅了
哪位高手能帮我稍微详细的告诉我哪里错了 非常感谢
搜索更多相关主题的帖子: 2343 录入 element include second 
2010-04-13 17:01
freegod
Rank: 2
等 级:论坛游民
帖 子:33
专家分:73
注 册:2010-4-12
收藏
得分:17 
帮你改了一下:
#include <stdio.h>
#define ROWS 10
#define COLS 2


int main (int argc, char *argv[])
{
   
   int A[ROWS][COLS],i,j,count_1,t;   
   printf("Enter 10 pairs of integers:\n\n");
   for (i=0;i<ROWS;i++)
       for (j=0;j<COLS;j++)
         scanf("%d",&A[i][j]);
   for(i=0;i<ROWS;i++)
         printf("%d%5d\n",A[i][0],A[i][1]);//输出未处理的二维数组
   printf("\n");
   for (i=0;i<ROWS;i++)
       for(count_1=i+1;count_1<ROWS;count_1++)
       {
          if (A[i][0]<A[count_1][0])
          {
             t=A[i][0];A[i][0]=A[count_1][0];A[count_1][0]=t;//互换第一列元素的值
             t=A[i][1];A[i][1]=A[count_1][1];A[count_1][1]=t;//互换第二列元素的值,你的问题之一就是在互换第一列两个元素的时候,没互换第二列的两个元素
          }
          else  if (A[i][0]==A[count_1][0])
               for(j=1;j<COLS;j++)//在这个for循环里面,你写错了,如果第一列元素的值相等,那么比较它们对应的第二列的元素,并把它们按由小到大顺序排列
                         if(A[i][j]>A[count_1][j])
                         { t=A[i][j];A[i][j]=A[count_1][j];A[count_1][j]=t;}//互换第二列元素的值
       }
   
   printf("Sorted in descending order for first element and ascending for second element of pair:\n");
   for(i=0;i<ROWS;i++)
         printf("%d%5d\n",A[i][0],A[i][1]);
   printf("\n");
   return 0;
}

[ 本帖最后由 freegod 于 2010-4-13 19:54 编辑 ]
2010-04-13 19:22
freegod
Rank: 2
等 级:论坛游民
帖 子:33
专家分:73
注 册:2010-4-12
收藏
得分:0 
lz啊,写代码时注重格式是好事,但你也不用加那么多的“{}”,没必要的地方就别加了。
如:for(……)
         语句;
语句两边是不用加"{}"的。
2010-04-13 19:27
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
收藏
得分:0 
回复 3楼 freegod
呵呵 初学者嘛 按规矩来
2010-04-13 20:19
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
收藏
得分:0 
回复 2楼 freegod
噢噢 我明白了 非常详细清楚 超级感谢的
2010-04-13 20:21
美苏争霸
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2010-4-3
收藏
得分:0 
2楼的帅!!
2010-04-13 21:48
快速回复:谁能帮我看看我的哪里错了 谢谢
数据加载中...
 
   



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

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