字符数组中的递归函数,用于在数组的前 3 个元素中查找辅音

Recursive function in a character array for finding a consonant in the first 3 elements in the array

为了更清楚,在数组的前三个元素(字符)中搜索并找到辅音,并将其放在第一个元素上。例如,我们将采用一个字符数组 A[] 。 前三个元素是 A[i], A[i+1], A[i+2] ,如果辅音在 A[i+1] 上应该移动到 A[i] 那是 A[i]=A[i+1] ...很难解释它,但希望你们明白我的意思。

#include <stdio.h>

#include <string.h>

#include <ctype.h>


int changeup(char* a[],int k,int j, int x)

{

int i=0;


  if(*a[k]!='a' || 'e' || 'i' || 'o' || 'u')

  a[x]=a[k];

  return changeup(a,k++,x++,j++);

  if(*a[j]!='a' || 'e' || 'i' || 'o' || 'u')

  a[x]=a[j];

  return changeup(a,k++,x++,j++);

   if(*a[x]!='a' || 'e' || 'i' || 'o' || 'u')

    return changeup(a,k++,x++,j++);

    else {

        return;
    }

   int main (void)

   {

    char * a[5];

    int i=0,j,k,x,n;

    char* p;


    n=sizeof(a)/sizeof(a[0]);

     k=i+2;

        j=i+1;

        x=i;


    *p=changeup(a,k,j,x);

    for(i=0;i<n;i++){


    printf("%s",a[i]);

   }

    return 0;

   }






   }

您也许可以利用这个元音测试功能。

#include <ctype.h>

//return 1 if ch is a vowel
int vowel (int ch) {
    int chl = tolower(ch);
    return (chl=='a' || chl=='e' || chl=='i' || chl=='o' || chl=='u');
}

...

if (!vowel(a[k])) {    // if a consonant
    ...
}
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

static inline bool vowel(char ch){
    char lch = tolower(ch);
    return lch == 'e' || lch == 'a' || lch == 'i' || lch == 'o' || lch == 'u';
}

static inline bool consonant(char ch){
    return isalpha(ch) && !vowel(ch);
}

void proc(char *s){
    bool moved = false;
    int i;
    for(i = 0; i < 3; ++i){
        if(!s[i])
            return;
        if(!moved && consonant(s[i])){
            moved = true;
            s[0] = s[i];
        }
    }
    proc(s + 3);
}

int main(void){
    char str[] = "Tarantino";
    proc(str);
    printf("%s\n", str);//Tarnntnno
    return 0;
}