您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 大家帮我看看,谢谢

大家帮我看看,谢谢

来源:网络整理     时间:2016/7/30 17:26:45     关键词:

关于网友提出的“ 大家帮我看看,谢谢”问题疑问,本网通过在网上对“ 大家帮我看看,谢谢”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 大家帮我看看,谢谢
描述:

先描述一下问题:我做的是输入10行字符串,然后按字母顺序每行排列好,为了练习指针数组的函数调用所以这里用了指针数组,当然只用一个二维数组也是可以的.
现在的主要问题是我想输入exit时结束输入,直接排序,现在的程序却一定要全输入完.
还有就是我的排序循环效率不高,望高手指导.
#include 
#include 
#include 
#define MAX 10
char *SomeString[MAX];
char InputString();
char SortString(char *ptr[]);
int main (void)
{
    InputString();
    SortString(SomeString);
    free(SomeString);
    
    system("PAUSE");
    return 0;
}
char InputString()
{
     int i=0;
     
     
     printf("Enter string.Enter exit to quit.\n");
     for (i=0;i<>
     {
         SomeString[i] = malloc(26*sizeof(char));//分配空间 
         if (SomeString[i] == NULL)              
            {
              puts("No enough memory.");
              return 1;
            }
     }
     for (i=0;i<>
     {
         scanf("%s", SomeString[i]);//输入字符串 
         
        if(SomeString[i]=="exit")//本来想判断输入EXIT就退出的,现在不灵了。大家看看 
                return;
         
     }
     return;
     
}
char SortString(char *ptr[])
{
     int i,j=0,k=1;
     
     char TempString[MAX][26];
     char Temp;
     
      for (i=0;i<>
     {
        int m=0;
        strcpy(TempString[i],ptr[i]); //把指针数组的内容复制到二维数组中 
        
        while(TempString[i][m]!='\0')
        {
               m++;                   //   计算字符串长度 
        }
        for(j=0;j
           for(k=j+1;k<>
             {
                if(TempString[i][j]>TempString[i][k])
                {
                      
                      Temp=TempString[i][j];
                      TempString[i][j]=TempString[i][k];
                      TempString[i][k]=Temp;
                }
             
             }
     printf("%s\n",TempString[i]);
     }
     
     return;
}


解决方案1:

#include 
#include 
#include 
#define MAX 10
char *SomeString[MAX];
int  count=0;
bool InputString();
void SortString(char *ptr[],int n);
void printString(char *ptr[],int n);
int main (void)
{
    InputString();
    SortString(SomeString,count);
printString(SomeString,count);
    for(int i=0;i<>
free(SomeString[i]);
    system("PAUSE");
    return 0;
}
bool InputString()
{
     int i;
     
     
     printf("Enter string.Enter exit to quit.\n");
     for (i=0;i<>
     {
         SomeString[i] = (char*)malloc(26*sizeof(char));
         if (SomeString[i] == NULL)              
            {
              puts("No enough memory.");
              exit(0);
            }
  scanf("%s", SomeString[i]);
  if(!strcmp(SomeString[i],"exit"))
  {
    free(SomeString[i]);
    SomeString[i]=0;
                return false;
  }
  count++;
     }
     return true;
     
}
void SortString(char *ptr[],int n)
{
     int i,k;
     
     char* Temp;
     
      for (i=1;i<>
      {
           for(k=i;k<>
             {
                if(strcmp(ptr[k-1],ptr[k])>0)
                {
                      
                      Temp=ptr[k-1];
                      ptr[k-1]=ptr[k];
                      ptr[k]=Temp;
                }
             
             }
  }
}
void printString(char *ptr[],int n)
{
for(int i=0;i<>
{
printf("%s\n",ptr[i]);
}
}
我给LZ改了一下,LZ的程序错误好多,可能改动有些大,主要是参数方面的,给你多了一个字符串个数的参数,你的排序也有很大的问题,也给你改了

解决方案2:

for (i=0;i<>
     {
         scanf("%s", SomeString[i]);
         
        if(strcmp(SomeString[i],"exit")==0) //比较字符串
           return;
         
     }

解决方案3:

if(SomeString[i]=="exit")//本来想判断输入EXIT就退出的,现在不灵了。大家看看 
-------------------------------
这个格式用在string类型是可以的,但用在char*就不可以了。
这里比较的是两个指针,比较指针指向的字符串的话要使用strcmp(SomeString[i],"exit"),


以上介绍了“ 大家帮我看看,谢谢”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3028948.html

相关图片

相关文章