请编写一个函数void fun(char 【a],char b[],int n),其功能是:删除一个字串中指定下标的字符,其中,a指向原字符串,删除指是字符后的字串存放在b所指的教组中,n中存放指定的下标 例如,输入一个字符串:World,然后输入3,则调用该断数后的结果为:Word.
时间: 2024-03-18 12:38:35 浏览: 154
好的,我理解了你的要求,下面是对应的函数实现:
```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
```
希望能够帮到你!
相关问题
在主函数中从键盘读取一个字串符,并调用自定义函数int fun(char a[])计算其中包含的非英文字母字符数量
好的,下面是示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int fun(char a[]) {
int count = 0;
for (int i = 0; i < strlen(a); i++) { // 遍历字符串
if (!isalpha(a[i])) { // 如果当前字符不是英文字母
count++; // 非英文字母计数器加1
}
}
return count;
}
int main() {
char str[100];
cout << "请输入一个字符串:";
cin >> str;
int count = fun(str);
cout << "非英文字母字符数量为:" << count << endl;
return 0;
}
```
该程序中,自定义函数`fun`的参数为一个字符数组,返回值为非英文字母的数量。在主函数中,通过`cin`从键盘读取一个字符串,并将字符串作为参数传递给`fun`函数计算非英文字母数量,最终输出结果。
/* * 函数名称:assign * 函数功能:通过键盘输入为多个一维字符数组(字串)赋值 * 形式参数:arr为一维字符数组指针(行指针);rows为int型,单词字串个数 * 返 回 值:无 */ void assign(char (arr)[COLUMNS], int rows){ // 请编码实现assign函数 } / * 函数名称:show * 函数功能:输出显示所有单词(字串) * 形式参数:arr为一维字符数组指针(行指针);rows为int型,单词字串个数 * 返 回 值:无 */ void show(char (arr)[COLUMNS], int rows){ // 请编码实现show函数 } / * 函数名称:sort * 函数功能:对多个一维字符数组(字串)进行排序 * 形式参数:arr为一维字符数组指针(行指针);rows为int型,单词字串个数 * 返 回 值:无 */ void sort(char(*arr)[COLUMNS], int rows){ // 请编码实现sort函数 } int main(void){ //ch为二维字符数组,包含ROWS个单词,每个单词最多COLUMNS个字母 char ch[ROWS][COLUMNS]; memset(ch,0,sizeof(ch)); //p是一个指向字符数组的指针,称为行指针,请参见教材Page189 //必须给p指定长度,否则编译不报错,运行也不报错,但会不正常 //p与ch等价,因此既可引用p,也可引用ch char (*p)[COLUMNS] = ch; //从键盘输入ROWS个单词,为ch赋值 assign(p, ROWS); //对ch中的ROWS个单词进行排序 sort(p, ROWS); //输出显示单词排序结果 show(p, ROWS); return 0; }
下面是assign、show和sort函数的实现:
```c++
#include <iostream>
#include <string.h>
using namespace std;
const int ROWS = 5;
const int COLUMNS = 20;
void assign(char arr[][COLUMNS], int rows) {
for (int i = 0; i < rows; i++) {
cin >> arr[i];
}
}
void show(char arr[][COLUMNS], int rows) {
for (int i = 0; i < rows; i++) {
cout << arr[i] << endl;
}
}
void sort(char arr[][COLUMNS], int rows) {
for (int i = 0; i < rows - 1; i++) {
for (int j = i + 1; j < rows; j++) {
if (strcmp(arr[i], arr[j]) > 0) {
char temp[COLUMNS];
strcpy(temp, arr[i]);
strcpy(arr[i], arr[j]);
strcpy(arr[j], temp);
}
}
}
}
int main(void) {
// ch为二维字符数组,包含ROWS个单词,每个单词最多COLUMNS个字母
char ch[ROWS][COLUMNS];
memset(ch, 0, sizeof(ch));
// p是一个指向字符数组的指针,称为行指针
char (*p)[COLUMNS] = ch;
// 从键盘输入ROWS个单词,为ch赋值
assign(p, ROWS);
// 对ch中的ROWS个单词进行排序
sort(p, ROWS);
// 输出显示单词排序结果
show(p, ROWS);
return 0;
}
```
阅读全文