编写带有函数的程序,函数表达式fun(str,c)功能是从字符数组str中删除值为c变量的字符。str中保存字符串,同一字母的大小写按不同字符处理。
时间: 2023-07-14 21:12:11 浏览: 71
下面是一个示例代码,其中使用了指针和循环来遍历字符串并删除目标字符:
```c
#include <stdio.h>
void fun(char *str, char c) {
int i = 0, j = 0;
while (str[i] != '\0') {
if (str[i] != c && str[i] != c - 32 && str[i] != c + 32) {
str[j] = str[i];
j++;
}
i++;
}
str[j] = '\0';
}
int main() {
char str[] = "Hello World!";
char c = 'o';
printf("Original string: %s\n", str);
fun(str, c);
printf("String after removing '%c': %s\n", c, str);
return 0;
}
```
运行结果如下:
```
Original string: Hello World!
String after removing 'o': Hell Wrld!
```
相关问题
编写带有函数的程序,函数fun功能是求出 能整除x且不是偶数的各个整数,顺序存放在 数组pp中,这些除数的个数通过形参返回 例如: 若x值为30,则有4个数符合要求,是 1, 3,5,15
### 回答1:
下面是一个实现该功能的程序:
```c
#include <stdio.h>
int fun(int x, int pp[]) {
int count = 0;
for (int i = 1; i <= x; i++) {
if (x % i == 0 && i % 2 != 0) {
pp[count++] = i;
}
}
return count;
}
int main() {
int x = 30;
int pp[100];
int count = fun(x, pp);
printf("%d个数符合要求,分别是:", count);
for (int i = 0; i < count; i++) {
printf("%d ", pp[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,`fun` 函数接收一个整数 `x` 和一个整型数组 `pp`,并返回除数的个数。函数中通过循环判断每个数是否能整除 `x`,如果是并且不是偶数,则将其存入数组 `pp` 中。循环结束后,返回数组中存储的除数个数。
在 `main` 函数中,我们定义了一个整数 `x` 和一个大小为 100 的整型数组 `pp`。然后调用 `fun` 函数,并将返回值存入 `count` 变量中。最后,我们输出符合要求的数的个数和这些数的值。
### 回答2:
可以使用以下的代码来编写这样的程序:
```
void fun(int x, int* pp, int* count) {
int index = 0;
for (int i = 1; i <= x; i++) {
if (x % i == 0 && i % 2 != 0) {
pp[index] = i;
index++;
}
}
*count = index;
}
int main() {
int x = 30;
int pp[100]; // 假定数组大小为100
int count = 0;
fun(x, pp, &count);
for (int i = 0; i < count; i++) {
printf("%d ", pp[i]);
}
printf("\nTotal count: %d\n", count);
return 0;
}
```
函数fun接受三个参数:整数x,指向存放结果的整数数组pp,以及一个指向整数的指针count,用于存放符合要求的除数个数。在函数中,我们使用一个循环从1到x遍历每个整数,如果当前整数能够整除x且本身不是偶数,则将其存入数组pp。同时,我们使用一个index变量来追踪数组中存放的元素个数。最后,将index的值赋给count指针所指向的位置,表示找到的除数个数。
在主函数中,我们定义整数变量x并赋值为30,并且定义整数数组pp以及一个整数count用于存放结果。接着,我们调用函数fun,并将x、pp数组和count的地址作为参数传递给它。函数执行完毕后,我们遍历pp数组并打印出每个除数,然后打印出符合要求的除数的总个数。
运行程序后,输出结果为:1 3 5 15
符合要求的除数总个数为:4
### 回答3:
可以使用以下代码编写带有函数的程序:
```python
def fun(x):
pp = []
count = 0
for i in range(1, x+1):
if x % i == 0 and i % 2 != 0:
pp.append(i)
count += 1
return pp, count
x = 30
result, count = fun(x)
print("能整除" + str(x) + "且不是偶数的整数有" + str(count) + "个,它们是:" + ', '.join(map(str, result)))
```
运行结果:
```
能整除30且不是偶数的整数有4个,它们是:1, 3, 5, 15
```
说明:
- 函数`fun`接受一个整数`x`作为参数。
- 在函数内部,定义了一个空列表`pp`来存放符合条件的整数,定义了一个变量`count`来记录符合条件的整数的个数。
- 使用`for`循环遍历从1到`x`的所有整数。
- 通过判断`x`是否可以整除当前整数,并且当前整数是否不是偶数,来确定是否将该整数加入到列表`pp`中,同时增加`count`的值。
- 最后,函数返回列表`pp`和`count`。
- 在主程序中,给定`x`的值为30,调用函数并将返回的结果赋值给`result`和`count`。
- 使用`map`函数将整数转换为字符串,然后使用`join`函数将列表转换为字符串,并打印输出结果。
按以下要求编写程序: ⑴ 编写函数int fun(char a[]),其功能是删除a指向的字符串中所有数字字符,统计被删除数字字符的个数并将其作为返回值返回,除了a指向的字符串以外不允许用其它数组。
### 回答1:
下面是一个可能的程序实现:
```c
#include <stdio.h>
int fun(char a[]) {
int count = ; // 计数器,记录删除的数字字符个数
int i = ; // 字符串下标
while (a[i] != '\') { // 遍历字符串直到结束符
if (a[i] >= '' && a[i] <= '9') { // 如果当前字符是数字字符
count++; // 计数器加1
// 将后面的字符向前移动一位,覆盖当前数字字符
int j = i;
while (a[j] != '\') {
a[j] = a[j+1];
j++;
}
} else {
i++; // 如果当前字符不是数字字符,继续遍历下一个字符
}
}
return count; // 返回删除的数字字符个数
}
int main() {
char str[] = "a1b2c3d4e5f6g7h8i9j";
int count = fun(str);
printf("删除了 %d 个数字字符后,字符串变成了:%s\n", count, str);
return ;
}
```
程序中的 `fun` 函数接受一个指向字符串的指针 `a`,并返回删除的数字字符个数。函数内部使用一个计数器 `count` 记录删除的数字字符个数,以及一个下标变量 `i` 遍历字符串。在遍历过程中,如果当前字符是数字字符,就将计数器加1,并将后面的字符向前移动一位,覆盖当前数字字符。如果当前字符不是数字字符,就继续遍历下一个字符。最后,函数返回计数器的值。
在 `main` 函数中,我们定义了一个字符串 `str`,并调用 `fun` 函数对其进行操作。然后输出删除数字字符后的字符串和删除的数字字符个数。
### 回答2:
这道题需要删除字符串中的数字字符,同时统计删除的数字字符个数。首先,我们需要遍历字符串中的每个字符,判断是否为数字字符。如果是数字字符,就需要将其从字符串中删除,并统计删除的个数。由于不允许使用其他数组,因此我们需要在原字符串上进行删除操作。具体方法是将字符串中的非数字字符移动到该字符应该在的位置,最后在字符串结尾处添加结束符'\0'。
以下是具体实现代码:
```
int fun(char a[]) {
int i, j, count = 0;
for (i = 0, j = 0; a[i] != '\0'; i++) {
if (a[i] >= '0' && a[i] <= '9') { // 判断是否为数字字符
count++; // 统计删除的数字字符个数
} else {
a[j++] = a[i]; // 将非数字字符移动到该位置
}
}
a[j] = '\0'; // 在字符串结尾处添加结束符
return count; // 返回删除的数字字符个数
}
```
这样,我们就实现了按照要求编写函数的程序。
### 回答3:
题目要求编写一个函数,实现删除字符串中的数字字符并返回删除的数量。我们可以使用循环遍历字符串,判断每个字符是否为数字字符,如果是则删除该字符。具体的实现方法有多种,这里给出一种简单的方法:
1. 定义一个变量count,用于记录删除的数量。
2. 从字符串的第一个字符开始遍历,如果当前字符是数字字符,则将该字符后面的所有字符向前移动一位,同时将count加一。
3. 如果当前字符不是数字字符,则继续向后遍历。
4. 最后在字符串末尾添加一个结束符'\0'。
5. 将删除数量count作为函数的返回值。
具体实现如下:
```c
int fun(char a[]) {
int i = 0, j = 0, count = 0;
while (a[i] != '\0') {
if (a[i] >= '0' && a[i] <= '9') { // 判断是否为数字字符
count++;
j = i;
while (a[j] != '\0') { // 将后面的字符向前移动
a[j] = a[j+1];
j++;
}
} else {
i++;
}
}
a[j] = '\0'; // 添加结束符
return count;
}
```
这个函数实现比较简单,主要是使用两个指针i和j分别扫描原字符串和修改后的字符串,当扫描到数字字符时,将删除数量count加一,同时将j指向该数字字符的后一个字符,然后将后面的字符依次向前移动一个位置。最后在修改后的字符串末尾添加一个结束符。函数的时间复杂度为O(n^2),空间复杂度为O(1)。
阅读全文