标题:关于用选择法对字符串排序的问题,恳请解疑。
只看楼主
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
结帖率:75%
已结贴  问题点数:10 回复次数:5 
关于用选择法对字符串排序的问题,恳请解疑。
代码如下。是从文件读入3个字符串,给予排序,并将结果输入磁盘。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{  FILE *fp;
   char  str[3][10],temp[10];   // str是用来存放字符串的二维数组,temp是临时数组  
   int i,j,k,n=3;
   printf("Enter strings:\n");    // 提示输入字符串 */
   for(i=0;i<n;i++)         
     gets(str[i]);              // 输入字符串
   
   for(i=0;i<n-1;i++)           // 用选择法对字符串排序  
     {k=i;
      for(j=i+1;j<n;j++)
        if(strcmp(str[k],str[j])>0) k=j;
      if(k!=i)
        {strcpy(temp,str[i]);  
         strcpy(str[i],str[k]);
         strcpy(str[k],temp);
        }
     }
   if((fp=fopen("D:\\CC\\string.dat","w"))==NULL)     // 打开磁盘文件  
        {
         printf("can't open file!\n");
         exit(0);
        }
   printf("\nThe new sequence:\n");
   for(i=0;i<n;i++)
      {fputs(str[i],fp);fputs("\n",fp);      
       printf("%s\n",str[i]);                 // 在屏幕上显示字符串  
     }
   return 0;
}
我的疑问是:在用选择法排序时,为什么要定义个k?它的作用是什么?

我做如下改动可以么?
 .......
 for(i=0;i<n-1;i++)           // 用选择法对字符串排序  
     {
      for(j=i+1;j<n;j++)
        if(strcmp(str[i],str[j])>0)
        {strcpy(temp,str[i]);  
         strcpy(str[i],str[j]);
         strcpy(str[j],temp);
        }
    ...........
搜索更多相关主题的帖子: 字符串 排序 str temp for 
2019-08-18 16:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
我的疑问是:在用选择法排序时,为什么要定义个k?它的作用是什么?
------ 为了少交换几次

我做如下改动可以么?
----- 可以
2019-08-19 08:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
看到了一个同样的帖子
https://bbs.bccn.net/thread-496441-1-1.html

请问楼主,为什么要重复发帖?
2019-08-19 09:22
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
得分:0 
回复 3楼 rjsp
谢谢您!
重复发帖,是因为我理解力差,想多几个人解释,好相互佐证,方便理解。
您两位,给的方向一致,我下去再仔细的钻研一下。
2019-08-20 09:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 4楼 wj66
别人有不同答案时,会在你那个帖子下回复,不需要你重复发帖。
2019-08-20 11:17
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
得分:0 
回复 5楼 rjsp
嗯嗯,不好意思。刚开始,以后绝不会再重发帖了。
2019-08-22 18:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496462-1-1.html




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

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