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;
}
相关推荐
大侠归来2 小时前
C 语言 | 在函数中操作数组
c语言·c++·算法
liangshanbo12152 小时前
JavaScript 面试题:Object.keys() 的返回顺序是无序的吗?
开发语言·javascript·ecmascript
怕浪猫6 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i8 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J8 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
小师兄吃牛肉9 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记9 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
炸膛坦客9 小时前
单片机开发工具篇:(十四)配置输出 .map 文件及其本地路径
c语言·单片机·嵌入式硬件
言乐69 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_3077791310 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构