9 C语言的基础练习

1. 平均数

c 复制代码
#include <stdio.h>

int main()
{

    int a,b;
    printf("请输入两个整数,空格隔开: ");

    scanf("%d %d",&a,&b);

    //除以2.0,避免整数整除
    double avg = (a+b) / 2.0;
    printf("平均值: %f\n",avg);
    return 0;
}
c 复制代码
D:\cproject\cmake-build-debug\high.exe
璇疯緭鍏ヤ袱涓暣鏁帮紝绌烘牸闅斿紑:4 5
 骞冲潎鍊? 4.500000

自定义 N 个数字求平均

c 复制代码
#include <stdio.h>

int main()
{
    int n;
    int num;
    double sum = 0;

    printf("请输入要计算几个数字: ");
    scanf("%d",&n);

    for (int i = 0; i < n; ++i) {
        printf("第%d个数字: ",i+1);
        scanf("%d",&num);
        sum += num;
    }

    double avg =  sum / n;
    printf("avg= %.2f\n ", avg);
    return 0;
}
c 复制代码
D:\cproject\cmake-build-debug\high.exe
璇疯緭鍏ヨ璁$畻鍑犱釜鏁板瓧:5
 绗?涓暟瀛?1
 绗?涓暟瀛?2
 绗?涓暟瀛?3
 绗?涓暟瀛?4
 绗?涓暟瀛?5
 avg= 3.00

持续输入,输入负数结束

c 复制代码
#include <stdio.h>
int main(void)
{
    int val;
    double sum = 0;
    int count = 0;

    printf("不断输入整数,输入负数结束计算:\n");
    while(1)
    {
        scanf("%d", &val);
        if(val < 0)
            break;
        sum += val;
        count++;
    }

    if(count == 0)
    {
        printf("未输入有效数据\n");
    }
    else
    {
        printf("平均值=%.2f", sum / count);
    }
    return 0;
}

知识点

c 复制代码
/2.0 不能写成 /2:int/int 是整数除法丢小数;除以浮点自动提升为浮点运算
总和变量建议用 double,防止累加溢出
%.2f 保留 2 位小数输出,日常展示更美观

2. 整数求逆

思路

c 复制代码
循环:每次 %10 拿到个位 → *10拼到新数 → /10砍掉原个位
c 复制代码
#include <stdio.h>

int main(void)
{
    int num;
    int rev = 0;

    printf("请输入一个正整数:");
    scanf("%d", &num);

    while(num != 0)
    {
        int tmp = num % 10;      // 取出最后一位
        rev = rev * 10 + tmp;    // 拼接
        num = num / 10;          // 去掉最后一位
    }

    printf("逆序结果:%d\n", rev);
    return 0;
}
c 复制代码
输入:1234 → 4321
输入:7890 → 987

拓展:支持负数

c 复制代码
#include <stdio.h>
int main(void)
{
    int n, rev=0;
    printf("输入整数:");
    scanf("%d",&n);

    int flag = 1;
    if(n < 0)
    {
        flag = -1;
        n = -n;
    }

    while(n)
    {
        rev = rev*10 + n%10;
        n /= 10;
    }
    rev *= flag;

    printf("逆置:%d",rev);
    return 0;
}

3. 循环计算和

c 复制代码
#include <stdio.h>
int main()
{
    int num;
    int sum = 0;

    printf("不断输入整数,输入0停止,自动求和:\n");
    while (1)
    {
        scanf("%d", &num);
        if (num == 0)
        {
            break;   // 遇到0跳出循环
        }
        sum += num; // 累加
    }

    printf("累加总和 = %d\n", sum);
    return 0;
}
c 复制代码
#include <stdio.h>
int main()
{
    int n, sum = 0;
    printf("请输入上限n:");
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        sum += i;
    }
    printf("1~%d总和:%d", n, sum);
    return 0;
}

4. 前N项求和

c 复制代码
#include <stdio.h>
int main()
{
    int N, sum = 0;
    printf("请输入N:");
    scanf("%d", &N);

    for(int i = 1; i <= N; i++)
    {
        sum = sum + i;
    }
    printf("1~%d累加和 = %d\n", N, sum);
    return 0;
}
c 复制代码
#include <stdio.h>
int main()
{
    int N, sum = 0, i = 1;
    printf("请输入N:");
    scanf("%d", &N);
    while(i <= N)
    {
        sum += i;
        i++;
    }
    printf("和=%d",sum);
    return 0;
}

5. 最大公约数

5.1 辗转相除法(欧几里得算法,推荐)
c 复制代码
#include <stdio.h>
int main()
{
    int a,b,temp;
    printf("输入两个整数:");
    scanf("%d%d",&a,&b);

    while(b != 0)
    {
        temp = a % b;
        a = b;
        b = temp;
    }
    printf("最大公约数:%d",a);
    return 0;
}
c 复制代码
示例:
输入 24 18
循环:
a=24,b=18 → temp=6,a=18,b=6
a=18,b=6 → temp=0,a=6,b=0 退出,结果6
5.2 暴力从两数较小值往下枚举
c 复制代码
#include <stdio.h>
int main()
{
    int a,b,i;
    scanf("%d%d",&a,&b);
    // 取较小值
    int min = a < b ? a : b;
    for(i = min; i >= 1; i--)
    {
        if(a%i==0 && b%i==0)
        {
            printf("最大公约数:%d",i);
            break;
        }
    }
    return 0;
}
相关推荐
少司府1 小时前
C++进阶:二叉搜索树
开发语言·数据结构·c++·二叉树·stl·二叉搜索树·tree
Rust研习社1 小时前
从 LaunchBadge 到 transact-rs:SQLx 社区迈出可持续治理的第一步
开发语言·后端·rust
8Qi81 小时前
LeetCode 124. 二叉树中的最大路径和(Hard)
算法·leetcode·二叉树·递归
And_Ii1 小时前
LeetCode 1. 两数之和 python
数据结构·算法·leetcode
程序大视界1 小时前
【C++ 从基础到项目实战】C++(九):友元与设计模式初探——打破封装的艺术
开发语言·c++·cpp
東隅已逝,桑榆非晚1 小时前
C语言预处理详解:从宏到条件编译
c语言·笔记·算法
hhb_6181 小时前
Bash变量不加引号:空格文件名致命陷阱
开发语言·chrome·bash
宸津-代码粉碎机1 小时前
Spring AI企业级RAG进阶|文档智能分片调优、ES深度整合、接口限流熔断监控生产实战
java·开发语言·人工智能·后端·spring·elasticsearch·oracle
两年半的个人练习生^_^1 小时前
JVM进阶系列:彻底理解 Java 内存模型(JMM)
java·开发语言