C语言、C++字符串按照ASCII排序

  1. C语言(字符串数量已知)
//C语言/10个(较大常数)字符串
#include
#include
int main()
{
	char arr[10][100];//定义字符串数组
	int i,j;
	for (i = 0; i < 10; i++)//输入
		scanf("%s", arr[i]);
	//冒泡排序
	for (i = 1; i<=9; i++) {
		for (j = 0; j < 10 - i; j++) {
			//strcmp函数根据传入两数据大小会返回1(前大),0(一样大),-1(后大)
			if (strcmp(arr[j], arr[j + 1]) > 0) {
				char temp[100];
				strcpy(temp, arr[j]);
				strcpy(arr[j], arr[j + 1]);
				strcpy(arr[j + 1], temp);  //字符串不能直接赋值交换,但可以复制交换
			}
		}
	}
	for (i = 0; i < 10; i++)
		printf("%s\n", arr[i]);
	return 0;
}

2.C语言(字符串数量未知)

//C语言/n个字符串
#include 
#include 
#include 

int compareStrings(const void* a, const void* b) {
    return strcmp(*(const char**)a, *(const char**)b);
}

int main() {
    int n;
    printf("Enter the number of strings: ");
    scanf("%d", &n);

    char** strings = (char**)malloc(n * sizeof(char*)); // 动态分配存储字符串的指针数组

    int i;
    for (i = 0; i < n; i++) {
        strings[i] = (char*)malloc(100 * sizeof(char)); // 动态分配存储每个字符串的内存
        printf("Enter string %d: ", i + 1);
        scanf("%s", strings[i]);
    }

    qsort(strings, n, sizeof(char*), compareStrings);

    printf("Sorted strings:\n");
    for (i = 0; i < n; i++) {
        printf("%s\n", strings[i]);
    }

    for (i = 0; i < n; i++) {
        free(strings[i]); // 释放每个字符串的内存
    }
    free(strings); // 释放指针数组的内存

    return 0;
}

3.C++(字符串数量已知)

//C++/3个(常数个)字符串
#include
#include
using namespace std;
int main()
{
	string a[3];//定义字符串数组
	int i;
	for (i = 0; i < 3; i++)//输入
		cin >> a[i];
	sort(a, a+3);//从小到大排序
	for (i = 0; i < 3; i++)//输出
		cout << a[i] << endl;
	return 0;
}
  • 4.C++(字符串数量未知)
//C++/n个字符串
#include
#include
#include
using namespace std;
int main()
{
	int n,i;
	cin >> n;//输入需要比较的字符串数目
	vectora(n);//定义动态数组
	for (i = 0; i < a.size(); i++) //输入
		cin >> a[i];
	sort(a.begin(),a.end());//从小到大排序
	for (i = 0; i < a.size(); i++)//输出
		cout << a[i] << endl;
	return 0;
}

你可能感兴趣的:(算法,c++,c语言)