GESP 一级必过!长方形面积真题精讲,新手一次看懂 因数对拆解|新手可抄代码|考试不丢分

四季读书网 1 0
GESP 一级必过!长方形面积真题精讲,新手一次看懂 因数对拆解|新手可抄代码|考试不丢分
GESP 一级 C 语言考试中,长方形面积是高频基础题!看似简单,却有 80% 的新手因 “遍历范围错误” 丢分。这篇文章手把手拆解真题完整解法,从题目逻辑到代码实现,再到避坑要点,零基础也能直接上手,看完稳拿满分!

一、题目还原

【题目描述】

给定长方形面积整数A(2≤A≤1000),计算满足以下条件的长方形种类数:

长、宽均为整数;

长≥宽(正方形算 1 种,长宽相同视为同一种);

长 × 宽 = A。

【输入输出要求】

输入:1 行 1 个整数A(面积)

输出:1 行 1 个整数C(合法长方形种类数)

【样例验证】

表格
输入
输出
合法组合
4
2
2×2、4×1
6
2
3×2、6×1

二、核心思路拆解

这道题的本质是:找 A 的所有 “因数对”,且满足「因数 1 ≥ 因数 2」。为什么这么说?用 2 步就能彻底懂:

长方形面积公式:长 × 宽 = A,说明长和宽都是 A 的因数

约定长≥宽,只需找 “≤√A 的因数” 即可(若i是 A 的因数,则A/i必然是另一因数,且i ≤ √A时,A/i ≥ i,完美满足长≥宽)。

举个例子(输入 4):√4=2,遍历i=1、2:

i=1

:4%1=0 → 长 = 4/1=4,宽 = 1 → 合法 1 种;

i=2

:4%2=0 → 长 = 2/2=2,宽 = 2 → 合法 1 种;总计 2 种,和样例输出一致!

三、完整代码

#include<stdio.h>intmain(){    // 定义变量:A存储输入面积,count统计种类数    int A, count = 0;    // 输入长方形面积    scanf("%d", &A);    // 核心循环:遍历1到√A(用i*i <= A替代sqrt,无需额外头文件)    for (int i = 1; i * i <= A; i++) {        // 判断i是否是A的因数(能整除则合法)        if (A % i == 0) {            count++; // 每找到1个因数,种类数+1        }    }    // 输出最终结果    printf("%d\n", count);    return 0;}
GESP 一级必过!长方形面积真题精讲,新手一次看懂 因数对拆解|新手可抄代码|考试不丢分 第1张

四、代码逐行解析

头文件

:仅需#include,无需额外引入math.h,新手考试不踩 “头文件遗漏” 坑;

变量定义

:A存输入面积,count存合法种类数,初始值为 0,逻辑清晰不混乱;

核心循环

:i * i <= A是这道题的满分关键

因数判断

:A % i == 0表示i能整除A,说明(i, A/i)是一组合法的长宽;

输出结果

:printf("%d\n", count)直接打印统计的种类数,完成题目要求。

五、新手避坑指南

❌ 错误遍历:写for (int i = 1; i <= A; i++),结果翻倍(输入 4 会输出 4,正确是 2);

❌ 忘记头文件:若用sqrt(A),需加#include,否则编译报错;

❌ 忽略规则:忘记长≥宽,直接统计所有因数对(输入 4 会输出 3,包含 1×4、2×2、4×1,错误);

✅ 满分技巧:题目限定2≤A≤1000,无需处理A=0/1的异常情况,简化代码更稳妥。

六、运行结果验证

表格
输入
输出
运行逻辑
4
2
i=1、2 均为因数,count=2
6
2
i=1、2 均为因数,count=2
12
3
i=1、2、3 均为因数(12×1、6×2、4×3),count=3

七、结尾引导

这道 GESP 一级真题是 “送分题”,掌握因数对 + 遍历到√A的核心逻辑,同类 “找因数” 题目都能秒杀!你在备考 GESP 一级时,还卡在哪道题?评论区留言,下期优先拆解你的目标题!觉得这篇精讲有用的话,点赞 + 收藏,备考不迷路;关注我,持续更新 GESP 一级 C 语言真题全系列!

抱歉,评论功能暂时关闭!