编写函数char* invert_char(char s[]),输入一串字符(包括字母和其它符号),将字母中的大写转化为小写,将小写转化为大写,最后返回转换后的字符串。
时间: 2023-05-20 10:05:25 浏览: 163
以下是invert_char函数的完整代码:
```c
#include <stdio.h>
#include <string.h>
char* invert_char(char s[]) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] = s[i] - 'a' + 'A';
} else if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] = s[i] - 'A' + 'a';
}
}
return s;
}
int main() {
char s[] = "Hello, World!";
printf("%s\n", invert_char(s));
return 0;
}
```
这个函数会将输入字符串中的大写字母转换为小写字母,小写字母转换为大写字母,并返回转换后的字符串。
相关问题
用c语言基础知识编写代码编写一个函数invert(s),颠倒输入的字符串参数s后返回。在main()函数中测试此函数:从键盘输入一个正整数n(n∈[1,20]),然后再输入n个字符串(长度不大于100),对于每一个字符串,然后调用invert函数进行颠倒字符串操作,将颠倒后的字符串打印在屏幕上。
好的,这是一个关于C语言编程的问题。以下是invert函数的代码:
```c
#include <stdio.h>
#include <string.h>
void invert(char s[]) {
int i, j;
char temp;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
int main() {
int n, i;
char str[100];
scanf("%d", &n);
getchar();
for (i = 0; i < n; i++) {
fgets(str, 100, stdin);
invert(str);
printf("%s", str);
}
return 0;
}
```
函数invert接受一个字符串参数s,使用双指针法将字符串颠倒之后返回。在main函数中,先输入一个正整数n,再循环输入n个字符串,对每个字符串调用invert函数进行颠倒操作,最后输出颠倒后的字符串。注意使用fgets进行输入,避免输入的字符串长度超过数组长度。
(1)编写程序,对输入的一行小写字母进行加密处理。加密方法为:每一字母用其 ASCII 码加1的字母替换,字母 z 用 a 替换。要求替换过程用函数过程实现,函数的头部为 void encrypt ( char * s )。 (2)编写程序将整型数组 a 的元素按相反顺序存放。要求按相反顺序存放用函数过程实现,函数的头部为 void invert ( int * x , int n )。
(1) 代码如下:
```c
#include <stdio.h>
#include <string.h>
void encrypt(char *s);
int main() {
char s[100];
printf("请输入一行小写字母:");
fgets(s, 100, stdin);
encrypt(s);
printf("加密后的结果为:%s", s);
return 0;
}
void encrypt(char *s) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
if (s[i] == 'z') {
s[i] = 'a';
} else if (s[i] >= 'a' && s[i] < 'z') {
s[i]++;
}
}
}
```
这个程序中,我们先定义了一个 `encrypt` 函数,用于加密输入的一行小写字母。函数中用一个循环遍历整个字符串,对于每个字母,如果不是字母 z,就将其 ASCII 码加 1,然后替换原来的字母。如果是字母 z,则将其替换为字母 a。这个函数的参数是一个字符指针,指向要加密的字符串。
程序的主函数中,我们先定义了一个长度为 100 的字符数组 `s`,用于存放用户输入的一行小写字母。然后调用 `fgets` 函数从标准输入中读取这一行字母,并将其存入数组 `s` 中。接着调用 `encrypt` 函数对这一行字母进行加密,并输出加密后的结果。
(2) 代码如下:
```c
#include <stdio.h>
void invert(int *x, int n);
int main() {
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a) / sizeof(a[0]);
printf("原数组:");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
invert(a, n);
printf("翻转后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void invert(int *x, int n) {
int temp;
for (int i = 0; i < n / 2; i++) {
temp = x[i];
x[i] = x[n - i - 1];
x[n - i - 1] = temp;
}
}
```
这个程序中,我们先定义了一个 `invert` 函数,用于将整型数组 `a` 的元素按相反顺序存放。函数中用一个循环遍历数组的前一半,对于每个元素,将其与对应的相反位置的元素互换。注意,我们只需要循环数组的前一半,因为每次循环都会交换数组的两个元素,这样就可以将整个数组翻转过来。
程序的主函数中,我们先定义了一个整型数组 `a`,用于存放需要翻转的元素。然后输出原数组的内容,调用 `invert` 函数对数组进行翻转,并输出翻转后的数组内容。
阅读全文
相关推荐













