鱼C论坛

 找回密码
 立即注册
查看: 2159|回复: 5

[已解决]大佬帮忙看看这个程序有啥问题,提交上去一直WA

[复制链接]
发表于 2022-4-14 22:44:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,j,k,m,n;
  5.         while(scanf("%d %d",&n,&k)!=EOF)
  6.         {
  7.                 m=n;
  8.                 j=1;
  9.                 for(i=200;n<i;n+=m)
  10.                 {
  11.                    j++;
  12.                    i+=k;
  13.             }
  14.                 if(j<=20) printf("%d\n",j);
  15.                 else printf("Impossible\n");
  16.         }
  17.         return 0;
  18. }
复制代码

这是题目
某程序员开始工作,第一年年薪 N 万,他希望在新区买一套 60 平米,现价为 200 万的房子。假设房子价格以每年 K 万元增长,并且该程序员未来税后年薪不变,且不吃不喝,每年所得 N 万全都积攒起来,问第几年能够买下这套房子?

输入描述
有多组测试数据,每组测试数据占一行。

每一行包含两个正整数 N (10 ≤ N ≤ 50) 和 K (1 ≤ K ≤ 20),中间用单个空格隔开。

输出描述
如果在第 20 年或者之前就能买下这套房子,则输出一个整数 M,表示最早需要在第 M 年能买下,否则输出 "Impossible"。

样例输入
50 10

12 2

1 5

样例输出
5

20

Impossible
最佳答案
2022-4-14 23:54:49
本帖最后由 jackz007 于 2022-4-15 11:15 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int a , b , c , e , K , N                                                 ;
  5.         bool f                                                                    ;
  6.         for(f = true ; f ;) {
  7.                 for(; f ;) {
  8.                         printf("Input N & K (10 <= N <= 50 , 1 <= K <= 20) : ")   ;
  9.                         e = scanf("%d%d" , & N , & K)                             ;
  10.                         if(e == 2) {
  11.                                 if(N >= 10 && N <= 50 && K >= 1 && K <= 20) break ;
  12.                                 else printf("Error : Invalid data\n\n")           ;
  13.                         } else {
  14.                                 if(e == EOF) {
  15.                                         f = false                                 ;
  16.                                         break                                     ;
  17.                                 } else {
  18.                                         if(! e) fflush(stdin)                     ;
  19.                                         printf("Error : Invalid data\n\n")        ;
  20.                                 }
  21.                         }
  22.                 }
  23.                 if(f) {
  24.                         c = (200 - K) / (N - K)                                   ;
  25.                         if((200 - K) % (N - K)) c ++                              ;
  26.                         if(N > K) printf("%d\n" , c)                              ;
  27.                         else printf("Impossible\n")                               ;
  28.                 }
  29.         }
  30. }
复制代码

        编译、运行实况:
  1. D:\[00.Exercise]\[C]>g++ -o x x.c

  2. D:\[00.Exercise]\[C]>x
  3. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : 50 10
  4. 5
  5. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : 12 2
  6. 20
  7. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : 1 5
  8. Error : Invalid data

  9. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : ^Z

  10. D:\[00.Exercise]\[C]>
复制代码

        【说明】:由于题目要求 N (10 ≤ N ≤ 50)K (1 ≤ K ≤ 20),所以,N = 1,K = 5 属于无效输入
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-14 23:21:53 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-4-14 23:24 编辑

  1. #include <stdio.h>

  2. int main() {
  3.     int N, K, flag;
  4.     while (scanf("%d%d", &N, &K) == 2)
  5.     {
  6.         flag = 1;
  7.         for (int year = 0, salary = 0, price = 200; year <= 20; year++, salary += N, price += K) {
  8.             if (salary >= price) {
  9.                 printf("%d\n", year);
  10.                 flag = 0;
  11.                 break;
  12.             }
  13.         }
  14.         if (flag) printf("Impossible\n");
  15.     }
  16.     return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 23:32:01 | 显示全部楼层
试下这个
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int k, n, kk, nn, year;


  5.     while(scanf("%d %d",&n, &k)!=EOF)
  6.     {
  7.         year = 1;
  8.         kk = 0;
  9.         nn = 0;
  10.         while(year<=20)
  11.         {
  12.             kk = 200 + (year-1) * k;
  13.             nn += n;
  14.             if(nn>=kk)
  15.             {
  16.                 printf("%d\n", year);
  17.                 break;
  18.             }
  19.             year+=1;
  20.         }
  21.         if(kk>nn)
  22.         {
  23.             printf("Impossible\n");
  24.         }

  25.     }
  26.     return 0;
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 23:54:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-4-15 11:15 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int a , b , c , e , K , N                                                 ;
  5.         bool f                                                                    ;
  6.         for(f = true ; f ;) {
  7.                 for(; f ;) {
  8.                         printf("Input N & K (10 <= N <= 50 , 1 <= K <= 20) : ")   ;
  9.                         e = scanf("%d%d" , & N , & K)                             ;
  10.                         if(e == 2) {
  11.                                 if(N >= 10 && N <= 50 && K >= 1 && K <= 20) break ;
  12.                                 else printf("Error : Invalid data\n\n")           ;
  13.                         } else {
  14.                                 if(e == EOF) {
  15.                                         f = false                                 ;
  16.                                         break                                     ;
  17.                                 } else {
  18.                                         if(! e) fflush(stdin)                     ;
  19.                                         printf("Error : Invalid data\n\n")        ;
  20.                                 }
  21.                         }
  22.                 }
  23.                 if(f) {
  24.                         c = (200 - K) / (N - K)                                   ;
  25.                         if((200 - K) % (N - K)) c ++                              ;
  26.                         if(N > K) printf("%d\n" , c)                              ;
  27.                         else printf("Impossible\n")                               ;
  28.                 }
  29.         }
  30. }
复制代码

        编译、运行实况:
  1. D:\[00.Exercise]\[C]>g++ -o x x.c

  2. D:\[00.Exercise]\[C]>x
  3. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : 50 10
  4. 5
  5. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : 12 2
  6. 20
  7. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : 1 5
  8. Error : Invalid data

  9. Input N & K (10 <= N <= 50 , 1 <= K <= 20) : ^Z

  10. D:\[00.Exercise]\[C]>
复制代码

        【说明】:由于题目要求 N (10 ≤ N ≤ 50)K (1 ≤ K ≤ 20),所以,N = 1,K = 5 属于无效输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 09:57:30 | 显示全部楼层
本帖最后由 jhq999 于 2022-4-15 10:02 编辑

大哥们不知道
if(N-K>0&&years=200/(N-K)){}吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 16:59:03 | 显示全部楼层

没怎么按照题目,但可以正常运行

本帖最后由 蔚蓝水晶 于 2022-4-15 17:02 编辑
  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         int N,K,fprice=200,n;
  5.         do{
  6.         printf("请输入年工资N(10<=N<=50)和每年房价增长价格K(1<=K<=20):");
  7.         scanf("%d %d",&N,&K);
  8.         if(!(N>=10&&N<=50&&K>=1&&K<=20)){
  9.                 printf("输入无效,请重新输入。\n");
  10.         }
  11.         else{
  12.                 break;
  13.         }
  14.            }while(1);
  15.         if(N>K){
  16.                 int n=fprice/(N-K);
  17.                 printf("你需要%d年",n);
  18.         }
  19.         else{
  20.                 printf("Impossible");
  21.         }
  22.    
  23.     return 0;
  24. }
复制代码
[/code][/code]

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 20:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表