标题:就定义变量及变量赋值问题,请教前辈。
只看楼主
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
结帖率:75%
 问题点数:0 回复次数:2 
就定义变量及变量赋值问题,请教前辈。
代码如下。是从文件读入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 for strcpy 
2019-08-17 00:30
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
有个k就减少了字符串交换的次数,提高了运行速度。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2019-08-17 11:23
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
得分:0 
回复 2楼 forever74
好的,谢谢您!
2019-08-17 17:01



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




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

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