新手如何學習C語言

2021-12-28 黑客技術知識

       如果想要學習C語言,首先應該學好計算機基礎。裡面的很多概念以及基本的常識對於C程式設計師都是非常重要的。如果在著手學習C語言之前,或者已經開始學習C語言,但是碰到了很多問題,應該再把計算機基礎的書拿來好好看看。

    條件允許應該在學習C語言之前學學彙編,這會對許多比較細膩的概念有清醒的認識。那麼可以在看完一遍C語言的教材後再看,但是一定要看一遍,一定會受益匪淺。不管看什麼書,先認真地看懂,不要貪速度,應該力求深入的理解。

     如果能夠比較熟練的解決一本教材上的所有習題,那麼就應該轉入對算法的學習,儘管此時的C語言還稱不上精通,有許多細節問題還不了解,許多問題還沒有碰到,但是這些問題會在後面的工作和學習中得到解決的。

如果你還沒有系統化的C語言學習路線,那麼可以領取下方的學習教程資料,資料中包含有學習路線圖、學習筆記和視頻教程,內容清晰詳細易理解,非常適合新手小白入門學習,有需要的同學下方插件就能直接免費領取!

c/c++免費教程資料領取

系統化的學習是非常重要的,如果你基礎薄弱,突然一份高深資料可能會使你整個人云裡霧裡,一頭懵!所以一個好的平臺以及好的引路人則是非常關鍵的,對你後期學習的進步以及你的一個根基非常重要。俗話說:「師傅領進門,修行在個人」,好的師傅必不可缺,畢竟天才是少數的,耐得住寂寞的天才更是少數,所以這裡必須找一個帶你入門的人。

如果你身邊沒有這樣的人能帶領你學習,那麼可以進入下方的C語言學習交流群,裡面很多有技術有經驗的大神在群裡指導學習,還能幫你解答疑難問題,分享學習經驗和源碼筆記,能讓你少走不少彎路,從而提升學習效率!

c/c++免費學習交流群

C語言的重要性我就不多說了,相信選擇學習C語言的同學也都清楚,下面我總結了以下幾點學習技巧給大家做做參考,給遇到瓶頸的同學指點一下,不要輕易放棄!

1、各門程式語言都有它存在的理由

不要今天感覺這個過時了,明天感覺那個不實用了。C語言被創立到現在將近50年了,不一樣一直被使用嗎?不一樣很火嗎?所以,任何一門程式語言你要是學好了學精了,都可以找個好工作,都可以賺到錢,不要猶豫學哪個,認準一個不錯的、感興趣的,努力的學下去吧!

2、學編程就應該專注的去學

即使你每天只有一兩個小時的時間去學也一樣,要全身心的投入。不能三天打魚兩天曬網,學幾天扔幾天,那樣你是學不好C語言的,或者說你學不好任何一門語言。

3、學編程應該看書/看教程+敲代碼實踐結合起來

不能光看書或者教程而不敲代碼,也不能一味的敲代碼不看書。光看書或者教程不敲代碼就會眼高手低。看到什麼知識點或者看到什麼功能題目了,感覺自己會,有思路,知道怎麼做。但是真正讓你去敲代碼去寫功能的時候就手忙腳亂了,不知道該如何下手,這就是典型的眼高手低的症狀。

如果一味的敲代碼,不看書,一味的認為實踐出真知,這也是不行的。稍微遇到一個簡單的小語法問題就會把你難住,遇到一個小的知識點也忘記怎麼樣去做,反過來還得去查資料。這樣的話你的知識基礎就會留下很多空洞,說白了就是基礎不紮實,往往被很多基礎的問題絆倒。

所以,一定要把看書/看教程+動手敲代碼結合起來。

4、不怕賊偷,就怕賊惦記

遇到問題了應該多動腦去想想,去琢磨琢磨,為什麼會出現這個問題,應該如何去解決。想不到了可以動手去谷歌、百度搜索下,找找資料。C語言發展到現在已經塊50年了,所以這方面的資料可以說還是非常多的。

如果實在找不到適合自己的,也可以領取下方的資料包,都是最近剛整理的,資料很新,包含有視頻教程、實戰項目和電子書籍,都是新手小白適用的,需要的自行免費領取!

c/c++免費教程資料領取

編程上面遇到的一些問題多思考,多分析,多找資料,90%以上的問題都可以解決。我接觸C語言也有六七年的時間了,有時候也會遇到一些問題,當時可能解決不了,花個幾天時間肯定是可以解決的,相信自己!

5、學編程不能花心

今天看這個語言好就學這個,明天看那個語言好又學那個。每個人的時間精力都有限,每個人不可能都是天才,所以不可能把常用的語言都學好,都學的很精,應該有重點的去學。

選擇一門或者兩門語言去重點的花時間去學,學好了,學精通了,再去擴展其他的知識面就很容易了,編程思想都是相通的。不然可能每門語言你都會,但每門語言你都不精通,各門語言都是半瓶子水,這樣肯定是不行的。

所以不要去看其他網站或者淘寶上賣的很便宜的,幾十塊錢的,一兩百塊錢的一大把教程,什麼語言的都有,感覺很值,從頭學到尾,今天C語言,明天C#,後天Java,大後天Python,學到最後問哪門語言你最擅長?你自己都不知道。花那麼多時間精力去學,有用嗎?做了不少無用功。你要是把這些時間精力加一起單獨學一門語言肯定可以學成。

總而言之,C語言想學好並不難!入門相對很輕鬆,關鍵在於好的引路人和好的資源,這樣才會使你事半功倍。路漫漫其修遠兮,餘降上下而求索!希望有興趣的朋友一起交流,互相進步!

入門學習C語言的過程當中有遇見任何關於學習,行業方面的問題,都可以進入下方的學習群系統的了解學習,群裡還會不定時分享基礎教程、C語言學習手冊、面試題、開發工具和PDF文檔書籍教程,都是可以免費領取的,但是大家領取後也要抽時間學起來,不要讓它們在收藏夾裡吃灰。

c/c++免費教程領取

牢固的基礎是靠著長時間的鍛鍊積累出來的,編程靠的絕對不是天賦,而是經驗和積累。

為什麼說這句話呢?對於我們很多剛剛學習C語言的朋友來說,我們首要做的就是通過C語言來鍛鍊自己的編程邏輯和編程思維,只有這樣才能夠在之後的多種語言,數據結構和算法的學習中能夠更加的順利。

在前期的學習之中應該保持充分的自信,不要過早的否定自己,或許一開始有著很多的困難,但是當你慢慢熟練的積累之後你會發現它沒我們想像中那麼難,我們只需要通過自己的努力去鍛鍊,多敲一些代碼,將我們出現問題的原因記錄下來,這樣在我們之後遇見相同的問題或者難以解決的時候,看看自己的筆記,就可以順利的完成了,加油。

最後再分享幾道練習題給大家練練手:

1. **冒泡法** 重中之重的一個程序

#include <stdio.h>

#include <stdlib.h>

int main()

{

 int arr[16] = { 1, 5, 6, 9, 8, 7, 6, 12, 15, 16, 18, 13, 21, 25, 26, 28 };

 int temp;

 int i, m, n;

 for (n = 0; n < 15; n++)//進行9次

 for (m = 0; m < 15 - n; m++)//將相鄰兩位進行比較,將小的往後移

 {

  if (arr[m] < arr[m + 1])

  {

   temp = arr[m];

   arr[m] = arr[m + 1];

   arr[m + 1] = temp;

  }

 }

 for (i = 0; i < 16; i++)

  printf("The order is:%d\n", arr[i]);

 system("pause");

}

2. **數字遍歷**

#include <stdio.h>

#include <stdlib.h>

int main()

{

 int n = 123456;

 int i;

 for (i = n; i; i/=10)//數位遍歷;

 {

  printf("%d ", i % 10);

 }

 system("pause");

 return 0;

}

3.**遞歸輸出1234**

#include <stdio.h>

#include <stdlib.h>

void PrintNum(int num){//將1234輸入進;

 if (num > 9){

  PrintNum(num / 10);//遞歸進行調用 從首位開始輸出

 }

 printf("%d ", num % 10);

}

int main()

{

 PrintNum(1234);

 system("pause");

 return 0;

}

4. **計算一個數的位數 按位輸出 逆序輸出**

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int factor(int x){//計算出位數

 int count = 1;

 for (x; x / 10 != 0; x /= 10){

  count += 1;

 }

 printf("%d", count);

 return (count);

}

void Factor(int a){//按位輸出

 float n = factor(a);

 int i, j;

 printf("按位輸出為:\n");

 for (n; n> 0; n--){

  i = a / pow(10, n - 1);

  j = i % 10;

  printf("%d ", j);

 }

}

void PrintNum(int num){

 int i;

 for (i = num; i; i /= 10)//數位遍歷;

 {

  printf("%d ", i % 10);

 }

}

int main(){

 int x;

 printf("請輸入一個不大於五位的正整數:\n");

 scanf("%d", &x);

 factor(x);

 printf("\n");

 Factor(x);

 printf("\n");

 printf("逆序輸出這個正整數每一位:\n");

 PrintNum(x);

 system("pause");

 return 0;

}

5. **完數**

#include <stdio.h>

#include <stdlib.h>

int Sum(int n)

{

 int i;

 int sum = 0;

 for (i = 1; i < n; i++){

  if (n%i==0)

   sum += i;

 }

 return sum;

}

int main()

{

 int j;

 for (j = 2; j < 1000; j++)

 {

  if (Sum(j) == j)

   printf("%d is a wanshu!\n", j);

 }

 system("pause");

 return 0;

}

6. **反向輸出字符串**

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(){

 int i, j,k;

 char c[200], c1;

 printf("Enter a string :\n");

 scanf("%s", c);

 k = strlen(c);//求字數串長度;

 for (i = 0, j = k - 1; i < j; i++, j--){

  c1 = c[i];

  c[i] = c[j];

  c[j] = c1;

 }

 printf("%s", c);

 system("pause");

 return 0;

}

7. **楊輝三角形**

#include <stdio.h>

#include <stdlib.h>

int main(){

 int i, j;

 int a[7][7];

 for (i = 0; i <= 6; i++){

  a[i][i] = 1;//將為1的數位,先全部輸出;

  a[i][0] = 1;

 }

 for (i = 2; i <= 6; i++){

  for (j = 1; j <= i - 1; j++){

   a[i][j] = a[i - 1][j] + a[i - 1][j - 1];//將不為1的數位輸出

  }

 }

 for (i = 0; i <= 6; i++){

  for (j = 0; j <= i; j++){

   printf("%4d",a[i][j]);

  } 

  printf("\n");

 }

 system("pause");

 return 0;

}

8. **回文字符串**

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(){

 char s[100];

 printf("enter a string:\n");

 gets(s);

 int i, j, n;

 n = strlen(s);

 for (i = 0, j = n - 1; i < j; i++, j--){

  if (s[i] != s[j]){//判斷第一位和最後一位是否相等

   break;

  } 

 }

 if (i>j){//當全面相等的話 ,則判定位迴文數;

   printf("This is a huiwen string.\n");

  }

  else{

   printf("This not is a huiwen string.\n");

  }

 system("pause");

 return 0;

}

9. **從字符數組中刪掉d中的字符**

 #include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(){

 char s[200];

 char a;

 printf("Enter a string.\n");

 gets(s);

 printf("Enter a charater.\n");

 a = getchar();

 int i,j;

 for (i = j = 0; s[i] != '\0'; i++){

  if (s[i] != a){

   s[j++] = s[i]; //將不同的取出來放進新的字符串之中;

  }

 } 

 if (s[i] == '\0'){//將之後重複的最後一位刪除掉;

   s[j] = s[i];

  }

 printf("%s\n", s);

 system("pause");

 return 0;

}

10. **從100米的地方落下的球,每一次彈起來是下落的一半,則第十次彈起多高,總彈多少米**

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main(){

 double sum = 0, sum_down = 0, sum_up = 0, h = 0;

 double i;

 for (i = 0.0; i <= 9.0; i++){

  sum_down =sum_down+ 100*pow(1.0/ 2.0, i);//計算每一次下落的總距離;

 }

 for (i = 1.0; i <= 9.0; i++){

  sum_up = sum_up+100*pow(1.0 / 2.0, i);//計算每一次上升的總距離;

 }

 sum = sum_down + sum_up;//計算總距離;

 h = 100*pow(1.0 / 2.0, 10);//計算第十次彈起來的高度

 printf("在第十次落地,一共經過了%lf米\n", sum);

 printf("第十次再彈起 有%lf米\n.", h);

 system("pause");

 return 0;

}

在C語言的學習上,看書只是最開始的辦法,我們應該明白更多的都是需要依靠自己的勤奮鍛鍊來進行實踐,只有長時間的敲代碼才能夠更快的提升自己的能力。

文章來源:summer

相關焦點

  • 怎樣學習C語言(獻給迷茫的C愛好者)!
    在我的公司裡,高手的鍵盤響個不停,滑鼠偶爾響一下,新手是滑鼠響個不停,鍵盤偶爾響一下,他們的薪水相差的就不是一倍那麼多了!」     C語言是各大作業系統的基礎,Unix、Linux、Windows其內核都清一色是C語言開發的,(某些地方是和彙編語言混合開發的),君不見Windows API都是C語言函數的接口?
  • 如果是初學C語言請看完,如何學好C語言絕對精品
    好了,到這裡,我們基本解決了在學習C語言程序設計時的一些方法論的東西,關於具體的學習過程,如果你要我在這裡給你們講指針要如何學習?函數要如何學習?那我講的內容也不會多於任課老師的內容,或者開個專題叫「如何學好指針」,當然,如果你願意和我探討一下指針的本質和高級應用的話,課後,課後啊!現在,我們要談最後一個問題!
  • 學習c語言,知道這三個資源就行了
    c語言作為目前最熱門的程式語言之一,一直是學生、程式設計師必須學習的課程之一,但目前許多學校的課程太過老舊,教材和教程也參差不齊,這裡就給大家推薦幾個比較好的學習c語言的資源。第一個推薦的就是《C Primer Plus》,作為一本廣受大家認可的工具書,書中詳細地講解了C語言的基本概念和編程技巧,並且包含了許多習題和例子,可以有效的幫助初學者建立對於C語言的知識體系,是一本對小白比較友好,且內容全面的入門教材。
  • 新手炒股入門基礎知識:新手如何學習炒股?
    很多投資者都希望把閒錢投資到股市裡,那麼新手如何學習炒股呢?作為一個投資新手需要學習什麼樣的知識再投身到股市呢?下面小編為大家介紹一下新手如何學習炒股以及炒股知識詳解。新手如何學習炒股新手如何學習炒股首先要不斷學習,作為一個初入股市的新手,需要明確股票的基本含義和特徵,然後再進行投資技巧的學習,其中,股票一般是可以通過買賣方式進行有償轉讓的,而且股東能夠通過股票轉讓收回其投資,但是不能要求公司返還其出資
  • keil C語言與彙編語言混合編程
    無參數傳遞的函數調用C51調用彙編函數1.無參數傳遞的函數調用先來個例子:其中example.c和example.a51為項目中的兩個文件*example.c*extern void delay100();main(){delay100;}*example.a51*?PR?
  • 如何用C語言實現面向對象編程OOP?
    如何用C語言實現面向對象編程OOP?從大學到工作至今,在嵌入式領域中一直是使用C語言,而我在學習C++的過程中,看的代碼越多,代碼量越大,越來越覺得C++對於大型軟體架構的良好可控性,和對以後程式設計師維護代碼時良好的可讀性; 個人認為:C語言中最大的成功在於它的指針,但是也是最容易出錯的,想要理解C,必須要掌握指針。雖然說,語言只是一門工具,但是這是基礎.
  • 零基礎看得懂的C語言入門教程
    一、前言 距離上一次編寫C語言的教程是5年前了(2015年),由於自己是從初一時開始學習編程,深知學習編程的痛苦。此次編寫計劃編寫一個快速入門的系列以及另一個全方面學習C語言的系列。快速入門系列以輕鬆、愉悅的方式編寫,並且剝離了入門階段極少使用的技術及概念,通過最「接地氣」的方式使剛入門的新手學習到最符合當前階段的知識,計劃閱讀時長為3小時即可完成C語言關鍵內容的掌握,並且達到期末不掛科的水平。
  • C語言中「c=a+b」,這種結構合理嗎?
    C語言會同意一些"令人震驚"的結構,下面的結構是合法的嗎,我們來看看幾個例子。 c = a+++b; 以下代碼是合法的嗎,咋的一看不禁有這樣的疑問?
  • 單片機的程式語言:彙編語言、C語言、PL/M和BASIC語言
    BASIC語言的最基本語句只有17種,而且它們都是常見的英文單詞或其變形,如READ、END等,很容易學習和掌握。(2)是一種「人機會話」式的語言。通過鍵盤操作,用BASIC語言編寫完的程序,可以在計算機上邊編寫、邊修改、邊運行。而且還可以在運行中向人們提示信息的指出錯誤,要求人去改正,即實現了人和機器的對話。(3)功能較全、適用面廣。
  • 單片機C語言模塊化編程方法
    初學者往往搞不懂如何模塊化編程,其實它是簡單易學,而且又是組織良好程序結構行之有效的方法之一.本文將先大概講一下模塊化的方法和注意事項,最後將以初學者使用最廣的keil c編譯器為例,給出模塊化編程的詳細步驟。
  • 理財「新手」應該如何開始學習理財?
    在剛開始接觸投資的時候,投資者往往會有各種各樣的「問號」,會問出一些非常基本的常識問題,這種「愛學習」的表現其實是想多賺點錢,早日讓自己能夠獲得更多的「睡後收益」。理財「新手」應該如何開始學習理財?理財「新手」往往是想通過工作賺取工資以外的收入,再通過賺到的這筆收入獲得一些理財收益,這種能夠「躺賺」的機會,為什麼要錯過呢?現在已經被稱為是「全民理財」的時代,在2020年部分貨幣基金的年化收益率已經降到了2%以下,那麼想要賺取更多的投資收益是絕大多數投資者會去考慮的問題。
  • C/C+編程筆記:在C+中如何調用C語言的代碼?你可以這樣做
    比如在C文件中存在一個函數func_c(), 該文件與C++的工程混編在一起時,可以直接在C++中調用C文件中的func_c();不需要做任何額外處理。 不過在C中,不可以調用C++的接口,也不能直接調用C語言的一些API,否則編譯會出錯。這個時候呢,就需要我們今天的主角:extern "C"了!
  • 入門C語言!
    也許有很多同學想學習C語言,卻不知道從什麼地方入手。或者有一些同學,學了一些基礎,太簡單的覺得枯燥無趣,有點複雜的又靜不下心來細細琢磨,也就是所謂的瓶頸時期,如果過了這個時期,C語言的學習就會順暢很多,高度也會大幅度提升。
  • python與c語言的語法有哪些不一樣的
    在眾多程式語言之中,想必很多人都聽說過Python和C語言,在進行編程學習之前,大家都會問:python和c語言的區別有哪些?我該如何選擇?接下來我們來看看吧。4、速度:Python程式語言因為歷史原因,有一個GIL鎖,導致其對多線程支持不夠好,運行速度較慢;C語言比較快,是比較底層的語言,運行效率優於Python。5、複雜度:在Python中,不需要聲明變量類型,而在C中,必須聲明變量類型;Python程序更易於學習、編寫和閱讀,C程序語法比Python難。
  • 新手如何學習吉他彈唱,需要做什麼準備?
    朋友們好,今天新手報導,第一次給朋友們介紹我的主要領域,喜歡彈吉他,喜歡唱歌,所以今天就來跟朋友們分享分享如何學習吉他彈唱作為一個新手,要想學習好,吉他彈唱,第一個條件是你自己要非常的喜歡,第二個條件就是你要有一把吉他,第三個條件就是你需要有足夠的時間,第四個條件就是需要你有比較靈活的頭腦
  • 新手應該如何學習說唱?
    上面的那些都可以在百度上面搜到的,要想學習這個東西,又怎能不去了解它呢?2、多聽歌。建議新手開始多去聽oldschool的歌,國外rapper推薦tupac、biggie、 nas 、big L等等 建議用網易雲去聽,多收集一些oldschool歌單,國內的建議法老、謝帝、Jony J 、輝子等。還有很多厲害的rapper沒有提到。
  • 單片機c語言教程:建立你的第一個KeilC51項目
    隨著單片機技術的不斷發展,以單片機C語言為主流的高級語言也不斷被更多的單片機愛好者和工程師所喜愛。使用C51肯定要使用到編譯器,以便把寫好的C程序編譯為機器碼,這樣單片機才能執行編寫好的程序。
  • DS80C400的Keil C語言編程
    簡單程序,如網絡揚聲器,可以用彙編語言輕鬆實現,更複雜一點的,如HTTP伺服器這種需要與文件系統交互的程序,可以使用C語言。 文中介紹了如何從Keil的uVision2開發套件著手構建一個DS80C400的C語言應用程式,通過實現一個簡單的HTTP伺服器演示如何使用DS80C400的ROM功能。
  • 被雙十一套路所傷的,請到這裡取暖——「 用 C語言編寫自己的程式語言 」
    如果你的目標不僅僅是一個碼農,而是軟體工程師,那你應該好好看看本課,相信會對你了解程式語言的設計思想,實現高質量編程會有很大的幫助。1. 內容簡介我們在學習程式語言的時候會學到很多的語法規則,很多巧妙的用法,這些都是怎麼實現的?
  • 零基礎學配音軟體,新手如何系統的學習配音
    零基礎學配音軟體,新手如何系統的學習配音如果想學配音,也非一朝一夕的事情。