c语言编写程序 输入一个字符串(长度不超过200,不包含空格,至少有1个字符),除首尾字符外,将其余的字符按ascii码降序排列,然后输出。
时间: 2024-05-07 22:21:55 浏览: 142
以下是一个可能的C语言程序实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[201];
int len, i, j, temp;
scanf("%s", str);
len = strlen(str);
for (i = 1; i < len-1; i++) {
for (j = i+1; j < len-1; j++) {
if (str[i] < str[j]) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
printf("%s\n", str+1); // 输出除首字符外的结果
return 0;
}
```
该程序首先读取一个长度不超过200、不包含空格的字符串,并计算出其长度。然后使用冒泡排序算法对除首尾字符外的字符按ASCII码降序排列,最后输出结果。需要注意的是,输出时应该从第二个字符开始输出(即`str+1`),以排除首字符。
相关问题
请用c语言实现编写程序,删除字符串中间的所有星号*,如果首尾有*号,保留不变。字符串长度不超过200。 如:输入***street*****music***,则输出***streetmusic*** 输入:带*号的字符串(字符串中不含空格)。 输出:中间没有*号的字符串。
在C语言中,你可以使用循环和条件语句来实现这个功能。以下是一个简单的示例函数,它接受一个字符串作为输入,并返回处理后的结果:
```c
#include <stdio.h>
#include <string.h>
char* removeMiddleAsterisks(char* str) {
int len = strlen(str);
if (len <= 2) { // 如果字符串长度小于等于2,直接返回
return str;
}
int start = 0, end = len - 1;
while (start < end) {
if (str[start] == '*') {
start++;
continue;
}
if (str[end] == '*') {
end--;
continue;
}
// 如果两边都不是 *, 就复制字符到新的位置
str[start] = str[end];
start++, end--;
}
// 添加结束标志(如果原字符串首尾有*,则保持不变)
str[start] = '\0'; // 如果 end 指向非*字符,则将 * 放回字符串尾部
// 如果 str[start] 还是 *,说明所有字符都被*包围,不修改
return str;
}
int main() {
char input[201] = "***street*****music***";
char* result = removeMiddleAsterisks(input);
printf("处理后的字符串: %s\n", result);
free(result); // 注意释放内存,这里仅作演示,实际应用中需要确保正确管理内存
return 0;
}
```
使用c语言编写一个程序,题目描述:编写一个如下声明的递归函数,使得字符串Str倒序,并在主程序中调用该函数测试效果 函数声明:void Reverse(string & Str);输入格式:输入为连续多行的多个字符串,一个字符串一行,每个字符串由阿拉伯数字、字母或特殊字符组成,字符串中不包括空格。输出格式:输出为输入倒序后的字符串,一行输出一个字符串,对应于一行输入字符串的倒序字符串。输出为输入倒序后的字符串,一行输出一个字符串,对应于一行输入字符串的倒序字符串。
以下是使用C语言编写的程序,实现字符串倒序的功能:
```c
#include <stdio.h>
#include <string.h>
// 递归函数,用于实现字符串倒序
void Reverse(char *str)
{
int len = strlen(str);
if (len <= 1) {
return;
}
char tmp = str[0]; // 交换字符串的首尾字符
str[0] = str[len-1];
str[len-1] = tmp;
Reverse(str+1); // 递归调用
}
int main()
{
char str[100];
while (fgets(str, sizeof(str), stdin)) {
str[strlen(str)-1] = '\0'; // 去掉换行符
Reverse(str);
printf("%s\n", str);
}
return 0;
}
```
程序使用了递归函数实现字符串的倒序。在主函数中,使用fgets读取输入字符串,去掉换行符后,调用递归函数Reverse实现倒序,并输出结果。
阅读全文