请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include #include void fun( char *s,int num) { //请在此处填写代码 } main() { char s[10]; printf(“输入7个字符的字符串:”); gets(s); fun(s,7); printf(“\n%s”, s); }
时间: 2024-03-11 22:51:36 浏览: 74
根据题目要求,我们需要对字符串除首、尾字符外的5个字符进行降序排列。可以使用冒泡排序算法进行实现,具体步骤如下:
1. 首先将字符串中除首、尾字符外的5个字符存储到一个字符数组中。
2. 对该字符数组进行冒泡排序,将字符按照ASCII码从大到小进行排序。
3. 将排序后的字符数组中的字符依次覆盖原字符串中除首、尾字符外的5个字符。
下面给出相应的代码实现:
```
#include <stdio.h>
#include <string.h>
void fun(char *s, int num)
{
char temp;
int i, j;
char arr[5];
// 将字符串中除首、尾字符外的5个字符存储到字符数组中
for (i = 1; i < num - 1; i++)
{
arr[i - 1] = s[i];
}
// 冒泡排序,将字符按照ASCII码从大到小进行排序
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4 - i; j++)
{
if (arr[j] < arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 将排序后的字符数组中的字符依次覆盖原字符串中除首、尾字符外的5个字符
for (i = 1; i < num - 1; i++)
{
s[i] = arr[i - 1];
}
}
int main()
{
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s, 7);
printf("\n%s", s);
return 0;
}
```
阅读全文