C学习7

AvalonForLovers / 2023-08-18 / 原文

1、取出整数各位数字

#include<stdio.h>
void separate(int n)
{
    if (n > 9)
    {
        separate(n / 10);
    }
    printf("%d ", n%10);
}
int main()
{
    unsigned int num = 0;
    printf("请输入需要分解的数字:");
    scanf_s("%d", &num);
    separate(num);
}

 2、不生成临时变量计算字符串字数(即不使用strlen库函数而是用自定义函数)

#include<stdio.h>
int get_stringlen(char* str)
{
    int count = 0;
    while (*str != '\0')
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    char arr[] = "Avalon";
    int len = 0;
    len = get_stringlen(arr);
    printf("Result:%d", len);
}

get_stringlen内传入参数不是整个数组,而是数组首个元素的地址,所以用char* str(str是随意定义的名字),while的条件*str是做解引用逐个取字符串里的字

递归的函数写法是

int get_stringlen(char* str)
{
    if (*str != '\0')
        return 1 + get_stringlen(str + 1);
    else
        return 0;
}

比较需要在意的是递归部分的get_stringlen(str+1)的写法。