c語言常用小知識點總結1
#define 用來定義巨集常量
格式:#define 識別符號(大寫字母) 常量
#define PI 3.14 //注意後面是不加;分號的
常用字母的ASCII碼 'a'=97 'A'=65 '0'=48
變數的輸出
printf("引數",變數名); 字串%s char %c int %d float %float
printf("%10d",a);前面多加空格=10-變數的寬度
變數的輸入: scanf("%引數",&變數名);
rand能夠產生隨機數,需要加標頭檔案#include "windows.h"
格式: rand()%(大數-小數)+小數
rand()%90+10 //產生10~100之間的隨機數
如何確保每次執行所產生的隨機數都不一樣?
srand(unsigned)time(NULL);//這行程式碼只需要執行一次
time函式需要time.h標頭檔案支援,#include "time.h"
do{
語句體;
}while(條件);//這邊的;一定要加
延遲函式sleep(1000);//延遲1秒
system("color 背景顏色");//使用#include "windows.h"
文字顏色/背景顏色
以0開頭的是八進位制 0123=83(十進位制)
以0x開頭的是十六進位制 0123=291(十進位制)
一維字元陣列的輸入輸出
整體輸入: scanf("%s",陣列名);//這裡陣列名就是地址,不需要&
gets(陣列名);//可以輸入任何字元
區別:用scanf不能輸入空格,他會把輸入的空格當成'\0'
puts(陣列名); printf("%s",陣列名);
gets(陣列名);
//對字串進行修改會用到#include"string.h"
strcpy函式 strcpy(串1,串2);//串1=串2,串2的長度不能大於串1的長度
strlen函式 strlen("字串“);//
n = strlen(陣列名);//一個字串含有字元個數,不包含'\0'
n = strlen(一維字元型陣列);
m = sizeof(陣列名);//測量陣列長度
char a[100];
m = sizeof(a);//m=100
strcmp函式,用來比較兩個字串的大小
if(strcmp(字串1,字串2)>0)//串1>串2
if(strcmp(字串1,字串2)=0)//串1=串2
if(strcmp(字串1,字串2)<0)//串1<串2
if(strcmp(字串1,字串2))//串1不等於串2
分別取出兩個字串的每個字元來比較直到不等,然後由不等的字元來決定
strcat函式,用來連線兩個字串
strcat(串1,串2);//返回值為:串1+串2
strupr函式:把一個字串中小寫字母變成大寫字母,其他不變
strlwr函式:把一個字串中大寫字母變成小寫字母,其他不變
c語言中常見錯誤:
缺少;
缺少括號,小括號或花括號的不配對。
"/"與"\"的混用
單引號與雙引號的混用
= 與 == 的混用 在條件表示式 if( == )
邏輯& 和邏輯 |
短路&&和短路 ||
整除運算子 /
求餘運算子 %
y+=1;改成 y+=(double)1/(i*i);
或改成 y+=1.0/(i*i);
輸入一個數求他每一位上的數字和
while(n)
{
s+=n%10;
n=n/10;
}
int i,t=1;
for(i=1;i<=y;i++)
{
t=t*x;
}
return t;
a?b:c
性質:
1、相當於條件判斷語句
首先判斷a是真是假,真就執行b,假就執行c,不會同時又判斷a的真假的同時,又運算a,b的結果,最後再根據a的真假對a,b取捨,不會這樣的。
2、結合方式從右向左分組運算
a=b>c?d:e-f?g-h:i+j
實際先運算e-f?g-h:i+j三目表示式的結果,然後再計算前面的三目表示式,最後賦值給a。
k=*p++ 先把*p的值賦給k之後p+1
k=(*p)++ 先把*p的值賦給k之後*p+1
k=++(*p) 先把*p的值加1,再把*p的值賦給k,*p+1是指標指向的變數+1
k=*(++p) 先把指標p+1,之後把*p的值賦給k
二叉樹是一種非線性結構
滿二叉樹一定是完全二叉樹
但完全二叉樹並不一定是滿二叉樹
性質:
在二叉樹的第k層上之多有2的k-1個節點(k>=1)
深度為m的二叉樹至多有2的m次方-1個節點
對任何一刻二叉樹度為0的節點(即葉子節點數)總比度為2的節點多一個
具有n個節點的完全二叉樹的深度至少為(log 2為底 n )+1,其中(log 2為底 n )取它的整數部分
建立連結串列
STU *createlink(STU a[],int n)
{
STU *head;
int i;
head=&a[0];//表示吧陣列a中第一個元素給頭指標
for(i=0;i<n-1;i++)
{
a[i].next=&a[i+1];
}
a[n-1].next=NULL;
return head;
}
head=createlink(a,8);
output(head);
輸出連結串列:
void output(STU *head)
{
STU *p = head;
while(p != NULL)
{
printf("%s\t%s\n",p->id,p->name);
p=p->next;
}
}
連結串列的刪除
STU *p=head,*front;
while(P! = NULL)
{
if(strcmp(p->id,id) == 0)//找到要刪除的節點
break;
front = p;//front總是跟著p的後面
p = p->next;
}
if(p!=NULL)
{
front->next = p->next;
}
retrun head;
詢問迴圈程式
char answer;
do{
//要迴圈的語句體
printf("要繼續嗎?(y/n)");
answer=getchar();//獲取y/n
getchar();//消化掉Enter鍵,不然會退出迴圈
}while(answer == 'y');
陣列的反轉:
a[n]={..........};
int i,j,t;
for(i=0,j=n-1;i<j;i++,j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
陣列的插入:
for(i=0;i<9;i++)
{
if(insert<s[i])
break;
}
index=i;
for(i=9;i>=index+1;i--)
{
a[i]=a[i-1];
}//產生空位
a[index]=insert;//插入值
怎樣使用遞迴呼叫程式設計?
什麼樣的程式適合用遞迴方法:
這個程式的特徵符合前項與後項有某種關係
已知某項的值(退出遞迴的條件)
如果要迴圈也可使用遞迴來代替換換
相關文章
- C語言知識彙總 | 00-C語言知識彙總目錄C語言
- 、【C語言基礎】 第十天 | 知識點總結C語言
- docker常用知識點總結Docker
- mysql 常用知識點總結MySql
- RabbitMQ 常用知識點總結MQ
- C 語言複雜知識點
- 【C++】 C++知識點總結C++
- 【建議收藏】Go語言關鍵知識點總結Go
- 總結的小知識點(一)
- MySQL 常用易混淆知識點總結MySql
- C語言位運算子知識總結和例項分析C語言
- ES6常用知識點總結(上)
- ES6常用知識點總結(下)
- 前端知識點總結——C3前端
- C++primer1-7章知識點總結——sizeof運算子C++
- 小知識點1
- jQuery常用的一些知識點總結jQuery
- java基礎語法知識小結(1)Java
- 知識點總結
- c語言字面值知識體系總結大學霸IT達人C語言
- python基礎語法知識點總結Python
- c語言基礎知識C語言
- C語言瑣碎知識C語言
- C++primer1-7章知識點總結——顯示轉換C++
- 鵬哥C語言初識課程總結C語言
- # Redis 常用知識總結(一)Redis
- C語言語句知識結構大學霸IT達人C語言
- 【JAVA】- 知識點小結Java
- promise知識點小結Promise
- makefile 知識點小結
- C語言知識彙總 | 51-C語言字串指標(指向字串的指標)C語言字串指標
- C語言知識彙總 | 56-C語言NULL空指標以及void指標C語言Null指標
- Java 知識點總結Java
- django知識點總結Django
- iOS 知識點總結iOS
- MongoDB知識點總結MongoDB
- HDFS知識點總結
- HBase知識點總結