C语言编程实战:每日刷题 - day 1

🌈这里是say-fall分享,感兴趣欢迎三连与评论区留言

🔥专栏:《C语言从零开始到精通》《C语言编程实战》《数据结构与算法》
《小游戏与项目》

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


前言:

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


文章目录

  • 前言:
  • 正文:
    • [1. 计算带余数](#1. 计算带余数)
    • [2. 判断2个数的大小](#2. 判断2个数的大小)
    • [3. 三角形判断](#3. 三角形判断)
    • [4. 找出最大值](#4. 找出最大值)
    • [5. 寻找含9数字](#5. 寻找含9数字)
    • [6. 乘法表](#6. 乘法表)
    • [7. X形图案](#7. X形图案)

正文:

1. 计算带余数

c 复制代码
#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个数的大小

c 复制代码
#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. 三角形判断

c 复制代码
#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. 找出最大值

  • 求十个数中的最大值
c 复制代码
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的数字
c 复制代码
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的乘法口诀表。
c 复制代码
#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形图案

c 复制代码
#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;
}

  • 本节完...
相关推荐
小苏兮1 小时前
【把Linux“聊”明白】进程的概念与状态
linux·运维·服务器·学习
没有bug.的程序员1 小时前
Spring Cloud Bus 事件广播机制
java·开发语言·spring boot·hystrix·feign·springcloudbus·事件广播机制
找不到、了2 小时前
Java系统设计知识整理《1》
java·开发语言
q***06292 小时前
环境安装与配置:全面了解 Go 语言的安装与设置
开发语言·后端·golang
程序猿七度2 小时前
【Excel导入】读取WPS格式嵌入单元格内的图片
java·开发语言·wps
IoT智慧学堂2 小时前
C语言流程控制:if判断语句全解析
c语言·开发语言
楼田莉子2 小时前
C++/Linux小项目:自主shell命令解释器
linux·服务器·开发语言·c++·后端·学习
EXtreme352 小时前
C语言指针深度剖析(2):从“数组名陷阱”到“二级指针操控”的进阶指南
c语言·开发语言·算法