C语言实现(要求使用strtok函数):输入字符串:c++:1,python:3,c:5,java:4,rust:2 请将其中的字符串按照升序排序输出:(输出的格式按照逗号隔开) c,c++,java,python,rust
时间: 2023-08-10 10:02:45 浏览: 184
以下是使用C语言和strtok函数实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
char *token;
char *langs[5] = {NULL};
int counts[5] = {0};
int i, j, temp_count;
char *temp_lang;
// 读入字符串
printf("请输入字符串:");
fgets(str, MAX_LEN, stdin);
// 使用strtok函数解析字符串
token = strtok(str, ",:");
while (token != NULL) {
for (i = 0; i < 5; i++) {
if (langs[i] == NULL || strcmp(langs[i], token) == 0) {
langs[i] = token;
token = strtok(NULL, ",:");
counts[i] += atoi(token);
break;
}
}
}
// 使用冒泡排序将语言按照升序排列
for (i = 0; i < 4; i++) {
for (j = 0; j < 4-i; j++) {
if (strcmp(langs[j], langs[j+1]) > 0) {
temp_lang = langs[j];
langs[j] = langs[j+1];
langs[j+1] = temp_lang;
temp_count = counts[j];
counts[j] = counts[j+1];
counts[j+1] = temp_count;
}
}
}
// 输出结果字符串
printf("按升序排列的结果为:");
for (i = 0; i < 5; i++) {
printf("%s", langs[i]);
if (i < 4) {
printf(",");
}
}
return 0;
}
```
输入示例:
```
请输入字符串:c++:1,python:3,c:5,java:4,rust:2
```
输出示例:
```
按升序排列的结果为:c,c++,java,python,rust
```
阅读全文