7-6 查找字符串中ASCII编码最大的并删除 (10分)
动态创建不大于50字节的一维数组(大小由用户输入,范围为2 <= n <=50),并输入最大可能的字符串。编程实现删除字符串中ASCII码最大的字符,并输出删除后的字符串。请仔细看输入输出示例,示例中的“[空格]”表示在那个位置上输入“空格”。
输入格式:
用户输入一个整数,代表字符数组的容量。可以接收的有效字符数比这个数少1。例如用户输入50,表示数组容量为50,但只能存放49个有效字符。 输入整数后按回车键,在下一行输入一个字符串。字符串中可能含有空格,输入完毕按回车键。
输出格式:
一个字符串,去掉了ASCII编码最大的字符。
输入样例:
11
abcdadbbcc
输出样例:
abcabbcc
输入样例:
10
a[空格]b[空格]c[空格]d[空格][空格]
输出样例:
a[空格]b[空格]c[空格][空格][空格]
#include <malloc.h>
#include<stdio.h>
#include<string.h>
int main()
{
int iLen;
int i;
int max=0;
int j;
int isSameChar=1;
char *myStr;
char *myStrCopy;
scanf("%d", &iLen);
getchar();//接收回车符(麻烦的c)
myStr=(char *)malloc(sizeof(char)*iLen);//动态创建两个char类型的数组
myStrCopy= (char *)malloc(sizeof(char)*iLen);
gets(myStr) ;
for (i = 0; myStr[i]!='\0'; i++)//字符串数组未结束
{
if (myStr[i]>myStr[max])
{
max = i;
}
if(myStr[i]!=myStr[0])
{
isSameChar=0;//不是同一个字符
}
}
j = 0;
if (isSameChar == 1)
{
printf("%s\n", myStr);
}
else
{
for (i = 0; myStr[i]!='\0'; i++)
{
if (myStr[i]!=myStr[max])
{
myStrCopy[j] = myStr[i];
j++;
}
}
myStrCopy[j] = '\0';//最后一位赋'\0'
printf("%s\n", myStrCopy);
}
return 0;
}