跪求:用指向指针方法对n个字符串排序并输出
各位大哥大侠帮帮小弟,弟是C新手~~
[解决办法]
void Sort(char** strs,int n){ for(int i = 0;i < n - 1;i++) { for(int j = 0;j < n - 1- i;j++) { if(strcmp(strs[j],strs[j + 1]) > 0) { char* strTemp = strs[j]; strs[j] = strs[j + 1]; strs[j + 1] = strTemp; } } }}int main(){ char *a[] = {"abc","dfe","aaa","few","9ifew"}; int n = sizeof(a) / sizeof(a[0]); Sort(a,n); for(int i = 0;i < n;i++) { printf("%s\n",a[i]); } return 0;}
[解决办法]
指针数组,其每个指针指向字符串,利用库函数排序
[解决办法]
使用qsort
#include<string.h>#include<stdio.h>#include<stdlib.h>int sortCompare(const void *arg1, const void *arg2){ return strcmp((const char*)arg1, (const char*)arg2); }int main(){ char *str[] = {"one","two","three","four","five"}; int n = sizeof(str) / sizeof(str[0]); qsort((void*)str, n, sizeof(char*), sortCompare); for (int i=0; i<n; i++) puts(str[i]); system("PAUSE"); return 0;}
[解决办法]
#include "stdio.h"#include "stdlib.h"#include "string.h"void sort(char * str[],int size){ int i,j; char *temp; for(i=0;i<size-1;i++) { for(j=i+1;j<size;j++) { if(strcmp(str[i],str[j])>0) { temp=str[i]; str[i]=str[j]; str[j]=temp; } } }} int main(void){ char *p[5],str[5][20]; int i; for(i=0;i<5;i++) { scanf("%s",str[i]); p[i]=str[i]; } sort(p,5); printf("排序后的结果为:\n"); for(i=0;i<5;i++) printf("%s\n",p[i]); system("pause"); return 0;}