C语言经典例题(6) --- 猜小偷、猜名词、模拟实现atoi、最小公倍数、二进制奇偶交换

1.猜小偷

题目内容:某地发生了一件偷窃案,通过排查确定必为4个嫌疑犯的一个。

以下为4个嫌疑犯的供词:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说。

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是小偷。

#include <stdio.h>

int main()
{
    char killer = 0;
    for (killer = 'A'; killer <= 'D'; killer++)
    {
        if ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D') == 3)
        {
            printf("%c\n", killer);
        }
    }
    return 0;
}
2.猜名次

题目内容:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    for (a = 1; a <= 5; a++)
    {
        for (b = 1; b <= 5; b++)
        {
            for (c = 1; c <= 5; c++)
            {
                for (d = 1; d <= 5; d++)
                {
                    for (e = 1; e <= 5; e++)
                    {
                        if (((b == 2) + (a == 3) == 1) &&
                            ((b == 2) + (e == 4) == 1) &&
                            ((c == 1) + (d == 2) == 1) &&
                            ((c == 5) + (d == 3) == 1) &&
                            ((e == 4) + (a == 1) == 1))
                           {
                            if(a * b * c * d * e == 120)
                           printf("a=%d b=%d c=%d d=%d e=%d ",a, b, c, d, e);
                            }
                    }
                }
            }
        }
    }
    return 0;
}
3.模拟实现atoi
#include <stdio.h>
#include <limits.h>
#include <ctype.h>

enum State
{
    INVALID,
    VALID
};

enum State state = INVALID;

int my_atoi(const char* p)
{
    int flag = 1;
    if (p == NULL)
    {
        return 0;
    }
    if (*p == '\0')
    {
        return 0;
    }
    while (isspace(*p))
    {
        p++;
    }
    if (*p == '+')
    {
        flag = 1;
        p++;
    }
    else if (*p == '-')
    {
        flag = -1;
        p++;
    }

    long long n = 0;
    while (isdigit(*p))
    {
        n = n * 10 + flag * (*p - '0');
        if (n < INT_MIN || n>INT_MAX)
        {
            return 0;
        }
        p++;
    }
    if (*p == '\0')
    {
        state = VALID;
        return (int)n;
    }
    else
    {
        return (int)n;
    }
}

int main()
{
    const char* p = "   -14a";
    int ret = my_atoi(p);
    if(state == VALID)
        printf("合法:%d\n", ret);
    else
        printf("非法:%d\n", ret);
    return 0;
}
4.正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数,设计一个算法,求输入A和B的最小公倍数。

输入描述:输入两个正整数A和B。

输出描述:输出A和B的最小公倍数。

输入:5 7

输出:35

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 0;
    int i = 0;
    scanf("%d %d", &a, &b);
    for (i = 1; ;i++)
    {
        if (a * i % b == 0)
        {
            printf("%d\n", a*i);
            break;
        }
    }
    return 0;
}
5.写一个宏,可以将一个整数的二进制数的奇数位和偶数位交换。
#include <stdio.h>
                //偶位数右移一位 + 奇数位左移一位
                //获得偶数位                获得奇数位
    //10101010101010101010101010101010   //01010101010101010101010101010101
#define SWAP(N) ((N & 0xaaaaaaaa) >>1) + ((N & 0x55555555) <<1)

int main()
{
    int N = 10;
    int ret = SWAP(N);
    printf("%d\n", ret);
    return 0;
}

相关推荐

  1. C语言实现谜语

    2024-03-23 08:28:06       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 08:28:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 08:28:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 08:28:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 08:28:06       20 阅读

热门阅读

  1. 软件测试简介

    2024-03-23 08:28:06       19 阅读
  2. Redis是如何避免“数组+链表”的过长问题

    2024-03-23 08:28:06       17 阅读
  3. 32、计算e

    2024-03-23 08:28:06       21 阅读
  4. Python中的函数参数传递方式是怎样的?

    2024-03-23 08:28:06       26 阅读
  5. AI大模型学习

    2024-03-23 08:28:06       19 阅读
  6. 算法体系-15 第十五节:贪心算法(下)

    2024-03-23 08:28:06       17 阅读
  7. Docker Oracle提示密码过期

    2024-03-23 08:28:06       16 阅读
  8. docker容器中文显示问题记录

    2024-03-23 08:28:06       21 阅读
  9. linux正则表达式之^

    2024-03-23 08:28:06       32 阅读
  10. nginx有哪些安装方法

    2024-03-23 08:28:06       19 阅读