注册 登录
编程论坛 C++教室

怎么才能让代码少走一些步骤题目在里面

叶纤 发布于 2020-02-02 11:30, 2747 次点击
只有本站会员才能查看附件,请 登录

玩这游戏老不给星星✨
我的代码在下面怎么优化啊
#include<iostream>
int main()
{
    int a[4]
    {
    4,- 3, 2, -5};
    /* for(int i=0;i!=4;++i) {std::cin>>a[i]; } */
    for (int i = 0; i != 4; ++i)
    {
        int tem = a[i];
        if (tem>= 0)
        {
            do
    {std::cout << tem<<"  ";
            }
            while (tem--);   
        }
        else
        {    do
        
        {
                std::cout << tem<<"  ";
            }
    while(tem++);
            
        }
//    std::cout<<tem;
    }
   
}
15 回复
#2
林月儿2020-02-02 13:43
功能是什么,介绍下
#3
叶纤2020-02-02 14:16
倒计时
输入一维数组将数组中的每一个元素进行倒计时
列入-2,3,-3,1
输出-2 -1 0 3 2 1 0 -3 -2  -1 0 1 0
#4
叶纤2020-02-02 14:21
当然我这个是儿童游戏代码都很简单,如果大佬有更好的解法可以教导教导我
#5
雪影辰风2020-02-02 15:17
效率不知道怎么样,你看看行不行
程序代码:

#include<cstdio>
#include<iostream>
using namespace std;
inline void print(int num) {
    bool minus=false;
    if(num<0)
        minus=true;
    while(true) {
        if(num==0)
            break;
        printf("%d ",num);
        if(minus) {
            num++;
            continue;
        }
        num--;
    }
    putchar('0');
    putchar(' ');
}
int main() {
    int num;
    while(cin>>num) {
        print(num);
    }
    return 0;
}

如果还是不行我再改改
#6
雪影辰风2020-02-02 15:22
我是做OI的,一般cin/cout慢于scanf/printf慢于getchar/putchar,你可以了解一下,因为cin功能过于强大,所以会慢一点,我做题的时候基本上都是没用scanf而超的时
#7
林月儿2020-02-02 15:51
程序代码:
#include<cstdio>
#include<iostream>
using namespace std;
inline void print(int num) {
    printf("%d ",num);
    if(num<0) {
        print(num+1);
    } else if(num>0) {
        print(num-1);
    }
}
int main() {
    int num;
    while(cin>>num) {
        print(num);
    }
    return 0;
}

改来改去没啥区别,看看楼下的大神答案吧
#8
叶纤2020-02-02 16:22
谢谢大佬的回答,不过输入必须是数组,而非单一变量输出数组个数4个

[此贴子已经被作者于2020-2-2 16:23编辑过]

#9
雪影辰风2020-02-02 17:22
回复 8楼 叶纤
如果是说连续输入多个数然后输出的话是可以这么写的,这样写是在不知道输入多少个数的情况下写的,结束输出时Enter+(Ctrl+Z)+Enter即可
#10
雪影辰风2020-02-02 17:26
回复 7楼 林月儿
不能这么说,算法的简便以及效率关乎到代码的质量,你想,如果一个大公司老板,他要招一个程序员,程序员A与B同样可以写出相同的效果,但是A的代码繁琐复杂,B的代码简洁易懂,你会招哪个?
#11
wmf20142020-02-02 17:46
程序代码:
#include<iostream>
int main()
{
    int a[4]
    {
    4,-3, 2, -5 };
    for (int i = 0; i != 4; ++i)
    {
        int c,tem = a[i];
        c = tem < 0 ? 1 : -1;
        for (; tem; tem += c)
            std::cout << tem << ' ';
        std::cout << "0 ";
    }
    std::cout << std::endl;
}


[此贴子已经被作者于2020-2-2 17:47编辑过]

#12
叶纤2020-02-02 23:49
以下是引用雪影辰风在2020-2-2 15:17:38的发言:

#include<cstdio>
#include<iostream>
using namespace std;
inline void print(int num) {
    bool minus=false;
    if(num<0)
        minus=true;
    while(true) {
        if(num==0)
            break;
        printf("%d ",num);
        if(minus) {
            num++;
            continue;
        }
        num--;
    }
    putchar('0');
    putchar(' ');
}
int main() {
    int num;
    while(cin>>num) {
        print(num);
    }
    return 0;
}

如果还是不行我再改改


回复5楼:第一眼看见您的代码感觉好高大上,第二眼看您的代码逻辑简直就如跳蹦极时的心电图,第三眼看您的代码,我只想说您辛苦了。您的代码真的极难维护,一旦出错那就是系统瘫痪,不过也很感谢你您的回复
#13
叶纤2020-02-02 23:54
回复 7楼 林月儿
您的代码是5的修改版,代码逻辑清晰,简单易懂,而且还考虑到5楼   0!!!!!的存在
#14
叶纤2020-02-03 00:01
回复 11楼 wmf2014
虽然说您是按照我原来的代码进行的删减,思维并没有改变
但是您是继r版主第二个会让我说,代码原来可以这样写的人
💗💖💗
#15
林月儿2020-02-03 07:55
以下是引用雪影辰风在2020-2-2 17:26:33的发言:

不能这么说,算法的简便以及效率关乎到代码的质量,你想,如果一个大公司老板,他要招一个程序员,程序员A与B同样可以写出相同的效果,但是A的代码繁琐复杂,B的代码简洁易懂,你会招哪个?



会招便宜的,控制成本。而且说的也不是一回事,顶多是代码格式优化
还真谈不上什么简洁易懂
#16
雪影辰风2020-02-03 15:16
回复 12楼 叶纤
好的,我知道了,以后我以系统维护优先
1