jun-csbio / CClass_ZJUT

CClass_ZJUT
1 stars 0 forks source link

字符串冒泡排序出现奇怪字符 #47

Open XiaoBaiBZS opened 1 year ago

XiaoBaiBZS commented 1 year ago
#include<stdio.h>
#include<string.h>
int main() {
    char s[][50]= {"C","E","A","B","K"};
    char t[50];
    for(int i=0; i<4; i++) {
        for(int j=0; j<5-i; j++) {
            if(strcmp(s[j],s[j+1])>0) {
                strcpy(t,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],t);
            }
        }
    }
    for(int k=0; k<5; k++) {
        printf("%s",s[k]);
    }
    return 0;
}

输出:

A@BCE

经过测试如果把这个字符串数组改成纯数字就没有问题,包括China,America,England都有这种问题。进而通过下面代码输出每一次循环后的结果进行检测:

#include<stdio.h>
#include<string.h>
int main() {
    char s[][50]= {"C","E","A","B","K"};
    char t[50];
    for(int i=0; i<4; i++) {
        for(int j=0; j<5-i; j++) {
            if(strcmp(s[j],s[j+1])>0) {
                strcpy(t,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],t);
            }
            for(int k=0; k<5; k++) {
                printf("%s",s[k]);
            }
            printf("\n");
        }
    }
    for(int k=0; k<5; k++) {
        printf("%s",s[k]);
    }
    return 0;
}

输出:

CEABK CAEBK CABEK CABEK CABE@ ACBE@ ABCE@ ABCE@ ABC@E ABC@E ABC@E AB@CE AB@CE A@BCE A@BCE

XiaoBaiBZS commented 1 year ago
#include<stdio.h>
#include<string.h>
int main() {
  char s[][50]= {"C","E","A","B","K"};
  char t[50];
  for(int i=0; i<4; i++) {
      for(int j=0; j<5-i; j++) {
          if(strcmp(s[j],s[j+1])>0) {
              strcpy(t,s[j]);
              strcpy(s[j],s[j+1]);
              strcpy(s[j+1],t);
          }
      }
  }
  for(int k=0; k<5; k++) {
      printf("%s",s[k]);
  }
  return 0;
}

输出:

A@BCE

经过测试如果把这个字符串数组改成纯数字就没有问题,包括China,America,England都有这种问题。进而通过下面代码输出每一次循环后的结果进行检测:

#include<stdio.h>
#include<string.h>
int main() {
  char s[][50]= {"C","E","A","B","K"};
  char t[50];
  for(int i=0; i<4; i++) {
      for(int j=0; j<5-i; j++) {
          if(strcmp(s[j],s[j+1])>0) {
              strcpy(t,s[j]);
              strcpy(s[j],s[j+1]);
              strcpy(s[j+1],t);
          }
          for(int k=0; k<5; k++) {
              printf("%s",s[k]);
          }
          printf("\n");
      }
  }
  for(int k=0; k<5; k++) {
      printf("%s",s[k]);
  }
  return 0;
}

输出:

CEABK CAEBK CABEK CABEK CABE@ ACBE@ ABCE@ ABCE@ ABC@E ABC@E ABC@E AB@CE AB@CE A@BCE A@BCE