C语言速成指南
說明一下吧:
這篇文章是用于c語言有目的的速成,有點基礎的看一看也可以當復習,如果想要真正學好c語言,建議看一下之前寫的詳細教程,這篇文章會有很多對于考試沒有多大幫助的東西被忽略掉。臨近期末祝大家考試順利。
我也會不斷完善這篇文章的,歡迎各路大佬指正,給我提一提建議
目錄
順序結構基礎
1.printf
2.scanf
分支結構
? ? ? ? ?1.if-else語句
2.if-else的嵌套與綴連
3.switch-case分支
循環結構
1.while循環
2.do-while循環
3.for循環
函數
1.函數的介紹
2.math里的標準函數
數組
1.一維數組
2.二維數組
指針(簡單了解即可)
字符串
1.字符串簡介
2.字符串處理函數
結構類型
結構體
順序結構基礎
????????1.printf
? ? ? ? ? ? ? ? printf就是打印,將printf里的語句在控制臺上打印出來。
#include <stdio.h>int main(){printf("Hello World!");return 0; }? ? ? ? 這就是使用printf打印Hello World!的代碼。
?做幾點說明:1.
#include <stdio.h>int main(){//書寫自己的代碼return 0; }?這是c語言前期學習的框架,代碼寫在有//的地方。
2.printf打印的內容要在“ ”中
3.最后別忘了語句的結尾需要;
????????2.scanf
scanf是c語言的輸入語句,可以從鍵盤上獲得數字或者是字符,然后進行后續運算。
(插曲:變量)
c語言中對于變量定義要求相當嚴格:
主要用到的就是以下幾種,其他的我們暫時不需要使用
1.int(定義整型類型的變量,最常用的變量類型)輸入輸出時:%d
2.long long int(還是整形類型,但是包含整數的范圍比int要大,一般計算階乘等數據較大的程序中使用)輸入輸出時:%lld
3.double(雙精度浮點數,精度高,用于定義小數)輸入時%lf,輸出時%f(默認為其為小數,如果有小數保留要求eg:保留兩位小數:%.2f)
4.char(用于定義字符)
5.int *p(指針類型變量)
變量的定義格式:
變量類型 自定義變量名(一般來說只用字母即可)=...(可以進行變量初始化,也可以不進行);scanf語句可以從鍵盤上輸入變量的值(數字或者是字符)
下面是scanf的格式
//先定義一個整數a,在鍵盤上獲得a的值 int a; scanf("%d",&a);特別注意:變量輸入之前的&一定不要拉掉!!!
練習:做一個加法計算機,計算a+b的值
input:2 3
output:2+3=5
答案
#include <stdio.h>int main(){//先定義兩個變量a和bint a,b;//從鍵盤上輸入a,b的值scanf("%d %d",&a,&b);//按要求進行輸出printf("%d+%d=%d",a,b,a+b); return 0; }分支結構
簡單了解分支結構:
????????1.if-else語句
if(所要判斷的條件:條件判斷為真或者是假){//如果滿足條件索要執行的語句//注意:如果有多條滿足條件要執行的語句,//一定要加上大括號//如果僅有一條語句,可以不加大括號。//這里建議初學者把大括號都加上。 }else{//這里是不滿足判斷條件所執行的語句,//如果不需要,也可以省略。//大括號用法同上。 }?(插曲:計算機運算符)
下面簡單說一下if語句里的條件判斷:
數學符號:小于號 ? ? ? ? ? ? ? ?計算機語言:<
? ? ? ? ? ? ? ? 小于等于 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<=
? ? ? ? ? ? ? ? 大于號 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? >
? ? ? ? ? ? ? ? 大于等于 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>=
? ? ? ? ? ? ? ? 等于 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?==
這個等于初學者經常打成“=”一定要引起注意!!!!!
(插曲:邏輯運算)
邏輯運算符我們先了解常用的:
邏輯與&&? ? ? ? 邏輯或||? ? ? ? 邏輯非?
| 邏輯名 | 符號 | 運算 |
| 與 | && | 兩側任意一側為假整個條件為假,前為假后面不再判斷 |
| 或 | || | 兩側任意一側為真整個條件為真,前為真后面不再判斷 |
| 非 | ! | 對條件進行取反,非真為假,非假為真 |
特別注意:邏輯運算的結果只有0和1!
如:1+1==2計算結果為1
1*2==5&&1+1==2計算結果為0
1*2==5||1+1==2計算結果為1
!(1+1==2)計算結果為0
????????2.if-else的嵌套與綴連
嵌套:嵌套就是在if中在進行若干次判斷,用分支圖加強一下理解
嵌套的優化:可以用邏輯運算代替嵌套減少代碼行數
綴連:在else后面跟上若干個if判斷句
if(條件1){}else if(條件2){} else if(條件3){} else{}小結練習:輸入一個年份,判斷是否為閏年。
答案:
#include <stdio.h>int main(){int year;scanf("%d",&year);int shifou=0;if(year%4==0&&year%100!=0){shifou=1;}elseif(year%4==0&&year%100==0&&year%400==0){shifou=1;}if(shifou==1){printf("Yes");}if(shifou==0){printf("No");}return 0; }
? ? ? ? 3.switch-case分支
基本格式
switch(n){case 1:case 2:...default: }其中:n為整數或者是整數表達式,n是幾,就執行case幾。
另外,沒有break的話,switch-case會一直執行至最底端,可以根據需要添加break語句?
循環結構
循環前言:循環的道理很簡單,熟練掌握循環還需要多做點練習,這一部分會多給出一點練習
????????1.while循環
基本格式:
while(循環繼續的條件){每次循環所執行的語句 }一個比較好的入門題:
?
對于EOF現有一個了解:
通常,題目會要求多組樣例輸入。對于多組樣例輸入,一般會是讀到?EOF?結束。?EOF?的意思是?End Of File,表示讀到文件尾,結束輸入。?scanf?函數的返回值如果為?EOF?的話,就表示輸入結束了。比如題目輸入一個數,以?EOF?結束?
這個題是循環輸入多組數據,所以需要用EOF來結束,之后的相加,開一個while循環讓i從1加到n即可。
#include <stdio.h>int main(){int n;int i;while(scanf("%d",&n)!=EOF){i=1;int ret=0;while(i<=n){ret+=i;i++;}printf("%d\n",ret);}return 0; }還不理解歡迎評論區詢問。?
????????2.do-while循環
do{每次循環所執行的條件 }while(循環繼續條件)do-while循環與while循環的區別:
do循環是先執行一次循環然后判斷循環是否繼續,while是先判斷循環條件是否滿足,然后在進行循環,也就是說do-while循環至少進行一次,while循環可能一次也不執行。
例題:判斷一個整數是幾位數
思路:每次循環讓這個整數整除10撇掉最后一位,做一個計數器,每次循環讓計數器++,循環繼續的條件就是這個整數>0,因為考慮到這個數可能是0,所以用do-while循環。
#include <stdio.h>int main(){int n;scanf("%d",&n);int count=0;do{n/=10;count++;}while(n>0);printf("%d",count);return 0; }????????3.for循環
for循環就是while循環的優化,每個for循環都可以寫成while循環。
格式學會之后for循環也就理解的差不多了
for(循環開始時條件;循環繼續的條件;每次循環必須做的事){每次循環執行的語句 }一般來說會是這樣:
for(i=0;i<n;i++){ }?上面這種形式是for循環最為常見的。
例題:
還是這個題,我們嘗試把內層循環改為for循環:?
#include <stdio.h>int main(){int n;int i;while(scanf("%d",&n)!=EOF){int ret=0;for(i=1;i<=n;i++){ret+=i;}printf("%d\n",ret);}return 0; }經典循環嵌套:
一般來說打印行列圖形,外層循環控制的是行,內層控制的是列。
打印99乘法表:
?
#include <stdio.h>int main(){for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){printf("%d*%d=%d ",j,i,j*i);}printf("\n");}return 0; }?輾轉相除法可以參考:輾轉相除法求最大公約數,這也是循環一個很經典的題
循環嵌套還可以自己練一下這個題:
?另外許多oj上有循環的練習,這部分就是需要多練習。
上一題答案:
#include <stdio.h>int main(){int n;scanf("%d",&n);int i,j,a,b;for(i=1;i<=n;i++){for(j=1;j<=2*(n-i);j++){printf(" ");}for(a=1;a<=i;a++){printf("%d ",a);}for(b=i-1;b>0;b--){printf("%d ",b);}printf("\n");}return 0; }函數
????????1.函數的介紹
????????2.math里的標準函數
數組
????????1.一維數組
????????2.二維數組
指針(簡單了解即可)
????????
字符串
????????1.字符串簡介
????????2.字符串處理函數
結構類型
????????結構體
總結
- 上一篇: [Matlab] subs 函数 将符号
- 下一篇: 一阶电路误差分析_自动控制(3)时域分析