编写函数fun,其功能是将字符数组中存放的字符串中下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。在main函数中定义字符数组,从键盘输入字符串为其赋值,然后调用函数fun,再在ma
时间: 2023-05-31 12:17:46 浏览: 370
二级c机试题题库(50套)
### 回答1:
编写函数 fun,其代码如下:
```
void fun(char str[]) {
int i;
for (i = 0; str[i] != '\0'; i++) {
if (i % 2 == 1 && isalpha(str[i])) {
str[i] = toupper(str[i]);
}
}
}
```
在 main 函数中,定义字符数组并从键盘输入字符串,然后调用函数 fun,最后输出转换后的字符串。代码如下:
```
int main() {
char str[100];
printf("请输入字符串: ");
scanf("%s", str);
fun(str);
printf("转换后的字符串: %s", str);
return 0;
}
```
### 回答2:
in函数中输出转换后的字符串。
要实现这个功能,我们可以先定义一个函数fun,其输入参数为一个字符数组,输出为转换后的字符数组。函数内部,我们可以用循环遍历一遍输入的字符数组,判断每个字符是否在奇数位上,如果是,则判断是否为字母并将其转换为大写字母,最后输出转换后的字符数组。实现代码如下:
```c
#include <stdio.h>
#include <ctype.h>
void fun(char s[]) {
int i;
for (i = 0; s[i] != '\0'; i++) {
if (i % 2 == 1 && isalpha(s[i])) { // 判断是否为奇数位且为字母
s[i] = toupper(s[i]); // 转换为大写字母
}
}
}
int main() {
char str[100]; // 定义字符数组
printf("请输入字符串: ");
fgets(str, sizeof(str), stdin); // 从键盘输入字符串
fun(str); // 调用函数fun转换字符数组
printf("转换后的字符串为: %s\n", str); // 输出转换后的字符串
return 0;
}
```
输入字符串后,输出结果如下:
```
请输入字符串: hello, world!
转换后的字符串为: hElLo, WoRlD!
```
可以看到,程序成功将奇数位上的字母转换为了大写字母。
### 回答3:
in函数中输出转换后的字符串。
编写这个函数的主要思路是遍历字符串中的每一个字符,判断其下标是否为奇数,如果是则判断该字符是否为字母,如果是字母,则将其转换为大写字母。
具体的实现步骤如下:
1. 定义函数void fun(char *str),其中参数str为待转换的字符串,无返回值。
2. 判断字符串的长度是否为0,如果是则直接返回。
3. 通过循环遍历字符串中的每一个字符,判断其下标是否为奇数。
4. 如果是奇数下标,则进一步判断该字符是否为字母。如果是字母,则将其转换为大写字母。这可以通过判断字符的ASCII码来实现。如果该字符的ASCII码在'a'~'z'之间,则将其转换为大写字母,即将其ASCII码减去32。否则不做任何处理。
5. 在main函数中,定义一个字符数组,并从键盘输入字符串。调用函数fun将字符串中下标为奇数位置上的字母转换为大写。然后输出转换后的字符串。
具体代码如下:
```
#include <stdio.h>
void fun(char *str);
int main() {
char str[100];
printf("请输入字符串:");
gets(str);
fun(str);
printf("转换后的字符串为:%s", str);
return 0;
}
void fun(char *str) {
int i;
for(i=0; str[i]!='\0'; i++) {
if(i%2 != 0 && (str[i]>='a' && str[i]<='z')) {
str[i] -= 32; // 将小写字母转换为大写字母
}
}
}
```
需要注意的是,在输入字符串时最好使用fgets或者scanf("%s",str)代替gets,因为gets没有输入长度限制,容易引发缓冲区溢出问题。
阅读全文