H2330819027


私信TA

用户名:dotcpp0701405

访问量:8070

签 名:

指向函数指针数组的指针int(*(*p[4]))(int int)

等  级
排  名 129
经  验 7423
参赛次数 1
文章发表 79
年  龄 18
在职情况 学生
学  校 Hzu university
专  业 软件工程

  自我简介:

解题思路:

在函数内部,定义了一个整型变量`i`并初始化为0。`i`将用于记录在`ch2`数组中插入的位置。


接下来是一个`while`循环,循环条件是`*ch1`指向的字符不是空字符`\0`。在循环体内,使用`switch`语句检查当前字符`*ch1`是否是元音字母。


如果`*ch1`是元音字母(即'a'、'e'、'i'、'o'、'u'中的一个),则将该字符存储到`ch2`数组的当前位置`*(ch2+i)`,然后`i`自增1,表示下一个元音字母要插入到`ch2`数组的下一个位置。


接着,将指针`ch1`向后移动一位,指向下一个字符。


循环结束后,插入结束符号`\0`到`ch2`数组的当前位置`*(ch2+i)`,表示字符数组的结束。


注意事项:

参考代码:

#include <stdio.h>  // 包含标准输入输出库的头文件
#include <string.h> // 包含字符串处理函数库的头文件

// 函数声明:从输入字符串 ch1 中筛选出元音字母,并存储在 ch2 中
void refine(char *ch1, char *ch2)
{
    int i = 0; // 初始化索引 i

    // 遍历字符串 ch1,直到遇到字符串结束符 '\0'
    while (*ch1 != '\0')
    {
        // 使用 switch 语句检查当前字符是否是元音字母
        switch (*ch1)
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                *(ch2 + i) = *ch1; // 如果是元音字母,则将其存储在 ch2 中
                i++;               // 增加索引 i,准备存储下一个元音字母
                break;             // 跳出 switch 语句
        }
        ch1++; // 移动指针 ch1 到下一个字符
    }

    *(ch2 + i) = '\0'; // 在 ch2 的末尾添加字符串结束符
    return;           // 函数返回
}

int main()
{
    char ch1[100]; // 声明一个字符数组 ch1,用于存储输入的字符串
    char ch2[100]; // 声明一个字符数组 ch2,用于存储筛选后的元音字母

    scanf("%s", &ch1); // 从标准输入读取一个字符串并存储在 ch1 中
    refine(ch1, ch2);  // 调用 refine 函数,将筛选后的结果存储在 ch2 中
    printf("%s", ch2); // 打印 ch2 中的结果

    return 0; // 返回程序的退出状态码,表示成功运行
}


 

0.0分

9 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#include <stdio.h>

int main() {

	char arr[100];
	char brr[100];
	scanf("%s", arr, sizeof(arr));
	int len = strlen(arr);
	int j = 0;
	for (int i = 0; i < len; i++) {
		
		if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') {
			brr[j] = arr[i];
			j++;
		}
	}
	int t = j;
	for (int i = 1; i < t; i++) {
		for (int k = 0; k <= t - 2; k++) {
			if (brr[k] > brr[k + 1]) {
				int temp = brr[k];
				brr[k] = brr[k + 1];
				brr[k + 1] = temp;
			}
		}
	}
	for (int i = 0; i < t; i++) {
		printf("%c", brr[i]);
	}

	return 0;
}
2024-03-04 11:03:00
include<string.h>
void FlashBack(char arr1[],char arr2[])
{   
    int i,j,k;
    int num1=strlen(arr1);
    char arr3[100];
	for(i=0;i<num1;i++)
	{   
		for(j=0;j<5;j++)
		{
			if(arr1[i]==arr2[j])
			{
				
				   arr3[i]=arr1[i];
				   printf("%c",arr3[i]);
				
			}
		}
	}
}
int main()
{
	char arr1[100],arr2[5]={'a','e','i','o','u'};
    fgets(arr1, sizeof arr1, stdin);  
	FlashBack(arr1,arr2);
	return 0;
	
  }
2024-02-17 12:30:54
char* haha(const char arr[],int a)
{
	char* b;
	int k = 0;
	int i, j;
	char arr2[5] = {'a','e','i','o','u'};
	static char arr3[100];
	for (i= 0; i < 5;i++)
	{
		for (j = 0;j < a ; j++)
		{
			if (arr[j] == arr2[i])
			{
				arr3[k] = arr[j];
				k++;
			}
		}

	}
	b = &arr3;
	return b;
}
int main()
{
	char* b;
	int a, i;
	char arr1[100];
	scanf("%s,",&arr1);
	a = strlen(arr1);
	b = haha(arr1,a);
	for (i = 0; i < a; i++)
	{
		printf("%c",b[i]);
	}
	return 0;
}
来个大佬看看,答案试了很多次都是对的,但是交上去说答案不对
2023-12-09 16:22:01
#include <stdio.h>
#include <string.h>
int f(char a[],char b[])
{
    int i,j;
    char x;
    scanf("%s",a);
    int len=strlen(a);
    for(i=0;i<len;i++)
    {
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
        a[i]=b[i];
    }
    int len1=strlen(b);
    for(i=0;i<len1;i++)
    {
        for(j=i;j<len1;j++)
        {
            if(a[i]>a[j])
            {
                x=a[j];a[i]=a[j];x=a[i];
            }
        }
    }
    return 0;
}
int main()
{
    char m[100],n[100];
    scanf("%s",m);
    f(m,n);
    printf("%s",n);
    return 0;
}
大佬,我这个哪有问题,求指点。
2023-12-02 11:04:00
为什么第一个函数的return后面没有0啊
2023-12-01 11:20:21
  • «
  • 1
  • »