鱼C论坛

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

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

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

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

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

x
#include<stdio.h>
int main()
{
        int i,j,k,m,n;
        while(scanf("%d %d",&n,&k)!=EOF)
        {
                m=n;
                j=1;
                for(i=200;n<i;n+=m) 
                {
                   j++;
                   i+=k;
            }
                if(j<=20) printf("%d\n",j);
                else printf("Impossible\n");
        }
        return 0;
}
这是题目
某程序员开始工作,第一年年薪 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 编辑
#include <stdio.h>

int main(void)
{
        int a , b , c , e , K , N                                                 ;
        bool f                                                                    ;
        for(f = true ; f ;) {
                for(; f ;) {
                        printf("Input N & K (10 <= N <= 50 , 1 <= K <= 20) : ")   ;
                        e = scanf("%d%d" , & N , & K)                             ;
                        if(e == 2) {
                                if(N >= 10 && N <= 50 && K >= 1 && K <= 20) break ;
                                else printf("Error : Invalid data\n\n")           ;
                        } else {
                                if(e == EOF) {
                                        f = false                                 ;
                                        break                                     ;
                                } else {
                                        if(! e) fflush(stdin)                     ;
                                        printf("Error : Invalid data\n\n")        ;
                                }
                        }
                }
                if(f) {
                        c = (200 - K) / (N - K)                                   ;
                        if((200 - K) % (N - K)) c ++                              ;
                        if(N > K) printf("%d\n" , c)                              ;
                        else printf("Impossible\n")                               ;
                }
        }
}
        编译、运行实况:
D:\[00.Exercise]\[C]>g++ -o x x.c

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

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

D:\[00.Exercise]\[C]>
        【说明】:由于题目要求 N (10 ≤ N ≤ 50)K (1 ≤ K ≤ 20),所以,N = 1,K = 5 属于无效输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

#include <stdio.h>

int main() {
    int N, K, flag;
    while (scanf("%d%d", &N, &K) == 2)
    {
        flag = 1;
        for (int year = 0, salary = 0, price = 200; year <= 20; year++, salary += N, price += K) {
            if (salary >= price) {
                printf("%d\n", year);
                flag = 0;
                break;
            }
        }
        if (flag) printf("Impossible\n");
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


    while(scanf("%d %d",&n, &k)!=EOF)
    {
        year = 1;
        kk = 0;
        nn = 0;
        while(year<=20)
        {
            kk = 200 + (year-1) * k;
            nn += n;
            if(nn>=kk)
            {
                printf("%d\n", year);
                break;
            }
            year+=1;
        }
        if(kk>nn)
        {
            printf("Impossible\n");
        }

    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

int main(void)
{
        int a , b , c , e , K , N                                                 ;
        bool f                                                                    ;
        for(f = true ; f ;) {
                for(; f ;) {
                        printf("Input N & K (10 <= N <= 50 , 1 <= K <= 20) : ")   ;
                        e = scanf("%d%d" , & N , & K)                             ;
                        if(e == 2) {
                                if(N >= 10 && N <= 50 && K >= 1 && K <= 20) break ;
                                else printf("Error : Invalid data\n\n")           ;
                        } else {
                                if(e == EOF) {
                                        f = false                                 ;
                                        break                                     ;
                                } else {
                                        if(! e) fflush(stdin)                     ;
                                        printf("Error : Invalid data\n\n")        ;
                                }
                        }
                }
                if(f) {
                        c = (200 - K) / (N - K)                                   ;
                        if((200 - K) % (N - K)) c ++                              ;
                        if(N > K) printf("%d\n" , c)                              ;
                        else printf("Impossible\n")                               ;
                }
        }
}
        编译、运行实况:
D:\[00.Exercise]\[C]>g++ -o x x.c

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

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

D:\[00.Exercise]\[C]>
        【说明】:由于题目要求 N (10 ≤ N ≤ 50)K (1 ≤ K ≤ 20),所以,N = 1,K = 5 属于无效输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大哥们不知道
if(N-K>0&&years=200/(N-K)){}吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

int main ()
{
        int N,K,fprice=200,n;
        do{
        printf("请输入年工资N(10<=N<=50)和每年房价增长价格K(1<=K<=20):");
        scanf("%d %d",&N,&K);
        if(!(N>=10&&N<=50&&K>=1&&K<=20)){
                printf("输入无效,请重新输入。\n");
        }
        else{
                break;
        }
           }while(1);
        if(N>K){
                int n=fprice/(N-K);
                printf("你需要%d年",n);
        }
        else{
                printf("Impossible");
        }
    
    return 0;
}
[/code][/code]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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