C语言经典题目(11)

简介: C语言经典题目(11)

51.鸡兔同笼问题

在这里插入图片描述
分析:小学生数学问题。设鸡为a个,兔为b个,建立二元一次方程组:
可以解的: a=(4n-m)/2, b=n-a。
但是要考虑无解的情况。当解出的a,b是小于0或者腿数位奇数的时候是不符合实际情况的。

#include<stdio.h>
int main()
{
    int n, m;
    int a = 0;
    int b = 0;
    scanf("%d %d", &n, &m);
    a = (4 * n - m) / 2;
    b = n - a;
    if (m % 2 == 1 || a < 0 || b < 0)
        printf("No answer\n");
    else
        printf("%d %d", a, b);
    return 0;
}

52.输出所有形如aabb的完全平方数

在这里插入图片描述
判断一个数是不是完全平方数的方法?
方法一:

int m = floor(sqort(n)+0.5);//n是需要判断的数
if(m*m==n)
    printf("是完全平方数");

在这里插入图片描述
为什么要加个0.5?

以为在大量计算的时候,可能会发生误差,由于误差可能会使1变为0.99999999999999999,但是floor会使0.9999999999的结果为0。为了不让这种情况发生,我们加上0.5,改为四舍五入。这样就可以避免以上的情况发生。

根据方法一写出的代码:

#include<stdio.h>
#include<math.h>

int main()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 0; j <= 9; j++)
        {
            int n = i * 1100 + j * 11;
            int m = floor(sqrt(n) + 0.5);
            if (m * m == n)
                printf("%d是完全平方数\n",n);
        }
    }
    return 0;
}

方法二:

int a = n/100;//n是需要判断的数,n/100就是前两位的数字
int b = n%100;//n%100就是后两位数字
if(a/10==a%10&&b/10==b%10)
    printf("是完全平方数");

根据方法二写出的代码:

#include<stdio.h>
int main()
{
    for (int i = 1; ; i++)
    {
        int n = i * i;
        if (n < 1000)
            continue;
        if (n > 9999)
            break;
        int a = n / 100;
        int b = n % 100;
        if (a / 10 == a % 10 && b / 10 == b % 10)
            printf("%d是完全平方数",n);
    }
    return 0;
}

53.3n+1问题

在这里插入图片描述

#include<stdio.h>
int main()
{
    long long n = 0;
    int count = 0;
    scanf("%lld", &n);
    while (1)
    {
        if (n % 2 == 1)
        {
            if (n == 1)
                break;
            else
            {
                n = 3 * n + 1;
                count++;
            }
        }
        else
        {
            if (n == 1)
                break;
            else
            {
                n = n / 2;;
                count++;
            }
        }

    }
    printf("%d\n", count);
    return 0;
}

54.输出100~999的所有水仙花数

在这里插入图片描述

#include<stdio.h>
int main()
{
    for (int i = 100; i < 1000; i++)
    {
        int a = i / 100;
        int b = (i / 10)%10;
        int c = i % 10;
        if (i == a * a * a + b * b * b + c * c * c)
            printf("%d\n",i);
    }
    return 0;
}

55.韩信点兵

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
int main()
{
    int  a, b, c;
    int sum = 0;
    scanf("%d%d%d", &a, &b, &c);
    for (int i = 10; i <= 100; i++)
        if (i % 3 == a && i % 5 == b && i % 7 == c)
        {
            sum = i;
            break;
        }
    if (sum < 0)
    {
        printf("No answer\n");
    }
    else
    {
        printf("%d\n", sum);
    }
    return 0;
}
相关文章
|
6月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
6月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
47 1
|
11月前
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
77 1
|
1月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
11月前
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
60 1
|
3月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
5月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
46 1
|
6月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
5月前
|
C语言
c语言循环题目
c语言循环题目
|
6月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)