2022/10/3 C语言学习

发布于:2022-12-02 ⋅ 阅读:(146) ⋅ 点赞:(0)

 2022.10.3

练习1:计算阶乘

#define _CRT_SECURE_NO_WARNINGS 1//屏蔽scanf不安全报警
#include <stdio.h>
#include <string.h>

int main()//计算阶乘
{
    int i = 1;
    int a = 1;
    int j = 1;
    printf("请输入阶乘数:");
    scanf("%d", &j);
    for(i;i<=j;i++)
{   
    a= i * a;
}
    printf("结果为%d", a);
    return 0;
}

练习2:利用递归拆分数字

void print(int n)
{
    if(n>9)
    {
        print(n / 10);//递归
    }
    printf("%d ", n % 10);
}
int main()
{
    unsigned int num = 0;
    scanf(" %d", &num);
    //递归
    print(num);
    return 0;
}

练习3 通过函数模拟strlen

#include <string.h>
#include<stdio.h>
int my_strlen(char* str)//str是arr的指针变量
{
    int count = 0;
    while(*str !='\0')
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    char arr[]="hello world";
    int len = my_strlen(arr);//数组传参传过去的不是整个数组,而是首元素的地址
    printf("字符串长度为:%d\n", len);
    return 0;
}

练习4 通过递归函数实现练习3 

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

练习5 通过递归实现阶乘 

#include <string.h>
#include<stdio.h>
int Fac(int n)
{
    if (n <= 1)
        return 1;
    else 
        return n*Fac(n-1);
}
int main()
{
    int a = 0;
    int ret = 0;
    printf("请输入阶乘数:");
    scanf("%d", &a);
    ret = Fac(a);
    printf("结果为:%d", ret);
    return 0;
}

 练习6 通过递归寻找斐波那契数

int Fib(int n)
{
    if (n == 1 || n == 2)
    {
        return 1;
    }
    else
        n = Fib(n - 1) + Fib(n - 2);
    return n;
}
int main()
{
    int n = 0;
    int ret = 0;
    scanf("%d", &n);
    ret = Fib(n);
    printf("结果为%d", ret);
    return 0;
}

 练习7 用while语句寻找斐波那契数,减少计算量

int main()
{
    int a = 1;
    int b = 1;
    int c = 0;
    int d = 0;
    int count = 0;
    printf("请问需要查找第几位斐波那契数?\n");
    scanf("%d", &c);
    if(c<=2)
    {
        printf("结果为:1");
        return 0;
    }
    while(count+2<c)
    {
        d = a + b;
        a = b;
        b = d;
        count++;
    }
    printf("结果为:%d",d);
    return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到