2.写一个接收用户输入的包含三个单词的字符串,每个单词用空格隔开, 要求检测到空格后, 将它后面的单词第一个字母和 最后一个字母调换位置(用指针完成)。用C语言完成
时间: 2024-09-19 21:02:58 浏览: 49
计算机等级考试三级网络技术上机试题一百道.pdf
在C语言中,你可以通过动态分配内存、使用指针以及遍历字符数组来实现这个功能。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
void swap_letters(char *word, int len) {
if (len > 1) {
char temp = word[0];
word[0] = word[len - 1];
word[len - 1] = temp;
}
}
int main() {
char input[100]; // 动态内存足够大能容纳三个单词
printf("请输入三个单词,每个单词由空格分隔: ");
fgets(input, sizeof(input), stdin); // 从标准输入读取
char *word_start = input; // 初始化指向单词开始的指针
while (*word_start != '\0') { // 遍历直到遇到字符串结束符
char *end_word = word_start + strcspn(word_start, " "); // 找到当前单词的结尾
if (*end_word == '\0') break; // 如果已经到达末尾,跳出循环
int word_len = end_word - word_start; // 计算单词长度
swap_letters(word_start, word_len); // 调换首尾字母
word_start = end_word + 1; // 更新指针到下一个单词的开头
}
printf("处理后的字符串: %s\n", input);
return 0;
}
```
在这个程序中,`swap_letters`函数用于交换单词的第一个字母和最后一个字母。`strcspn`函数帮助我们找到单词的结束位置。注意,由于fgets会多读入一个换行符,所以在使用之前需要去掉最后一字符。
阅读全文