题目:从键盘接收一行字符串,然后按照字符顺序(ASC码)从小到大进行排序后删除重复的字符。要求使用函数 int rankChar(char str[]) { } 完成,函数返回值为删除字符的个数,打印输入的字符串,删除的字符个数及最后得到的字符串。
#include<stdio.h>
#include<string.h>
#include <conio.h>
int rankChar(char input[], char *output)
{
int i, j, k = 0;
int flag;
int length = strlen(input);
for (i = 0; i < length; i++)
{
for (j = 0; j <length-i-1; j++)
{
if (input[j] >= input[j + 1])
{
char temp;
temp = input[j];
input[j] = input[j + 1];
input[j + 1] = temp;
}
}
}
puts(input);
for (i = 0; i<length; i++)
{
flag = 1;
for (j = 0; j < i; j++)
{
if (output[j] == input[i])
flag = 0;
}
if (flag)
output[k++] = input[i];
}
printf("删除了%d个字符后字符串:",length-k);
output[k] = '\0';
puts(output);
return k;
}
void main()
{
char str_input[50];
char str_output[50] = { "0" };
printf("输入字符串为:");
scanf_s("%s", str_input, 20);
rankChar(str_input, str_output);
getchar();
getchar();
}