| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1818 人关注过本帖
标题:请教一个代码
只看楼主 加入收藏
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
结帖率:92.86%
收藏
已结贴  问题点数:18 回复次数:13 
请教一个代码
图片附件: 游客没有浏览图片的权限,请 登录注册

我自己编的代码如下
#include<stdio.h>
main()
{
    int i,j,k,count=0;
    char ch;
    for(i=0,j=0,k=0;(ch=getchar())!='#';)
         {  
            i++;
             switch(ch)
               {
                   case 'e':j=i;break;
                   case 'i':k=i;break;
                   }
                if(k-j==1&&j>0&&k>0)
                   {
                       count++;
                       k=j=0;
                       }
                 }
                 printf("%d",count);
    }
我觉着自己的代码太啰嗦,请教高手怎么简化一下,谢谢了
2016-03-22 22:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
擅於運用庫函數,可以不用記憶法的。不許用庫函數,這種功能代碼,簡單不到哪裏去。

授人以渔,不授人以鱼。
2016-03-22 23:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
寫程序的一個方法,首先用高級的功能實現出來,寫得好看了,然後嘗試寫出自己版本的對應高級函數,逐步替換掉原來的東西,最後就是不使用庫庫函數的版本。不要一開始就試圖寫不用高級功能的,那樣衹會使自己遭受不必要的挫折影響學習積極性,何況,高級功能提煉出來的函數,之所以設計出這樣那樣功能的庫函數,必定是前人總結出來經常用到的東西,你自己實現了差不多的功能,就等於接觸和學會了最常用的方法,比純粹做學究題目有用得多。

授人以渔,不授人以鱼。
2016-03-22 23:13
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:0 
回复 3楼 TonyDeng
谢谢大神,库函数是不是就是标准函数,我认识的标准函数并不是很多呢,就scanf,printf,getchar,putchar,while,do while,for,switch,if else,continue,break,goto,还有一些ctype.h(好像是这么写)中的函数,就这个题目要用到那些库函数呢
2016-03-22 23:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我們以前學語言,都是兩本“聖經”,一是語言教材,二是庫函數手冊,綜合性的就是所使用開發環境的幫助文檔,一個沒有配備相應幫助系統的開發環境是不値得使用的,除非你另外有紙質文檔(我們以前可是花大價錢複印整本手冊的)。

具體你這個程序,最用得著的就是strstr()函數,是在字符串中查找子字符串的,在string頭中。其實你第一時間都是想到查子字符串,這就叫寫直接代碼,其他的方案,都是奇技淫巧,做出來也是複雜難懂,就算自己實現,也是實現這個strstr()函數。

[此贴子已经被作者于2016-3-22 23:34编辑过]


授人以渔,不授人以鱼。
2016-03-22 23:31
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:0 
回复 5楼 TonyDeng
谢谢,有几个问题请教
一、c primer plus算是语言教材吗?
二、库函数手册能在网上下载pdf版本的吗,如果能,大神能推荐一下哪个版本的库函数手册好呢?
三、开发环境是不是指的是所用的编译器?帮助系统是不是编译器软件带的帮助文档?
2016-03-22 23:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
1.是的
2.庫函數有兩類,一是所謂的ISO標準庫函數,那是所有編譯器都提供的,另外還有各家編譯器獨特的擴展庫函數(廣汎地說,第三方支持庫也算是擴展庫)。你要明白,僅用ISO標準庫是不夠用的,可以說,連最基本的實用程序都寫不出來,沒有擴展庫,C/C++沒有任何優勢。
3.正是如2所述,謹慎選擇你的開發環境,投入哪個門派是需要嚴肅考慮的,儘管有最廣汎的共同點,但差異性也非常明顯的。自己選擇,不推薦,免得做醜人。有些開發環境,根本就不提供幫助文檔,所有那些不佔空間的東西,都是。C語言的編譯器,實際上一張1.44M軟盤就放得下,但幫助文檔,比它大得多。

[此贴子已经被作者于2016-3-22 23:55编辑过]


授人以渔,不授人以鱼。
2016-03-22 23:52
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:0 
回复 7楼 TonyDeng
我用的编译器是gcc,不知道这个gcc的扩展函数怎么样,如果用gcc学c语言,那以后工作中写实用程序有什么影响?
刚看了一下gcc的帮助文档,全是英文,
2016-03-23 00:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned count = 0;
    for( int pre=0,ch; ch=getchar(),ch!='#'; pre=ch )
        count += (pre=='e' && ch=='i');
    printf( "%u\n", count );

    return 0;
}
2016-03-23 09:18
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:0 
回复 9楼 rjsp
学习了,谢谢
2016-03-23 09:32
快速回复:请教一个代码
数据加载中...
 
   



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

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