如果想要學習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