當前位置:首頁 » 編程語言 » c語言函數太難了
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言函數太難了

發布時間: 2022-04-19 20:25:12

c語言的函數調用這么難怎麼辦

// 函數聲明
void df(void)
{
int i,f,min=100,max=0,sum=0;
for(i=1;i<=10;i++){
printf("請第%d個評委打分:",i);
scanf("%d",&f);
if(f<min){
min=f;
}
else if(f>max){
max=f;
}
}
printf("最低分為:%d\n",min);
printf("最高分為:%d\n",max);
}

⑵ 那麼多的C語言函數,怎麼學啊,給個建議。

學習任何知識,循序漸進總是最好的方式。不幸的是,很多人明知這個道理,卻總是想走所謂的捷徑。如果你是一個剛剛開始學習編程的中學生,或者你是一個剛剛進入計算機學院的本科生,又或者你是一個決心在計算機領域有所建樹的初學者,你一定迫切地想知道,學習計算機技術,究竟應該從哪裡下手。

我的建議是:數學、英語、C語言。

數學和英語的重要性已經不需要我來強調,大家也許從幼兒園就開始學習它們了,請時刻把它們放在最重要的位置,無論你是否學習計算機。

為什麼C語言如此重要?我們從學習方法開始說起。書本上描述的東西,倘若不經過我們的親自實踐,是難以被徹底消化吸收的。計算機組成原理講解了浮點數的格式,如果我們能看到並分析內存或寄存器中某個浮點數的表示,那比單純的紙上談兵要強一千倍;數據結構與演算法似乎很難,如果你能把書上的例子實現出來,然後把習題做完,只需啃完一本好書,你也可以是演算法高手;操作系統原理其實不僅僅是原理,只有做一些內核方面的實驗才能真正有深刻理解;還有許多新潮的技術,比如JavaEE、PHP、Ajax、.NET等等等等,很多高手學習這些技術只需要很短的時間,不必說,他們肯定是C語言的高手。C語言幾乎是一切計算機技術的通用工具,包括計算機的各種基本理論。沒有精通C語言的決心,就不要涉足計算機領域。

為什麼是C語言而不是C++不是Java不是其它?因為C語言最簡單。你需要掌握一個語言工具,但也許並不需要「面向對象」、「模板」、「函數重載」等等一大堆概念。C語言足夠低級,非常非常地貼近計算機的底層結構,不會讓你迷失在概念的汪洋大海。除了「指針」,C語言沒有真正意義上的難點,而「指針」,恰恰是理解計算機底層結構精髓的關鍵所在。
不必思考應該學什麼,等把C語言精通了,你自己便會知道下一步如何去走。如果你對操作系統內部感興趣,你便可以試著研究一下Unix的內核,除了C語言,你還需要一些匯編語言和保護模式的知識;如果你對演算法感興趣,那麼恭喜你,C語言足夠使用了;如果你對Windows編程感興趣,去看看《Windows程序設計》吧,作者清楚的告訴你「只需要C語言的基礎」;如果你對任何其它語言感興趣,盡管去學吧,不過還是建議先學C++,因為你需要一些「面向對象」的知識。

學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經歷艱苦的過程。

一、要讀就讀好書,否則不如不讀

所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。

大名鼎鼎的譚浩強教授出了一本《C語言程序設計》,據說發行量有超過400萬,據我所知,很多學校都會推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅定地黑他這本書的。這本書不是寫給計算機專業的學生的,而是給那些需要考計算機等級考試的其它專業學生看的。這本書的主要缺點是:例子程序非常不專業,不能教給你程序設計應該掌握的思考方式;程序風格相當地不好,會讓你養成亂寫代碼的惡習;錯誤太多,曾經有人指出過這本書的上百個錯誤,其中不乏關鍵的概念性錯誤。好了,這本書我也不想說太多了,有興趣大家可以網路一下:)

Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設計語言》)堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標准C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。《C語言參考手冊》就是《C Reference Manual》,是C語言標準的詳細描述,包括絕大多數C標准庫函數的細節,算得上是最好的標准C語言的工具書。順便提一句,最新的《C程序設計語言》是根據C89標准修訂的,而《C語言參考手冊》描述的是C99標准,二者可能會有些出入,建議按照C99標准學習。還有一本《C和指針》,寫得也是相當地不錯,英文名是《Pointers on C》,特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很扎實,那麼你可以嘗試一下這本書。我相信,只要你理解了指針,C語言便不再神秘。

如果你已經啃完了一本C語言教材,想要更進一步,那麼有兩本書你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常地有趣。要注意一點,這本書是二十多年前寫成的,裡面提到的很多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什麼壞事。然後你可以挑戰一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細讀完並能透徹理解,你便可以放心大膽地在簡歷上寫「精通C語言」了。

切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,你要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。

⑶ c語言為什麼這么難學,我為什麼老是學不會

對初學者來說,C語言確實有一定的難點,但是C語言是基礎的語言,並不是最難的所以學不好的主要還是自身的問題。依據本人這么多年的經驗,這嘗試分析下為何這么多人學不好C語言?

C語言本身存在一定難度
C語言主要應用於操作系統、嵌入式底層開發等,在這些領域C語言一直都咱局主導位置,但是在入門上現在比較熱門的php、python、java等語言比C語言稍微容易一些。所以很多人學習到C語言的時候,理解起來很抽象,使用時變化莫測,覺得很難,自己就失去了興趣,慢慢地放棄了。特別是在指針的學習上,是一個檻,很多人就是倒在指針上的。
當然除了指針,C語言裡面還有一些回調、遞歸、函數指針、指針函數也有一定的難點,所以總的來講C語言還是有一定的難度 的,學習C語言一定要多練,不能光看書,多做一些項目慢慢地就好了。

意志力不夠沒有耐心,倒在黎明前夕
學習編程主要挺過去前兩年的積累經驗階段,後面就好多了,有些人就是迷迷糊糊的進入技術崗位了不知道到底做的是什麼,會有一天發現自己突然明白過來很多的事情,以前有些不明白的事情,突然覺得啥都明白了,看似是一件很神奇的事情,本質上來講都是日積月累構造成的。
很多人覺得自己學了這么長時間還是很多不明白,就會產生厭倦心裡,自己都想要放棄,沒有了激情,慢慢地自己就放棄了,其實有時候默默地再堅持一會自己就會慢慢地掌握C語言的精髓,對C語言產生興趣。

C語言沒有別的語言好就業
這涉及一個很現實的問題,學習了編程語言就得找工作,如果學了不好找工作,肯定學習起來的動力就不足,畢竟C語言的工作崗位絕對數量並不少,但是相比java,php,python等語言還是沒法比,而且對入門者的要求相對更高點,薪資上也不一定有多大的優勢,所以對於初學者沒有多大的吸引力。目前這也是當前的市場實際情況。
C語言是不是就不值得學習了?其實這種說法是不對的,其實php,python等底層語言還不是一樣用C語言來實現,所以C語言的重要性不言而喻。不要聽信C語言已經過時之類的謠言,C語言一直都在默默無聞、踏踏實實地做著底層很重要的事情,經久不衰。想要在軟體行業立足發展,C語言還是很值得學習的。

⑷ C語言函數困難!

8

這是一個函數遞歸。
自己不斷的調用自己,一層又一層,直到
if(s2<10)
return s2;
滿足了就一級一級往上返。

但要注意的是,無論怎麼調用,最終都要返回第一次調用的狀態,
就是最初遞歸開始的入口,,,
int fun(int s1,int s2)
{
......
fun(s1,j); <--------- 這里
return(s1);
}
有一點需要注意,這里 沒有獲得fun返回值,也就是說,初次進入fun時的
s1的值根本沒受遞歸影響。 函數傳值,不受影響。
一切的遞歸都是虎人的。
所以,只需計算第一次進入fun時的s1值既可。

⑸ C語言的函數調用這么難

這個……有什麼難的?
我把整個程序寫出來把……
//df.c
//以下為代碼部分
#include<stdio.h>

//打分函數
void df()
{
int i,f,min=100,max=0,sum=0;
for(i=1;i<=10;i++){
printf("請第%d個評委打分:",i);
scanf("%d",&f);
if(f<min){
min=f;
}
else if(f>max){
max=f;
}
}
printf("最低分為:%d\n",min);
printf("最高分為:%d\n",max);
}

//主函數
int main()
{
df(); //調用df()函數
return 0;
}

⑹ 這個實在看不懂啊,C語言確實太難了,各位大大誰給解釋解釋唄

首先,沒有main函數,這是一個功能函數的定義(如果這句話都看不懂,就別浪費時間往下看了,直接去通讀譚浩強編的清華大學出版社出的c語言就行了)
int connect_tcp()
{
int sock;//定義一個int(整型)型的變數
struct sockaddr_in sin;//定義一個sockaddr_in類型的對象(結構體sockaddr_in是在頭文件sys/socket裡面定義的)
char hsm_addr[20], hsm_port[6];//定義兩個字元串變數
signal( SIGCLD, SIG_IGN );//這句是調用了一個函數,函數的具體功能不知道(因為函數的具體定義應該在其他地方,其中SIGCLD和SIG_IGN是兩個參數,其定義也應該在主函數里或其他地方)
if ( (sock = socket(AF_INET, SOCK_STREAM, 0 ))< 0) {//這是創建一個socket(套接字),socket是用於網路通信的,關於該部分的內容屬於c語言的網路通信,第一個參數AF_INT是說明用IPV4網路協議,第二個參數SOKET—STREAM說明用tcp協議,第三個參數是協議編號,0是讓系統自己分配協議編號。如果這句sock=socket(AF_INET, SOCK_STREAM, 0 )執行成功則返回新建的socket的標示符給sock.如果不成功則sock就等於0了,前面的if就是判斷有沒有創建成功。這部分知識與網路有關,建議看看謝希仁編的那本網路教材)
ErrorLog(ERROR, "socket error! " );//如果上面創建socket不成功就把socket error!輸出到錯誤日誌里.
return FAIL;//這個函數就返回FALL(失敗)。
}
memset( hsm_addr, 0, 20 );//此句之後,是上面創建socket成功後執行的代碼。意思是把hsm_addr指向的地址後面的20個位元組設置為空(0在asscii碼里代表空).
memset( hsm_port, 0, 6 );//這句自己看,和上一句一樣的。(這兩句就是把上面的兩個字元串清空)
if ( get_param( "HSM_ADDR1", hsm_addr ) < 0 ) {//這個函數應該是獲取參數的函數,具體定義不清楚不敢斷定。如果不成功則返回FALL
ErrorLog ( ERROR , " get param error " );
return FAIL;
}
if ( get_param( "HSM_PORT1", hsm_port ) < 0 ) {//如果哥沒看錯,這三句應該和前面的重復了
ErrorLog ( ERROR , " get param error " );
return FAIL;
}
bzero( &sin, sizeof(sin) );//把sin清零
sin.sin_family = AF_INET;//這句以及後面兩句是初始化結構體對象的(這句是說用IPV4網路協議)
sin.sin_port = htons( atol(hsm_port) );//這句是把主機地址順序轉換成網路地址順序
sin.sin_addr.s_addr = inet_addr( hsm_addr );
setjmp(com_jmp);//程序控制流有效轉移
if( timeout_flag == -1 ) {
ErrorLog(TRACE, "connect timeout!" );
return FAIL;
}
signal ( SIGALRM, signal_alarm );//調用函數
alarm ( time_out );
if ( (connect( sock, (struct sockaddr *)&sin, sizeof(sin) )) < 0 )//這句應該是去連接結構體對象sin里sin.sin_addr.s_addr指定的主機,如果錯誤執行下面{}裡面的東西(這里和網路的伺服器和客戶端用TCP連接通信有關,建議看看,TCP通信建立過程的c實現)
{
ErrorLog(ERROR, " connect error, errno[%d]\n", errno );//把錯誤輸出到錯誤日誌
close( sock );//關閉socket
alarm(0);//蜂鳴器報警
signal( SIGALRM, SIG_DFL );調用外部函數
return FAIL;//返回FALL
}
return sock;//如果上面一切順利,就返回上面創建好並設置好的socket的標示符sock。這句就是整個函數的最終目的。
}
本人菜鳥一名,解釋之處難免有疏漏錯誤。如果有大俠,多多批評指正。希望對你有一點幫助。C語言不僅僅是一門語言,還要許多有關的計算機的基礎,一起努力。

⑺ C語言函數題我實在不行了 求幫助~

#include "stdio.h"

char *join(char *a,const char *b,int n){

int i;

char *t;

if(a==NULL || b==NULL)

return NULL;

for(t=a;*t;t++);

for(i=0;i++<n && *b;*t++=*b++);

*t='';

return a;

}

int main(int argc,char *argv[]){

char a[66] = "i love";

char b[] = " study very much cai guai";

//join(a,b,6); // 執行後a中字元串為"i love study"

//join(a,b,666); // 執行後a中字元串為"i love study study very much cai guai"

printf("6: %s ",join(a,b,6));

printf("666: %s ",join(a,b,666));

return 0;

}

代碼圖片及運行樣例:

⑻ 為什麼C語言很難

我舉一個例子:
我們現在生火直接打開煤氣,天然氣或者打火機就可以了。可是遠古人需要鑽木取火。C語言是一樣道理。實現一個功能,如果你用java來做,可能100行代碼,如果你用C++估計得用300行以上,那如果你用C這種非面向對象語言,可能要1000+行。因為c比c++和java更加底層。而語言越底層難度是越大的。
java也好,php也好,這些高級語言是沒有指針這個概念的(雖然java中到處都是指針),而C++和C之所以難,就是有指針這個概念。指針是什麼?可以說有了指針,你就有了直接與內存對話的機會。更底層的還有匯編,直接跟內存打交道。
但是對於新手而言其實大可不必擔心。C語言是個適合新手的非常好的入門語言,現在主流的流行語言很多都是類C的。

⑼ c語言函數太難了,怎麼學

莫非這點小問題就打擊到你了, 你漫漫長征第一步都還沒開始, 以後的資料庫 數據結構 操作系統 計算機網路 每一門課程都是很難的

C語言的函數其實很簡單 你就把他當成一個功能模塊就行了, 這個東西理解清楚了其實很簡單的, 比如說你想請客吃飯, 這是你的最後功能,中間你可能叫別人通知另外的人, 那麼你叫別人通知的這個過程就可以當成一個函數了, 因為你叫他幫你做一件事, 但可能不知道他是怎麼做的, 你只關注入口和出口, 即你叫他通知和他是否通知到.

既然是叫別人幫忙做事的話, 你可能需要傳一些東西給別人這就是參數, 別人做完後, 可能要返回給你一個東西, 這就是返回值, 但這不是必須的.

C語言程序全都是函數, 他就是一個函數的集合, 在main函數中調用其他的函數, 所以說C語言里全是函數, 鋤此之外再沒別的東西了

⑽ 為什麼我覺得C語言的數組和函數那麼難啊 有什麼辦法可以讓我覺得學這部分會容易點

數組:想放一大堆數字的時候就會有用了。 想放一長串字母的時候同理。 想放多少,定義得比它大就行了。 函數:在C語言中函數是非常重要的環節。 當然你可以把所有代碼全部都寫在一起,那樣除了你自己沒人能看懂了,但是假如我寫了一個程序,主函數裡面只有幾個小函數,而且從名字就知道它是做什麼的,那樣就一目瞭然了。函數的目的就是把要做的事情分成一個一個的小組。 對於自己寫代碼嘛。。。 適量的課後練習題足夠了,選對自己不太簡單也不太難的,邊做邊回憶課文中所講到的編程思想,能起到加深記憶的作用。當然如果你記憶超群能記住所有用法,那麼你的重點就是自己思考應該怎麼把你所掌握的知識點運用到實際中去,在做題的時候多想一想,我用哪個方法比較巧妙?多想想,自己的技巧就在不知不覺中提高了。 個人看法,希望能對你有所幫助。