C语言编程实战:大家一起云刷题 - day 1

在这里插入图片描述

🌈这里是say-fall分享,感兴趣欢迎三连与评论区留言
🔥专栏:《C语言从零开始到精通》
《C语言编程实战》

《数据结构与算法》

《小游戏与项目》

💪格言:做好你自己,你才能吸引更多人,并与他们共赢,这才是你最好的成长方式。


前言:

本系列博客将会更新一些每日的刷题代码



正文:

1. 计算带余数

#include <stdio.h>
int main() {
    int a = 0;  // 用于存储被除数
    int b = 0;  // 用于存储除数
    int c = 0;  // 用于存储商
    int d = 0;  // 用于存储余数
    // 读取输入的两个整数,%*c用于跳过中间的分隔符(如空格)
    scanf("%d%*c%d", &a, &b);
    // 计算商和余数并输出,格式为"商 余数"
    printf("%d %d\n", c = a / b, d = a % b);
    return 0;
}

2. 判断2个数的大小

#include <stdio.h>

int main()
{
    int num1 = 0;  // 第一个待比较的数字
    int num2 = 0;  // 第二个待比较的数字
    // 循环读取输入,支持多组测试数据(直到输入结束)
    while(scanf("%d%d", &num1, &num2) != EOF)
    {
        if(num1 > num2)
            // 若num1大于num2,按格式输出"num1>num2"
            printf("%d>%d\n", num1, num2);
        else if(num1 < num2)
            // 若num1小于num2,按格式输出"num1<num2"
            printf("%d<%d\n", num1, num2);
        else
            // 若两数相等,按格式输出"num1=num2"
            printf("%d=%d\n", num1, num2);
    }
    return 0;
}

3. 三角形判断

#include <stdio.h>

int main() {
    int a, b, c;  // 分别表示三角形的三条边长
    // 多组输入处理
    while (scanf("%d %d %d", &a, &b, &c) != EOF) {
        // 三角形判定条件:任意两边之和大于第三边
        if (a + b > c && b + c > a && a + c > b) {
            // 等边三角形:三条边长度均相等
            if (a == b && b == c) 
            {
                printf("Equilateral triangle!\n");
            }
            // 等腰三角形:至少两条边长度相等(排除等边情况)
            else if((a == b) || (b == c) || (a == c))
            {
                printf("Isosceles triangle!\n");
            } 
            // 普通三角形:三条边长度均不相等
            else
                printf("Ordinary triangle!\n");
        } else {
            // 不满足三角形构成条件
            printf("Not a triangle!\n");
        }
    }
    return 0;
}

4. 找出最大值

  • 求十个数中的最大值
int main()
{
    // 定义数组存储10个整数
    int arr[10];
    int i = 0;
    // 循环读取10个整数到数组中
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    
    // 方法一:通过相邻元素交换找出最大值(类似冒泡排序思想)
    /*for (i = 0; i < 9; i++)
    {
        if (arr[i] > arr[i + 1])
        {
            // 交换相邻元素,将较大值向后移动
            int tmp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = tmp;
        }
    }*/
    

    // 方法二:假定初始最大值,逐个比较更新(推荐)
    int max = arr[0];  // 假设数组第一个元素为最大值
    for (i = 1; i < 10; i++)  // 从第二个元素开始比较
    {
        if (arr[i] > max)
        {
            max = arr[i];  // 若当前元素更大,则更新最大值
        }
    }
    printf("%d\n", max);  // 输出最大值
    return 0;
}

相比起方法一来,方法二无需循环交换元素,时间复杂度为O(n),效率更高,推荐使用

5. 寻找含9数字

  • 找到1-100里面含9的数字
int main()
{
    int count = 0;  // 计数器,记录含9数字的个数
    int i = 0;
    // 遍历0到99(覆盖1到100的所有数字)
    for (i = 0; i < 100; i++)
    {
        // 判断条件:十位为9(i >= 90)或个位为9(i % 10 == 9)
        if (i - 90 >= 0 || i % 10 == 9)
        {
            count++;  // 满足条件则计数加1
        }
    }
    printf("%d\n", count);  // 输出含9数字的总个数
    return 0;
}
// 符合条件的数字:9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99
// 注意:99同时满足两个条件,但逻辑或(||)只会统计一次,结果正确

6. 乘法表

  • 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
    例如:输入9,输出9 * 9口诀表,输出12,输出12 * 12的乘法口诀表。
#include <stdio.h>

// 函数功能:打印n×n的乘法口诀表
void Mul_table(int n)
{
    int arr[1000];  // 存储1到n的整数
    int i = 0;
    // 填充数组:arr[i] = i + 1(即存储1,2,...,n)
    for (int i = 0; i < n; i++)
    {
        arr[i] = i + 1;
    }
    // 外层循环控制行数(从1到n-1,因数组下标从0开始)
    for (int i = 1; i < n; i++)
    {
        // 内层循环控制列数(从当前行号开始,避免重复打印)
        for (int j = i; j < n; j++)
        {
            // 按格式输出"a * b = 乘积"
            printf("%d * %d = %d ", arr[i], arr[j], arr[i] * arr[j]);
        }
        printf("\n");  // 每行结束后换行
    }
    return;
}

int main()
{
    Mul_table(11);  // 调用函数,打印11×11的乘法口诀表
    return 0;
}

7. X形图案

#include <stdio.h>
int main() {
    int a;  // X形图案的边长(行数和列数)
    // 多组输入处理
    while (scanf("%d", &a) != EOF) 
    { 
        // 外层循环控制行数(从1到a)
        for(int i = 1; i <= a; i++)
        {
            // 内层循环控制列数(从1到a)
            for(int j = 1; j <= a; j++)
            {
                // X形由两条对角线组成:
                // 1. 主对角线:行号等于列号(i == j)
                // 2. 副对角线:行号加列号等于边长加1(i + j == a + 1)
                if(i == j || i + j == (a + 1))
                {
                    printf("*");  // 对角线位置打印"*"
                }
                else
                {
                    printf(" ");  // 非对角线位置打印空格
                }
            }
            printf("\n");  // 每行结束后换行
        }
    }
    return 0;
}

  • 本节完…
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值