编写函数void fun(char *s ,char *t),将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指字符数组中。用c语言编写且有主函数
时间: 2024-05-02 17:17:38 浏览: 103
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s, char *t) {
int i, j = 0;
for (i = 0; s[i] != '\0'; i++) {
if (i % 2 == 0 || s[i] % 2 == 0) {
t[j++] = s[i];
}
}
t[j] = '\0';
}
int main() {
char s[100], t[100];
printf("请输入字符串s:");
scanf("%s", s);
fun(s, t);
printf("处理后的字符串t为:%s\n", t);
return 0;
}
```
函数 `fun()` 接受两个参数,分别是源字符串 `s` 和目标字符串 `t`。函数中使用循环遍历源字符串中的每个字符,如果该字符位于奇数位置或其 ASCII 码为偶数,则将其添加到目标字符串中。最后,将目标字符串末尾的字符设为 '\0',以标记字符串的结束。
在 `main()` 函数中,首先输入源字符串 `s`,然后调用 `fun()` 函数进行处理,将结果存储在目标字符串 `t` 中,并输出由 `fun()` 处理后的字符串 `t`。
相关问题
编写函数void fun(char *s,char t[]),将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
### 回答1:
函数的实现如下:
void fun(char *s, char t[]) {
int i, j;
j = 0;
for (i = 0; s[i] != '\0'; i++) {
if (i % 2 == 1 && s[i] % 2 == 1) {
t[j] = s[i];
j++;
}
}
t[j] = '\0';
}
该函数的功能是将字符串s中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,然后将剩余字符所形成的一个新串放在t所指的数组中。函数中使用了两个变量i和j,其中i用于遍历字符串s,j用于记录新串t中的字符个数。如果s[i]是下标为奇数且ascii值也为奇数的字符,就将它添加到新串t中。最后,将新串t的末尾设置为'\0',表示字符串的结束。
### 回答2:
这道题需要我们编写一个删除字符串中指定字符的函数,同时还需要判断字符的下标是否为奇数以及ascii码是否为奇数,最终将保留的字符放在新的数组t中。
我们可以这样写这个函数:
void fun(char *s, char t[]) {
int j = 0;
for (int i = 0; s[i] != '\0'; i++) {
if (i % 2 == 0 && s[i] % 2 != 0) {
t[j] = s[i];
j++;
}
}
t[j] = '\0';
}
我们的主要思路是遍历原字符串s,判断每个字符的下标是否为奇数,并且判断它的ascii码是否为奇数。我们使用 i % 2 == 0 来判断下标是否为偶数,使用 s[i] % 2 != 0 来判断ascii码是否为奇数。
如果符合条件,我们就将这个字符添加到新字符串t的末尾,并且将j自增1,以便继续向t中添加下一个字符。最后我们在t的末尾添加一个空字符'\0',以表示t的结束。
这个函数的时间复杂度是O(n),其中n为原字符串s的字符个数。需要注意的是,我们在函数调用之前必须要为t开辟足够的空间,以确保能够存储字符串s中符合条件的字符。
### 回答3:
题目要求编写一个函数,将s所指字符串中除了下标为奇数,同时ascii值也为奇数的字符之外,其余的所有字符都删除,并将剩余字符组成的一个新串放在t所指的数组中。
为了实现这个功能,我们需要遍历字符串s中的每一个字符,判断是否满足条件,如果满足条件,则将该字符添加到t数组中。
具体实现如下:
```c
void fun(char *s, char t[]) {
int i, j;
for (i = 0, j = 0; s[i] != '\0'; i++) {
if (i % 2 != 0 && s[i] % 2 != 0) { // 下标为奇数,且ascii值为奇数
t[j++] = s[i];
}
}
t[j] = '\0'; // 必须添加字符串结尾符号
}
```
首先我们定义两个变量i和j,其中i用于遍历字符串s,j用于记录符合条件的字符在数组t中的位置。接下来,我们使用for循环遍历字符串s中的每一个字符。
在循环体中,首先使用if语句判断该字符是否满足条件。如果该字符的下标为奇数,且ascii值也为奇数,则认为该字符应该被保留,我们将该字符添加到数组t中,并使用j自增操作更新t数组下一个位置的索引。
循环结束后,我们需要在t数组的最后一个位置添加字符串结束符号,以确保该数组形成的字符串是合法的字符串。
综上所述,我们在函数中完成了题目所要求的功能。
编写函数void fun(char *s,char t[]),将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
以下是函数的实现:
```c
void fun(char *s, char t[]) {
int i, j;
j = 0;
for (i = 0; s[i] != '\0'; i++) {
if (i % 2 == 1 && s[i] % 2 == 1) {
t[j] = s[i];
j++;
}
}
t[j] = '\0';
}
```
函数的思路是,遍历字符串s中的每个字符,如果字符的下标和ASCII值都是奇数,则将该字符放入新串t中。最后在新串t的末尾加上字符串结束标志'\0'。
阅读全文