C语言常见题型的难点与问题

水仙花束
常见问题:

  1. 数值范围
    N 位正整数的范围:
    最小值:
    10^(N−1)
    最大值:
    10^N−1
    例如:
    N = 3,范围:100 ~ 999
    N = 4,范围:1000 ~ 9999

  2. 数字拆分方法
    对一个数 num 拆分每一位:
    用临时变量保存原数:temp = num;
    取个位数字:digit = temp % 10;
    去掉个位:temp = temp / 10;
    循环直到 temp == 0

  3. 次方计算
    每个位上的数字要计算 N 次方,不是固定 3 次方
    尽量不要直接用 pow(),容易出现浮点精度错误
    推荐自己写循环计算整数次方

  4. 累加与判断
    每次判断新数字时,累加和 sum 必须重新置 0
    计算所有位的 N 次方之和 sum
    若 sum == num,则为水仙花数

  5. 常见错误
    遍历范围错误,从 0 开始遍历
    直接修改原数 num,导致无法比较
    sum 没有重置,结果一直累加
    固定写成立方(3 次方),不随 N 变化
    使用 pow 出现精度误差,判断出错

  6. 输出要求
    按从小到大顺序输出
    每个水仙花数占一行

1/n 序列前 N 项和及其变式
一、基础公式
S=1+1/2+1/3+……+1/n;
易错点:
1.必须用 1.0 / i,不能写 1 / i
1/i 是整数除法,结果永远是 0
正确:sum += 1.0 / i;
2.和变量 sum 必须是浮点型
要用 double 或 float
初始值必须为 0
3.循环从 1 开始,到 N 结束
不能从 0 开始(分母不能为 0)
4.输出要用浮点格式
printf("%.2lf", sum);
不能用 %d
二、各类变式注意事项

  1. 正负交替序列
    1-1/2+1/3-1/4+……
    用符号变量控制正负,不要写复杂判断
    每一项符号翻转:sign = -sign;

  2. 分子不是 1
    如:
    2/1+2/2+2/3+……
    必须写成 2.0 / i 或 (double)a / i
    避免整数除法导致结果错误

  3. 奇偶项分开求和
    奇数分母:i = 1; i += 2
    偶数分母:i = 2; i += 2
    注意循环上限不要超 N

  4. 分母是表达式
    如:
    1/12+1/23+……
    先算分母整体,再做除法
    注意括号:1.0 / (i*(i+1))

三、通用避坑总结
1.只要出现分数,一定用 1.0、2.0 这种小数参与运算
2.sum 一定要 double,初始为 0
3.循环变量从 1 开始
4.输出格式一定是 %f 或 %lf
5.交替序列用符号变量最不容易错
6.先想数学公式,再写代码,避免逻辑混乱

posted on 2026-04-16 21:07  谢天佑  阅读(1)  评论(0)    收藏  举报