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;
}
相关推荐
这是个栗子44 分钟前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ1 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香1 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
右耳朵猫AI1 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
科技大视界1 小时前
投资AI项目,传统尽调不够用了——李章虎律师拆解算法、数据、算力三大雷区
人工智能·算法·数据挖掘
second601 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴2 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
Irissgwe2 小时前
算法滑动窗口
数据结构·算法
bksczm2 小时前
linux之线程概念和控制
linux·开发语言·c++
怪兽学LLM2 小时前
LeetCode 105. 从前序与中序遍历序列构造二叉树:分治递归思路详解
算法·leetcode·职场和发展