每两个字母前后交换,包括感叹号 句号等所有字符 不包括空格 C语言代码
时间: 2024-09-25 22:19:58 浏览: 32
在C语言中,你可以通过两层循环来实现这个需求。首先遍历输入字符串,然后交换每个非空字符与其后的字符。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void swap_chars(char *str) {
int len = strlen(str); // 获取字符串长度
for (int i = 0; i < len / 2; i++) { // 遍历到一半位置
char temp = str[i]; // 保存当前字符
str[i] = str[len - 1 - i]; // 交换字符
str[len - 1 - i] = temp; // 将刚交换过去的字符放回原位置
}
}
int main() {
char input[] = "Hello! World."; // 示例输入字符串
printf("Original string: %s\n", input);
swap_chars(input);
printf("After swapping characters: %s\n", input);
return 0;
}
```
当你运行这段代码时,输入的"Hello! World."会变成".dlroW! olleH"。
相关问题
每两个字母前后交换,包括感叹号 句号 空格等所有字符 C语言代码
在C语言中,如果你想要实现每两个字母前后交换的功能,可以编写一个简单的循环处理字符串的函数。下面是一个示例代码,它会接受一个字符串作为输入,并返回一个新的字符串,其中字符按照每两个字母交替排列:
```c
#include <stdio.h>
#include <string.h>
void swap_pairs(char *str) {
int len = strlen(str);
if (len <= 1 || len % 2 == 0) {
printf("输入的字符串长度不足或为偶数,无法进行每两个字母交换。\n");
return;
}
for (int i = 0; i < len - 1; i += 2) {
char temp = str[i];
str[i] = str[i + 1];
str[i + 1] = temp;
}
}
int main() {
char input[100]; // 假设输入不超过100个字符
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
// 移除fgets读取的换行符
input[strcspn(input, "\n")] = '\0';
swap_pairs(input);
printf("变换后的字符串: %s\n", input);
return 0;
}
```
当你运行这个程序并输入一个字符串时,例如 "Hello, World!",输出将会是 "!dlroW ,olleH"。
c语言输入一行字符,统计并输出其中有多少个单词,单词之间用空格、逗号、句号、感叹号等分隔。
在C语言中,统计一串字符中的单词数量,你可以使用以下方法:
1. **接收输入**:
使用`scanf`或`fgets`函数接收一行字符作为输入,例如:
```c
char input[1000]; // 足够大的数组存储输入
fgets(input, sizeof(input), stdin);
```
2. **去除换行符**:
输入可能包含换行符`\n`,使用`strtok`函数去掉它:
```c
char *token = strtok(input, " .!,"); // 分割符集包括空格、逗号、句号和感叹号
```
3. **循环读取单词**:
循环处理`strtok`返回的每一个单词,直到`NULL`为止:
```c
int word_count = 0;
while (token != NULL) {
word_count++;
token = strtok(NULL, " .!,");
}
```
4. **输出结果**:
打印出单词的数量:
```c
printf("共有 %d 个单词。\n", word_count);
```
完整的代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[1000];
fgets(input, sizeof(input), stdin);
// 去除换行符
char *token = strtok(input, " .!,");
int word_count = 0;
while (token != NULL) {
word_count++;
token = strtok(NULL, " .!,");
}
printf("共有 %d 个单词。\n", word_count);
return 0;
}
```
阅读全文