說明:我是一個初學c語言的小白,很多地方都不是很理解,所以就會自己動手敲代碼進行相應的推理驗證,希望可愛的你在看到這些步驟時,不要嫌棄我啰嗦,(近期有很多小可愛給我私發訊息,問我怎么學習編程,怎么學好c語言等問題,所以在這里我統一進行解答和回復,希望可以幫到大家,)
本章內容:
1、如何學好編程,編程學習方法分享(小白必看~)
2、編程學習路徑分享(C++/Java)
3、初始C語言總結思維導圖(復習+提高 專用)
4、初始C語言知識補充(查漏補缺)
5、編程練習題(鞏固加深所學知識)
文章目錄
- 一、如何學好編程
- 二、編程系統學習路徑
- 三、初始C語言總結篇
- 四、初始C語言知識補充
- 五、編程練習題(牛刀小試)
一、如何學好編程
相信有很多小伙伴都跟我一樣,剛接觸編程,剛接觸C語言,擔心自己學不會或者學不好(也有一些同學可能在學校中已經接觸過C語言,但是限于自己學習的渠道和方法,導致自己對編程學習的興趣和自信直線下降,備受打擊,陷入深深的自責和懊悔,),所以近期我收到很多小可愛們給我的私信問:“張同學,你是怎么學編程的?有沒有好的編程學習方法?我該怎么做才能學好編程呢?”等等諸如此類的問題,在這里我結合自己的學習經歷,以及身邊一些自學編程成功同學的經歷,統一回復幫助大家解決這些煩惱和問題,
1、調整好自己的心態:在你每次學習編程質疑自己的時候請一定要記住這句話:”每一個人都可以,也有能力學好編程”,編程學習并不是一個需要多高的智力,高超的技巧才能學會的東西,它和我們從小到大經歷過的每一種新的知識一樣,需要熟能生巧,需要刻意練習!
2、學會一些好的學習方法:①電腦記筆記+知識夾整理:編程學習涉及到的知識內容會比較多,理解的東西也會很多,很多時候需要有相應的圖例+代碼+額外知識鏈接(比如網站、博客等),個人建議用電腦或者平板去記筆記,最好能支持同步上傳,這樣就不用擔心自己的筆記丟失,不建議線下手寫記筆記的方式,太慢,效率低,不方便復習查看,易丟失,推薦軟體:OneNote、有道云筆記、印象筆記等等,
②學會定期總結和復習:總結是對自己所學知識的一個提高和整理,建議學習的程序中要定期去進行總結和復習(比如我自己采用章節總結的方式,每學完一章節進行總結和復習),建議總結和復習方式:思維導圖 推薦軟體:xmind
3、養成寫博客的習慣:學習的程序是一個輸入知識的程序,而寫博客則是將自己所學知識輸出的一個程序,自己在寫博客的程序中會不斷的向自己提問,能真正發現學習程序中沒搞懂或者有疑惑的地方,此外,寫博客代表你是一個敢于分享,樂于分享的人,這樣你不但可以在學習程序中體會到快樂,還能在分享學習知識的程序中體會快樂(雙重快樂,快樂翻倍!),每一個厲害的牛人也都是一步一個腳印從菜鳥過來的,所以不要去害怕自己寫的不好,不敢去分享,
4、養成每天敲代碼,上傳代碼的習慣:推薦代碼上傳網站GitHub(國外),Gitee(國內),GitHub服務器在國外,所以在使用程序中網速受限,Gitee是國內的代碼托管平臺,界面風格和使用幾乎和GitHub一致,但是網路訪問速度更快,使用體驗更好,
上面說的這些都是學習編程的前期準備環節,接下是編程學習程序中的具體方法:
(1)c語言被稱為編程之本,是一門非常值得學,也適合去學的編程語言!(c語言也是最好的編程入門學習語言!)
(2)學習不能叫苦叫累,抱怨沒時間:與戴皇冠,必承其重,真正牛逼的人都是合理安排時間,把自己有限的時間花在他覺得最重要的事情上面,
(3)拒接做伸手黨:學習編程最重要的程序就是“要學會自己嘗試去解決遇到的各種問題,因為在嘗試解決問題的程序中,你才會去想盡各種各樣的方法,從多個角度思考,才能真正的提高自己的編程能力”(不要轉牛角尖,這里不是說不管遇到什么問題都不要請教別人,在我們的學習中,生活中,以及今后的人生中,向他人學習是非常重要的,只是要注意在請別人幫忙之前要花心思去想想,去嘗試自己解決,不要一有問題就甩給別人,別人解決了,你并不能獲得解決問題程序中的提升!)
二、編程系統學習路徑
學好C語言不代表學好編程,二者不是等價的!編程的學習包括:編程語言、資料結構和演算法、作業系統、計算機網路及網路編程、資料庫、腳本語言, 在學習的計算中,一定要自己多去實踐!多敲代碼!
C++/Java編程系統學習路徑分享:

①編程語言的學習:選一門經典語言深入學習,多敲代碼多實踐,
②資料結構和演算法:建立在掌握編程語言的基礎上,聽懂 / 看懂 + 實踐,
③作業系統、計算機網路和網路編程:上課認真聽講,理解 + 看書(幾本好書),實踐
④資料庫、腳本語言:相對簡單
三、初始C語言總結篇
該部分內容是對初始C語言(1)(2)(3)的總結,建議在閱讀之前先看一下之前的三篇文章,對照閱讀效果更佳!

四、初始C語言知識補充
(1)C語言是一門通用計算機編程語言,廣泛應用于底層開發,那么什么叫做底層開發呢?

一般我們所購買的電腦都是硬體設備,需要在電腦上安裝作業系統,比如windows / Linux / macos等,但是作業系統并不是直接控制電腦硬體,而是通過中間層-- - 驅動(各種驅動軟體),來間接操控硬體設備,在作業系統安裝完成后,如果我們需要豐富多彩的體驗和功能,就需要安裝應用軟體,比如社交聊天用的QQ、微信、網路資源管理和共享的云盤網盤、娛樂放松的電腦游戲,這些都存在與應用層,通常我們將應用層往下稱為底層,
(2)常見檔案后綴.c-- - 源檔案 (c語言格式source).h-- - 頭檔案(head).cpp-- - 源檔案(c++格式).exe-- - 可執行程式
(3)一個工程中有且僅能有一個main函式(主函式),一個工程中可以有多個.c源檔案,多個.h頭檔案,但是多個.c檔案中有且僅能有一個main函式,分析理解:main函式是整個工程程式執行的入口,如果出現了多個main函式,那么程式就不知道該從哪個入口進去,不知道執行哪個main函式,就會出錯!
(4)變數的宣告和定義、函式的宣告和定義可以放到main函式外面,但是執行類的陳述句不能放到main函式外面
例如:全域變數a的宣告和定義可以放到main函式外面,但是列印a的值這條執行陳述句不能放到main函式外面,

(5)轉義字符中的’(單引號)"(雙引號)什么時候使用呢? ‘(單引號)"(雙引號)之所以要進行轉義,是為了解決’ ’ 和 " " 配對的問題,
例1:如果我們要列印輸出單引號’ ,若不加\進行轉義,則出現’ ‘例外配對,加上\后進行轉義可以解決’ ‘例外配對的問題


例2:如果我們要列印輸出雙引號’ ,若不加\進行轉義,則出現" “例外配對,加上\后進行轉義可以解決” "例外配對的問題


(6)計算機中鍵盤上敲出的字符:比如 a b ` 1 @ 等等,這些字符都是按照ASCII碼表上對應的ASCII碼值進行存盤的,并不會直接對字符進行存盤,所以說字符型別也算整型,
五、編程練習題(牛刀小試)
1、寫代碼將三個數按從大到小輸出
#include<stdio.h>
//1、寫代碼將三個數按從大到小輸出
int main()
{
int a = 0;
int b = 0;
int c = 0;
printf("please input three numbers:>>\n");
scanf("%d%d%d", &a, &b, &c);
//演算法分析 將最大數放到a,次大值給b,最小值給c
if (a < b)//如果a小于b,交換a,b兩者的值
{
int temp = a;
a = b;
b = temp;
}
if (a < c)//如果a小于c,交換a,c兩者的值
{
int temp = a;
a = c;
c = temp;
}
if (b < c)//如果b小于c,交換b,c兩者的值
{
int temp = b;
b = c;
c = temp;
}
printf("%d %d %d\n", a, b, c);//不管輸入的三個數的大小,均按照a,b,c的順序列印
return 0;
}
結果展示:

2.寫一個代碼列印1 - 100之間所有3的倍數的數字
//方法一
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;//計數
for (i = 1; i <= 100; i++)
{
if ((i % 3) == 0)
printf("%d ", i);
count++;
}
printf("1-100之間3的倍數的個數為 %d\n", count);
return 0;
}
//方法二
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 3; i <= 100; i += 3)
{
printf("%d ", i);
}
printf("1-100之間3的個數為:%d\n", i);
return 0;
}
結果展示:

3.給定兩個數,求這兩個數的最大公約數 //最大公約數又稱最大公因數
首先要知道什么時約數 / 因數, 例如:整數a除以整數b(b≠0) 除得的商正好是整數而沒有余數,我們就說a能被b整除,或b能整除a,a稱為b的倍數,b稱為a的約數,
輾轉相除法:
比如說求 24 18 的最大公約 數,24 % 18 = 6 != 0 ,18 % 6 = 0 ,那么這個6就是24和18的最大公約數 m % n = r != 0 , m = n, n = r , r = m % n, 判斷r是否為0 若r為0, 則n為最大公約數,若不為0,繼續回圈執行,
#include<stdio.h>
//3.給定兩個數,求這兩個數的最大公約數
int main()
{
int m = 0;
int n = 0;
int r = 0;
printf("請輸入兩個正整數求它們的最大公約數:>>\n");
scanf("%d%d", &m, &n);
while (m % n)
{
r = m % n;
m = n;
n = r;
}
printf("最大公約數是:%d\n", n);
return 0;
}
結果展示:

4.列印1000年到2000年之間的閏年
閏年的判斷條件有兩個
1)能被4整除,不能被100整除是閏年
2)能被400整除是閏年
#include<stdio.h>
int main()
{
int year = 0;
for (year = 1000; year <= 2000; year++)
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
printf("%d ", year);
}
return 0;
}
結果展示:

5.寫一個代碼:列印100 - 200之間的素數
素數:也叫做 “質數”,是指在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數,也就是不能再整除其他數,
#include<stdio.h>
//方法一:試除法 效率較低
int main()
{
int i = 0;
int count = 0;
for (i = 100; i < 200; i++)
{
//試除法 從2到i-1試除
int j = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
break;
}
if (j == i)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
結果展示:

這種方式效率比較低,我們注意到如果一個數是素數,那么它可以分解成兩個因數相乘的形式 如素數 n = a * b 且a, b中至少有一個數是小于或等于 開平方n的 sqrt(n), 那么我們在試除的時候就沒有必要除到i - 1 只需要除到 開平方i就行,開平方函式sqrt(),頭檔案為math.h 代碼優化后:
#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i < 200; i++)
{
//試除法 從2到sqrt(i)試除
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
break;
}
if (j > sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
6.撰寫程式數一下1到100的所有整數中出現多少個數字9
要判斷出現數字9的情況有兩種 x % 10 == 9, x / 10 == 9
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if ((i % 10) == 9)
count++;
if ((i / 10) == 9)
count++;
}
printf("count = %d\n", count);
return 0;
}
結果展示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275152.html
標籤:其他
上一篇:C1認證:作業二
