嵌入式开发C语言学习day09-华清作业7.11

学习笔记:

作业:

1.使用递归实现求n的k次方
 

//使用递归实现求n的k次方
#include <stdio.h>

int nnn();
int main(int argc, char const *argv[])
{
    int n, k;
    printf("请输入要求的数以及要求的次方:");
    scanf("%d %d", &n, &k);
    int result = nnn(n, k);
    printf("%d的%d次为%d\n",n,k,result);
    return 0;
}
int nnn(int a, int b)
{
    if (b == 0)
    {
        return 1;
    }
    else
    {
        return a * nnn(a, b - 1);
    }
}

2.使用递归实现strlen的功能

// 使用递归实现strlen的功能
#include <stdio.h>

int sum();


int main(int argc, char const *argv[])
{
    char str[100];
    printf("请输入字符串:");
    scanf("%s", str);
    int length = sum(str);
    printf("字符串%s的长度为%d\n", str, length);
    return 0;
}
int sum(char *str1)
{
    if (*str1 == '\0')
    {
        return 0;
    }
    else
    {
        return 1 + sum(str1 + 1);
    }
}

3.用递归函数实现汉诺塔问题

//用递归函数实现汉诺塔问题
#include <stdio.h>
int hannuota();
int main()
{
    int x;
    printf("请输入盘子的个数:");
    scanf("%d", &x);
    int n = hannuota(x);
    printf("需要操作的次数:%d\n", n);
}
int hannuota(int x)
{
    if (x == 1)
    {
        return 1;
    }
    else
    {
        return 2 * hannuota(x - 1) + 1;
    }
}

4. 定义一个函数将一个字符串从大到小排序

// 定义一个函数将一个字符串从大到小排序
#include <stdio.h>
#include <string.h>

void sort();

int main(int argc, char const *argv[])
{
    char str[100];
    printf("请输入一个字符串: ");
    gets(str);
    sort(str);
    printf("排序后的字符串: %s\n", str);
    return 0;
}
void sort(char *str)
{
    int len = strlen(str);
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = 0; j < len - i - 1; j++)
        {
            if (str[j] < str[j + 1])
            {
                char temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }
}

5.实现一个函数 用于检查一个字符串是否是回文字符串(正序和反序都相同)

// 实现一个函数 用于检查一个字符串是否是回文字符串(正序和反序都相同)
#include <stdio.h>
#include <string.h>
int huiwen();
int main(int argc, char const *argv[])
{
    char str[100];
    printf("请输入一个字符串:");
    gets(str);
    int x = huiwen(str);
    if (x == 1)
    {
        printf("是回文\n");
    }
    else
    {
        printf("不是回文\n");
    }
    return 0;
}
int huiwen(char a[])
{
    int len = strlen(a);
    int count = 0;
    for (int i = 0; i < len / 2; i++)
    {
        if (a[i] != a[len - i - 1])
        {
            return 0;
        }
    }
    return 1;
}

6.使用指针完成判断自己的主机存储多字节整数时是大端存储还是小端存储

// 使用指针完成判断自己的主机存储多字节整数时是大端存储还是小端存储
// 思路:
// 定义一个多字节整数,比如一个 int 类型的整数。
// 使用指针指向这个整数的地址。
// 通过指针读取整数的第一个字节和最后一个字节。
// 如果第一个字节存储的是整数的高位数据,那么就是大端存储;
// 如果第一个字节存储的是整数的低位数据,那么就是小端存储。
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int x = 0x1234578;
    int *zch = &x;
    printf("%p\n", zch);
    printf("0x%x\n", *zch);

    //取第一个字节
    char *first = (char *)zch;
    char first1 = *first;

    printf("0x%x\n", first1);
    if (first1 == 0x78)
    {
        printf("是小端存储");
    }
    else
    {
        printf("是大端存储");
    }
    return 0;
}

7.统计单词数

// 统计单词数
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
    char str[] = "Do one thing at a time,and do well.";
    int len = strlen(str);
    int count = 1;
    for (int i = 0; i < len; i++)
    {
        if (!((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')))
        {
            if ((str[i + 1] >= 'a' && str[i + 1] <= 'z') || (str[i + 1] >= 'A' && str[i + 1] <= 'Z'))
            {
                count++;
            }
        }
    }
    printf("%s\n这段文本中共有%d个单词\n", str, count);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值