编写函数void fun(char *s,char t[]),将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
时间: 2023-05-31 18:19:53 浏览: 185
### 回答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数组的最后一个位置添加字符串结束符号,以确保该数组形成的字符串是合法的字符串。
综上所述,我们在函数中完成了题目所要求的功能。
阅读全文