标题:C语言的问题,萌新求助
只看楼主
qw1395988137
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-10-18
结帖率:0
已结贴  问题点数:10 回复次数:11 
C语言的问题,萌新求助
题目描述
QY等人,平时写代码的时候,喜欢吃一种叫“小鱼”的零食,用来提神醒脑(其实没有任何效果,我反而感觉他们越变越笨了)。突然小鱼的厂家做促销。凭3条小鱼尾巴,可以再换一条小鱼。而且可以一直循环下去,QY开心极了,于是拿出整个月的生活费买了N条小鱼。
请你计算一下,如果QY尽量地兑换小鱼,那么,最后他一共能得到多少条小鱼呢。

输入
输入数据有多组,每组一行,仅包含一个数字N,即QY一开始买入的小鱼的数量。

输出
对应每组数据,输出QY能得到的小鱼总数,每个结果输出在一行中

样例输入
100
样例输出
149



#include<stdio.h>
int main()
{
    int n,s,i,k;
        scanf("%d",&n);
        k=n;
        s=n;
    for(i=0;i<n-1;i++)
    {
            s=s-3;
        if(s>=0)
            {
                s=s+1;
                k++;
            }
        if(s<=0)
            break;
    }
    printf("%d\n",k);

    return 0;
}


为什么老是答案错误
搜索更多相关主题的帖子: C语言 生活费 促销 而且 零食 
2016-11-17 14:18
我很帅
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2016-11-17
得分:2 
很奇怪,我也不懂
2016-11-17 16:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:2 
你的结果没有问题啊~
我的是这样的~要考虑取余问题~
#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d",&a);
    for (c=a,b=0;a-3>=0;a=a/3+a%3)
        b+=a/3;
    printf("%d\n",b+c);
    return 0;
}


[此贴子已经被作者于2016-11-17 17:11编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-17 16:39
Ted_Ming
Rank: 2
等 级:论坛游民
帖 子:15
专家分:35
注 册:2016-11-2
得分:2 
运行你的代码没错呀,都能运行,结果100 --> 149啊
2016-11-17 17:22
增删改查
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2016-11-17
得分:2 
回复 4楼 Ted_Ming
题的答案应该150啊
2016-11-17 21:47
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 5楼 增删改查
说来看看怎么做~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-17 22:05
增删改查
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2016-11-17
得分:0 
回复 6楼 九转星河
#include<stdio.h>
int main()
{
    int n,s,i,k;
        scanf("%d",&n);
        k=n;
        s=n;
    for(i=0;i<n-1;i++)
    {
            s=s-3;
        if(s>=0)
            {
                s=s+1;
                k++;
            }
        if(s<=0)
            break;
    }
    printf("%d\n",s);
    if(s==-1){k++;}
    printf("%d\n",k);

    return 0;
}

s最后2-3是-1;
错了勿怪
2016-11-17 22:07
增删改查
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2016-11-17
得分:0 
回复 6楼 九转星河
100条,可以换33条 剩下34条尾巴
34条,可以换11条 剩下12条尾巴
12条,可以换4条 0
4条,可以换1条 剩下2条尾巴
可以再吃一条 然后给三条尾巴
2016-11-17 22:14
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 8楼 增删改查
以下是引用增删改查在2016-11-17 22:14:13的发言:
4条,可以换1条 剩下2条尾巴
可以再吃一条 然后给三条尾巴

前面的都没有问题,但4条,吃了4条,剩下4条尾巴,然后拿三条尾巴换了一条,还剩一条尾巴,然后吃了剩下的一条,还剩两条尾巴,两条尾巴怎么换?怎么会多出一个出来了?

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-17 22:44
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:2 
回复 楼主 qw1395988137
//会不会就是149啊?我这个弄出来100也是返回149. 是题目说的应该得到150吗?
#include <stdio.h>
int final(int start)
{
    int f=0;int tail=0;
    do
    {
        f+=start;
        tail+=start%3;
        start=start/3;
        start+=(tail/3);
        tail%=3;
    }while(start+tail>=3);
    f+=start;
    return f;
}
int main()
{
    int a=5,b=7,c=100;
    printf("%d,%d,%d",final(a),final(b),final(c));
    return 0;
}
2016-11-17 22:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471249-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048415 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved