C练习

2020-04-17  本文已影响0人  晓晓桑

定义字符串s="abcde",采用递归方式,将字符串s相反顺序输出,即:“edcbd”。

void fun(char *p);

int main(void) {
    char *p = "abcde";
    fun(p);
}

void fun(char *p) {

    if (*p != '\0') {
//        p++;
        fun(++p);
        printf("%c", *(--p));
    }
}

输入字符串,统计其中的单词,单词之间用空格分隔开

#include <stdio.h>

int main(void) {
    //char
    char string[] = " hello  world ";
    int num;
    int tag = 0;

    for (int i = 0; string[i] != '\0'; ++i) {
        if (string[i] == ' ') {
            tag = 1;
        } else {
            if (tag) {
                num++;
            }
            tag = 0;
        }
    }

    printf("%d", num);
    return 0;
}

类似斐波拉契数列,有一个数列,前三项是0 0 1,没个数都等于他前三个数相加,显示前20项,每行5个数。

非递归

#include <stdio.h>
int main(void) {

    int a[20] = {};
    a[0] = 0;
    a[1] = 0;
    a[2] = 1;
    //char
    for (int i = 0; i < 20; ++i) {
        if (i > 2) {
            a[i] = a[i - 1] + a[i - 2] + a[i - 3];
        }
    }
    for (int j = 0; j < 20; ++j) {

        if (j != 0 && j % 5 == 0) {
            printf("\n");
        }
        printf("%d ", a[j]);
    }
    
    return 0;
}

递归方法

int fun(int a);
int main(void) {
    for (int i = 0; i < 20; ++i) {
        if (i % 5 == 0 && i != 0) {
            printf("\n");
        }
        printf("%d ", fun(i));
    }
    return 0;
}

//求第n项第值
int fun(int a) {
    if (a == 0) {
        return 0;
    } else if (a == 1) {
        return 0;
    } else if (a == 2) {
        return 1;
    } else {
        return fun(a - 1) + fun(a - 2) + fun(a - 3);
    }
}

从键盘输入一个字符,从特定的字符中删除这个字符

int main(void) {
    char str[] = "abcdef";
    char a;
    scanf("%c", &a);
    int k = 0;
    for (int i = 0; str[i] != '\0'; ++i) {
        if (str[i] != a) {
            str[k] = str[i];
            k++;
        }
    }
    str[k] = '\0';
    printf("%s", str);
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读