编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。c语言
时间: 2023-06-12 12:06:57 浏览: 624
以下是一个简单的C程序,可以实现该功能:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, j, len;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
// 对字符串进行排序
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (str[j] > str[j + 1]) {
char temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
// 删除重复的字符
for (i = 0; i < len; i++) {
if (str[i] != str[i + 1]) {
printf("%c", str[i]);
}
}
return 0;
}
```
这个程序首先接收一个字符串,然后使用冒泡排序对字符串进行排序,最后遍历字符串并删除重复的字符。
相关问题
用C语言编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。
在C语言中,我们可以使用数组、循环和临时存储来实现这个功能。下面是一个简单的示例程序,它首先从用户输入接收字符串,然后排序并去除重复字符:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h> // 包含处理字符的库
#define MAX_CHAR 100 // 设置最大字符数
char str[MAX_CHAR];
char sortedStr[MAX_CHAR]; // 用于存放排序后的字符串
int sortedIndex = 0; // 已排序字符的位置索引
// 检查是否为字母
int isAlpha(char c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
void removeDuplicates() {
int i, j;
for (i = 0; i < strlen(sortedStr); ++i) {
if (isAlpha(sortedStr[i])) { // 只保留字母
while (sortedStr[j] != '\0' && sortedStr[j] != sortedStr[i]) {
++j;
}
if (sortedStr[j] == '\0') { // 如果后面没找到重复,添加当前字符
sortedStr[sortedIndex++] = sortedStr[i];
}
}
}
sortedStr[sortedIndex] = '\0'; // 添加结束符
}
void sortAndRemoveDuplicates() {
char temp[MAX_CHAR];
int len = strlen(str);
for (int i = 0; i < len; ++i) {
for (int j = i + 1; j < len; ++j) {
if (str[i] > str[j]) { // 从小到大排序
temp[sortedIndex++] = str[j];
str[j] = str[i];
str[i] = temp[i];
} else if (isAlpha(str[j]) && str[j] == str[i]) { // 去除重复字母
continue;
}
}
}
memcpy(sortedStr, str, sortedIndex+1); // 将排序结果复制回临时数组
removeDuplicates(); // 再次去除重复
}
int main() {
printf("请输入一个字符串: ");
fgets(str, MAX_CHAR, stdin); // 接收用户输入
str[strlen(str)-1] = '\0'; // 删除fgets带来的换行符
sortAndRemoveDuplicates();
printf("排序并去重后的字符串: %s\n", sortedStr);
return 0;
}
```
当你运行此程序,它会提示你输入一个字符串,然后显示排序并去重后的结果。注意,这个程序只考虑了小写字母,并且假设输入的都是英文字符。如果你需要处理其他语言的字符,可能需要修改`isAlpha`函数。
用c语言编写一个代码,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符
好的,这是一个很好的问题。以下是C语言的代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
int len = strlen(str);
for(int i = 0; i < len; i++){
for(int j = i+1; j < len; j++){
if(str[i] > str[j]){
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
char newStr[100];
newStr[0] = str[0];
int newLen = 1;
for(int i = 1; i < len; i++){
if(str[i] != str[i-1]){
newStr[newLen++] = str[i];
}
}
newStr[newLen] = '\0';
printf("排序后的字符串是:%s\n", newStr);
return 0;
}
```
请注意,此代码经过简化,并且没有进行错误处理。但是,它可以实现您的需求。祝您运行愉快!
阅读全文