标题:给100分,能准确运行的时候就行,诚心感谢
只看楼主
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用TonyDeng在2012-7-3 22:09:16的发言:

再拆一下,寫一個在數組中查找某一元素是否存在的函數,這種需求在多處地方都有用(實際上在你這個程序中就有好幾處地方要用到這樣的東西),放在這裡,把代碼進一步清晰化。盡可能地這樣做,這種可重用的函數做多了,以後自然享受到福利。

嗯。算法就是类似于冒泡。函数还是比较容易写。感觉自己还是有进步了,以前连格式控制%s%c是啥意思都搞不定。代码就是要清晰

认为事物非黑即白是缺智慧的表现……
2012-07-03 22:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
在以前,描述數據結構和算法的標準語言是Pascal,是沒有指針的,不知何時,人們逐漸時髦用C了。C++都不鼓勵指針,而是用“引用”。在C#中,近乎禁止用指針,若你非要用不可,也可以,告訴編譯器,你接受它不負責替你把關的風險,一切由你自己承擔。描述那些東西,不是非指針不可的,我不知道是什麼權威說成這樣的。

在C++和C#中,確實可以在子函數直接返回一個數組,是真的整個數組返回給你,不是返回的指針,原因是它們替你在適當的時候釋放內存,這樣就免除了C的釋放風險(C#是有new而沒有delete的,C++在析構函數中自己集中釋放,但若用C++/CLI,則與C#一樣,不用自己釋放)。你若以後不是死守在C上,固化這種思想就沒什麼用,這也是我說不要死抱著這些東西不放的原因。

[ 本帖最后由 TonyDeng 于 2012-7-3 22:20 编辑 ]

授人以渔,不授人以鱼。
2012-07-03 22:17
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用TonyDeng在2012-7-3 22:17:42的发言:

在以前,描述數據結構和算法的標準語言是Pascal,是沒有指針的,不知何時,人們逐漸時髦用C了。C++都不鼓勵指針,而是用“引用”。在C#中,近乎禁止用指針,若你非要用不可,也可以,告訴編譯器,你接受它不負責替你把關的風險,一切由你自己承擔。描述那些東西,不是非指針不可的,我不知道是什麼權威說成這樣的。

在C++和C#中,確實可以在子函數直接返回一個數組,是真的整個數組返回給你,不是返回的指針,原因是它們替你在適當的時候釋放內存,這樣就免除了C的釋放風險。你若以後不是死守在C上,固化這種思想就沒什麼用,這也是我說不要死抱著這些東西不放的原因。

嗯。不会死包的,我自己的能力还属于基础级,争取早点达到一个层次,找个跟编程相关的工作,还有好多路要走,好多东西要写,才能去面试

认为事物非黑即白是缺智慧的表现……
2012-07-03 22:22
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
TonyDeng这一兴奋了就胡说八道的毛病还没彻底改了。

我还是挺喜欢看你长篇大论的,不过提个建议,以后想引证什么的时候最好先查一下相关资料。不懂可以不说,别信口开河。

你回答的都是些基础问题,而问这样问题的往往都是些还没入门的新人。

你的错误言论对我来说只是个笑话,但他们不懂,可能会信以为真,这会误导新人。

以下纠正你的错误言论:pascal是有指针的。

重剑无锋,大巧不工
2012-07-04 08:33
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
得分:0 
猜数字游戏嘛~
将下段程序
while(1)
    {        
        if((scanf("%d %d %d %d",&numb2[0],&numb2[1],&numb2[2],&numb2[3])==4)&&(numb3==getchar()))// scanf格式读取四个数,正确输入第5个应该是'\0'
        {
         break;
        }
        
        else  {
                   fflush(stdin);
            printf("输入错误,请重新输入\n");
         
             }
        printf("按Q/q退出\n");
        if('Q'==getch()||'q'==getch())
        exit(0);
        
    }
改为
scanf("%d %d %d %d",&numb2[0],&numb2[1],&numb2[2],&numb2[3]);
getchar();
就ok了。
输入数字形式为“1 2 3 4”中间有空格。
可以试一哈。
2012-07-04 15:08
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
得分:0 
scanf输入必须改为带空格输入。然后改动一处:char numb3=0x0a;就o了。
if((scanf("%d %d %d %d",&numb2[0],&numb2[1],&numb2[2],&numb2[3])==4)&&(numb3==getchar()))

请试过的留言指教。
2012-07-04 15:16



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




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

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