[系列] Go - 結構(struct) 實現 介面(interface)
阿新 • • 發佈:2020-12-27
C語言小筆記(內容偏向個人,不具大眾化,簡述):
不怎麼理解的演算法:
#include<stdio.h>
int main()
{
int n,m,s1,s2;
int t,s,d;
printf("請輸入兩個數:\n");
scanf("%d%d",&s1,&s2);
d=s1*s2;//為輸出最小公倍數做準備兩數之積除最大公約數
m=s1;n=s2;
if(n<m)//兩數大除小,小大做對換。
{
t=n;
n=m;
m=t;
}
s=n%m;//這裡一般對兩數的輾轉相除作預處理寫在while迴圈體外
while(s)
{
n=m;
m=s;
s=n%m;
}
printf("%d與%d的最大公約數為%d\n",s1,s2,m);//受迴圈體內n=m;m=s;的影響,定義s1,s2便於輸出。下同
printf("%d與%d的最小公倍數為%d\n",s1,s2,d/m);
}
關於變數,常量:
習慣上符號常量的識別符號用大寫字母。
變數識別符號用小寫字母。
教材書上邊緣內容:
平時碼程式碼用到的輸出格式常為%d,除此之外:
%O %o ,%x %X,
unsigned int %u;
long int %ld;
unsigned long int %lu;
數字之前加0x表示該數為十六進位制;
ASCll列印字元(特殊記憶):
A——Z:65到90; 65=41H=‘A’;
a——z:97到122; 97=61H=‘a’;
對應大小寫字母之差32;
轉義字元""
“\ooo” 八進位制數所代表的字元;
"\t"水平製表;
printf(“1\t2\t3\n”); 作用結果如圖:
一個小細節:
碼程式碼時及輸出框的編輯時要特別注意中文輸入法和英文輸入法轉換!
關係運算符和關係表示式
=賦值 ==做判斷;
a%=2——a=a%2;
if()也是判斷語句,非0即執行;
特別簡易的判斷兩數大小的關係表示式:
(表示式1)?(表示式2):(表示式3)
1真則輸出值為表示式2;假則輸出值為表示式3;
switch(x)
{
case 1:
break;
…
default:
break;
}
其中continue和break僅用於迴圈結構;
100數累加:(兩種表示式)
涉及符號優先順序;
i++<100;(所得i的值與100比較後再與100比較之後再+1)
++i<100;(+優先於<先+1再賦值和100比較)
對於for迴圈的強調:
for(表示式1;表示式2;表示式3)
{
迴圈體語句
}
先做一次表示式1(只做一次)在判斷表示式2的邏輯值是否為真,真則執行迴圈體語句後再做表示式3,以此再次進行到表示式2時判斷真假(是否跳出迴圈)。
函式呼叫
一: 對於srqt();只對某個數進行開方不是把目標數帶入進行海倫公式的計算。
標頭檔案: #include <math.h>
例:a=5;b=sqrt(a);//對5開方
二: 用好遞迴函式,斐波那契數列是個不錯的案例;
三:主、子函式外定義的全域性變數的拿捏
陣列 細節部分
- 習慣以下標為0開始看待一對陣列(數字或字元);便於輸入輸出;
- #define N 5巨集定義;
- a[size];陣列未初始化,需給出size具體值(不管一維還是二維甚至多維)
4.字元陣列:
常用字串處理函式:strlen strcmp strcpy strcat
#include<string.h>
此類處理函式針對於字串使用,並不是單個字元;
在字元排序時定義了t為單個字元,
以下的運用是錯誤的:
char a[5];
char t;
int i;
gets(a);
for(i=0;i<5;i++)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(t,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],t);
}
}
此為正確的換位:
char a[5];
char t;
int i;
gets(a);
for(i=0;i<5;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
此外記得在陣列末尾加’\0’
最後:
目前學到陣列,假期會把後半部分學完(也會有相應學習筆記),筆記較零散,不足之處,多加指正。
後續還會分享學習中遇到的有意思東西及相應的坑
此筆記以個人情況所著,揀好避壞。嘻嘻嘻