解题思路:

核心逻辑:逐年模拟与判断

循环限制:year < 20 保证最多模拟 20 年,符合题目要求;

年薪积累:每年先执行savings += N,表示第year年结束后,程序员积攒了当年的年薪(题目规定 “每年所得 N 万全都积攒起来”);

购房判断:若当前存款≥当年房价,记录年份并退出循环(保证 “最早” 年份);

房价更新:若当年无法购房,按增长率K%更新房价(转换为小数K/100.0,避免整数除法)。


注意事项:


1.核心逻辑是逐年模拟存款积累与房价增长,先积累年薪再判断是否能购房,保证逻辑顺序正确;

2.房价和存款需用double类型,避免增长率计算的精度丢失;

3.循环最多执行 20 次,找到最早年份后立即退出,保证效率;

4.结果判断清晰,区分 “20 年内可行” 与 “20 年内不可行” 两种场景,符合题目输出要求。


参考代码:


#include<stdio.h>

int main()

{

int N=0,K=0;

scanf("%d %d",&N,&K);

int year=1;

int savings=0;

double growth_factor=1.0+K/100.0;

double need_money=200;

int found=0;

// 标记是否找到可行年份,初始为0(未找到)

// 循环最多20年,逐年模拟

while(year<=20)

{

    savings=year*N;

    if(savings>=need_money)

    {

            printf("%d",year);

            found=1;// 标记为已找到

            break;

        }

    need_money=need_money*growth_factor;

    year++;

}//循环跑完 20 年(year 从 1 到 20 全部遍历)

if(found==0)

{

    printf("Impossible");

}

return 0;

}

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论