新手如何學習C語言

2022-01-09 黑客技術知識

       如果想要學習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語言基礎學習呢?下面我們來一起看一看。在學習之前,我們首先要知道為什麼學習C語言。眾所周知,C語言是一門簡單、底層、較早的程式語言,後來的很多語言在語法上都和C語言類似,比如Java、PHP等程式語言都是從C語言衍生出來的,因此掌握C語言將為學習其他程式語言打下更好的基礎。但同時大家也要知道,只會C語言的話,想要找工作還是很困難的。總的來講,C語言的基礎學習不過是冰山一角,要想成為一名優秀的程式設計師,需要學習的東西還有很多。
  • 一個資深C語言工程師說如何學習C語言
    一個資深C語言工程師說如何學習C語言談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」
  • C語言和Java語言學習哪個更好呢?
    如果你想學習開發語言作為零基礎新手是學習c語言還是學習java語言呢?這兩種語言中哪一種更適合初學者,哪一種更適合在學習後找到工作?下面給大家介紹一下新手學習C語言還是學習java語言好?C語言是一種抽象的,面向對象的通用程式語言,廣泛應用於底層開發。Java是一種面向對象的程式語言, 既吸收了C語言的優點,又摒棄了C語言中難以理解的多重繼承和指針概念,具有功能強大,使用方便,適合於Internet應用的開發。所以Java語言比C語言應用程式更廣泛,比C語言更容易學習。
  • 新手如何學習C語言?
    相對於其他程式語言,C語言還是比較難的。初學者需要注意一下幾點:一是學習順序先從熟悉簡單的C語言語法開始入門,然後再循序漸進,學習C++語法,WIN32、MFC、QT、網絡編程,資料庫、數據結構、算法、COM、STL等。構建一個完整的C語言知識體系。這需要一個比較漫長的學習積累的過程。
  • 程式設計師學習C語言編程的4種方法,C語言之父的大作不容錯過!
    如果新手要學習編程,一些前輩都會建議從Python、PHP、Java開始學。不過,有些程式設計師是直接從C語言強勢入門編程的。那麼,如何學習C語言呢?下面w3cschool提供4種入門C語言的方法:0、刷題絕大多數的程式設計師學編程的時候,還是會開啟簡單粗暴的刷題模式。刷面試對於面試以及技術的提高大有裨益,刷題網站強推Leetcode、Codility、Lintcode等。
  • C語言學習推薦書籍
    第10章 文本處理第11章 分離用戶界面與內部實現第12章 撰寫設計文檔附錄C語言中接口定義的不同形式《華為技術有限公司c語言編程規範》有一句話說的很好,「規範大於配置」。如果你需要為一個團隊制定C編程規範,《華為技術有限公司c語言編程規範》可以作為你的參考。
  • 學習c語言筆記——C庫函數printf()
    c語言中的printf是什麼來的?」。我答:「它是一個函數,主要用來輸出運算結果。」 ,下面就給大家介紹C庫函數printf()使用方法。下面我們通過一個調用c庫函數的c語言案例來說明printf()函數的使用方法,如c語言1。
  • 書籍分享|零基礎學習C語言(附電子書)
    plus作為一本被人推崇備至的c入門經典,C primer plus絕非浪得虛名。它能為你系統學習c提供一個良好的平臺。作者:普拉達《The C programming language》拿到這本薄薄的書,很多人開始懷疑,C語言是這麼幾百頁能講清楚的麼。看完這本書,我想答案已經很明了,卻真的讓人感到震憾。什麼是好書?無法刪減的書才是真正的好書。
  • C語言史上不適合新手卻被奉為經典的書籍,C語言有9本這樣的書籍
    《編寫你自己的Lisp語言》(Build Your Own Lisp)相關C/C++學習資料私信我 「代碼」即可獲取作者 Daniel Holden ,212頁在學習 C 語言的同時學習如何創造你自己的程式語言——一個最簡的
  • C語言怎麼系統化的高效學習?
    C語言指針很難學?給你最直接的解決思路!首先我想說下,C語言是非常重要的語言。為什麼這麼說呢?原因在於C語言是連接了硬體和軟體的橋梁。如果你學習Java,會發現自己是在Java虛擬機上,你要是用硬體功能,除了依賴系統API之外,就沒招了。
  • 初學者要如何學好C語言
    學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收穫,同時也意味著你需要經歷艱苦的過程。所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。
  • 初學者:如何學好C語言?
    學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。
  • C語言 | 如何學習
    收錄於話題 #小林C語言基礎 「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用。
  • C語言學習資源整理
    (文中連結請點擊最下方閱讀原文打開)包括四個方面,依次是:C語言入門課程:主要針對入門新手做的課程整理,如果你有一定的C語言基礎,可以跳過這部分內容;(小白新手,推薦看)C語言實踐項目:整理了一些C語言實戰項目以及項目列表,可以找到很多項目開發點子
  • 新手怎麼學習C語言
    那計算機有計算機的語言,人類有人類的語言,兩類物種該怎麼溝通呢?這時候UNIX的開發者裡奇和肯在1970年研製出C語言的原型-B語言,隨著B語言的完善,裡奇第一次把B語言改為C語言。就是這樣人們通過C語言和計算機進行交流。那C語言有什麼特點呢?我們為什麼要選擇學習C語言呢?首先C語言是一種通用的程序設計語言。
  • 通過這 9 本開源好書學習 C 語言
    作者 Daniel Holden ,212頁在學習 C 語言的同時學習如何創造你自己的程式語言——一個最簡的Lisp語言(僅用不到1000行代碼)。這本書是為兩種人寫的,一種是想要學習 C 語言的人,另一種是想要知道如何創建一門語言的人。本書並不適合作為第一本入門書籍,因為你需要一些編程經驗才能讀懂它的內容。本書基於 Creative Commons Attribution-NonCommercial-ShareAlike 3.0.協議發布紙質版可以在Amazon上購買。
  • 學習C語言必看的最經典書籍
    、提高、開發、拓展全攻略》  這本比較好的c語言學習書籍從實際應用入手,以實驗過程和實驗現象為主導,循序漸進地講述51單片機c語言編程方法以及51單片機的硬體結構和功能應用。本學習c語言必看的最經典書籍內容豐富,實用性強,書中大部分內容均來自科研工作及教學實踐,許多c語言代碼可以直接應用到工程項目中。本書配套光碟提供13講近30學時的教學視頻和本書實例代碼,可使讀者更快更好地掌握單片機知識和應用技能。這本比較好的c語言學習書籍作者還可提供與本書配套的單片機實驗板。
  • 大一如何學習C語言?
    如何正確的打開C語言?我認為C語言最為核心的有三塊:▪ 指針▪ 內存▪ 系統編程首先指針和內存是需要在學習C語言過程中就理解、搞定的,推薦兩本書:《C程序設計語言》、《C和指針》如果你覺得初學看書過於困難,那麼可以在職坐標學習
  • c語言自學網站
    C語言中文網(http://c.biancheng.net/view/510.html)是中國領先的C語言程序設計專業網站,提供C語言入門經典教程、C語言編譯器、C語言函數手冊,C語言編程技巧,C語言考試試題等,分享的C語言知識結構是比較完整的。
  • Linux、C/C++學習路線圖、C語言學習路線
    對於學習Linux,前人已經鋪好了無數的基石,有無數可以參考學習的資料,而且內核也是開源的,必要的時候可以查看其代碼,甚至已經有非常多幫你分析內核代碼的書籍資料,甚至還有很多中文資料。所以,不論你打算要學習到如何的程度,已經有無數的資料可以參考,也有極為龐大的社區可以依靠。