请编写一个函数void fun (char al,char bl,int n), 其功能是:删除一个字符串中指定下标的宇符。其中, a指向原字符串,删除指定字符后的字符串存放在6所 指的数组中,n中存放指定的下标。例如,输入一个字符 串:world,然后输入3,则调用该函数后的结果为: Word。注意:部分源程序在文件PROG1.C中。请勿 改动主函数main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。
时间: 2023-11-22 17:53:03 浏览: 93
```c
#include <stdio.h>
void fun(char a[], char b[], int n) {
int i, j;
for (i = 0, j = 0; a[i] != '\0'; i++) {
if (i != n) {
b[j++] = a[i];
}
}
b[j] = '\0';
}
int main() {
char str1[100], str2[100];
int n;
printf("请输入一个字符串:");
scanf("%s", str1);
printf("请输入要删除的字符的下标:");
scanf("%d", &n);
fun(str1, str2, n);
printf("删除后的字符串为:%s\n", str2);
return 0;
}
```
相关问题
请编写一个函数void fun(char 【a],char b[],int n),其功能是:删除一个字串中指定下标的字符,其中,a指向原字符串,删除指是字符后的字串存放在b所指的教组中,n中存放指定的下标 例如,输入一个字符串:World,然后输入3,则调用该断数后的结果为:Word.
好的,我理解了你的要求,下面是对应的函数实现:
```c
void fun(char a[], char b[], int n) {
int len = strlen(a);
for (int i = 0, j = 0; i < len; i++) {
if (i != n) { // 如果不是指定下标的字符,就加入到b中
b[j++] = a[i];
}
}
b[len-1] = '\0'; // 加上字符串结束符
}
```
这个函数的实现比较简单,就是遍历原字符串,如果当前位置不是指定下标,则将该字符加入到新字符串中。需要注意的是,由于要删除一个字符,所以新字符串的长度会比原字符串少1,因此最后需要在新字符串的末尾添加上字符串结束符`\0`。
调用这个函数的方法如下:
```c
char a[] = "World";
char b[6]; // 注意新字符串的长度为5,不包括字符串结束符
int n = 3;
fun(a, b, n);
printf("%s\n", b); // 输出结果: Word
```
希望能够帮到你!
用C语言编写一个函数 void fun(char *ss),其功能是:将字符串 ss 中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,者输人abc4EFg,则应输出aBc4EFg。
好的,我可以为您编写这个函数。以下是函数的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void fun(char *ss) {
int i;
int len = strlen(ss);
for (i = 0; i < len; i += 2) {
if (isalpha(ss[i])) {
ss[i] = toupper(ss[i]);
}
}
}
int main() {
char ss[] = "abc4EFg";
printf("Before: %s\n", ss);
fun(ss);
printf("After: %s\n", ss);
return 0;
}
```
这个函数中,我们使用了 `isalpha()` 函数来判断一个字符是否为字母,使用 `toupper()` 函数将字母转换为大写形式。在 `main()` 函数中,我们定义了一个字符串 `ss`,并将其传递给 `fun()` 函数进行处理。最后,我们输出处理后的字符串。
阅读全文