日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《21天学通C语言》总结(1)

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《21天学通C语言》总结(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 《21天學通C語言》 第六版

編輯、編譯、鏈接、測試
編譯時一個錯誤可能引起多條錯誤消息
鏈接時錯誤大多來自庫函數(shù)拼寫錯誤

庫函數(shù)

編譯指令
包含文件(頭文件)
加粗樣式

變量、常量是命名的數(shù)據(jù)存儲位置

變量名只能是數(shù)字、字母、下劃線。數(shù)字不能在開頭。不能用C語言的關鍵字。如double。
typedef指定新名稱。如typedef int integer; integer count;

字面常量、符號常量。符號常量是表示字面常量的符號
定義常量

#define PI 3.1415926 #define CONSTNAME literalconst int count = 100; const float pi = 3.14159; const long debt = 120000000, const float tax_rate = 0.21;

define可以位于任何位置,不過定義的常量只在后面的源代碼中有效
define需要#不用;,const需要聲明變量以及;。
const與define的區(qū)別涉及指針和變量作用域。

語句中的空白被忽略,字面字符串常量的空格不能忽略。字面字符串常量放在多行中必須在換行之前加上反斜杠\。

代碼塊(語句塊)中花括號最好單獨占一行,并對齊。

算數(shù)、關系、邏輯運算符

單目運算符
遞增遞減前后綴不同。前綴先計算遞增或遞減再計算表達式,后綴先計算表達式再計算遞增或遞減。

x = 10; y = x++; // 結果x=11,y=10 x = 10; y = ++x; // 結果x=11,y=11

sizeof()也是單目運算符不是函數(shù)

&&、||、!
非的優(yōu)先級最高,與或最低,與高于或。

/* 說明與&&優(yōu)先級大于或|| */ #include <stdio.h>int a = 5, b = 6, c = 5, d = 1; int x;int main(void) {x = a < b || a < c && c < d;printf("\n沒有括號時結果為x=%d", x);x = (a < b || a < c) && c < d;printf("\n有括號時結果為x=%d", x);return 0; }

復合賦值運算符

x *= y; y -= z+1; a /= b; x += y/8; y %= 3;

條件運算符,唯一一個三目運算符。

exp1 ? exp2 : exp3; //如果exp1為真,則表達式為exp2,否則為exp3.x = y ? 1 : 100; //y為真x=1,否則x=100.z = (x > y) ? x : y; //z=x,或z=y.

逗號運算符,逗號分隔的兩個表達式都被計算,且先計算左邊。表達式的結果為右邊子表達式的值。例如:

x = (a++ , b++); //x=b,之后a,b分別加1. //加圓括號是因為,優(yōu)先級低于賦值,而后綴++所以先賦值x在a,b++。

0為false,其他數(shù)為true,包括負數(shù)。
scanf(%d, &age); %d后面加空格會導致回車后無法接著執(zhí)行必須輸入一個非空格或\n(換行)的字符才行。

/* 測試scanf("%d ")中是否可以有空格 */#include <stdio.h>int age;int main(void) {printf("Enter your ages: ");scanf("%d ", &age);if(age > 21 && age <= 65)printf("\nYOU ARE adult");elseprintf("\nyou are old.");return 0; }

scanf("%d ", &a)。%d后面加空格的問題
簡單點說,你輸入的數(shù)字后面的空白符(空格也好,回車也好),都被%d吸收了,因為空白符表示數(shù)字的結束;
這樣一來,要匹配%d后面的空格,必然要輸入一個非空格符,被%d吸收掉,之后空格才能被%d后的空格匹配。

函數(shù)
函數(shù)原型與函數(shù)定義

//函數(shù)原型 return-type function_name(arg-type name-1, ... , arg-type name-n); //函數(shù)定義 return-type function_name(arg-type name-1, ... , arg-type name-n) {/* statements */ }

如果return-type不是void則函數(shù)體必須包含一條return語句。
函數(shù)原型將有關函數(shù)的信息告知編譯器。 以讓編譯器檢查源代碼對函數(shù)的調(diào)用是否正確。
函數(shù)原型中不必寫出形參名,只要類型和順序相符合就行。

練習時出現(xiàn)的錯誤:undefined reference to `WinMain' int main()沒有正確命名,錯寫成int mian() strlen()似乎返回unsigned long long 使用%d時警告說應該用%lld

規(guī)劃:
列出程序要執(zhí)行的所有具體任務,確定程序的功能。
將任務劃分為更小的子任務。
將相同的子任務編寫成一個函數(shù)。

形參(paremeter)位于函數(shù)頭中,實參的一個占位符,固定不變。
實參(argument)調(diào)用函數(shù)時傳遞的實際值,個數(shù)和類型必須相同,值可以不同。
實參被傳遞給形參,數(shù)目必須相等。
參數(shù)可以是任何合法的表達式:常量、變量、數(shù)學或邏輯表達式,甚至是另一個返回一個值的函數(shù)。

x = half(third(square(half(y))))

調(diào)用函數(shù)

printf("Half of %d is %d.", x, half_of(x));y = half_of(x) + half_of(z);if ( do_a_process() != OKAY ) {/* statements; */ /* do error routine */ }

局部變量,全局變量
全局變量默認值是0,而局部變量不是

遞歸
直接:自身調(diào)用自身。間接:調(diào)用的函數(shù)中調(diào)用自身
例如計算階乘。

內(nèi)聯(lián)函數(shù)

inline int toinches(int Feet) {return (Feet/12) }

power有冪指數(shù)的意思。。

數(shù)組
數(shù)組下標可以是另一個變量,從零開始。
int data[1000];
int index = 1000;
data[index] = 12;

for語句

for ( initial; condition; increment )statement;

1.執(zhí)行initial–> 2.判斷condition–> 3.假:退出循環(huán)。真:執(zhí)行statement–> 4.執(zhí)行increment

initial、increment可以使用任意合法的表達式

for ( count = 100; count > 0; count++ )count = 1; for ( printf("****"); count < 1000; count++ ) //initial可以省略或任意合法表達式,;不能省略for ( count = 0; count < 100; )printf("%d", count++); //increment可以省略,;不行//使用空語句來賦值 for ( count = 0; count < 1000; array[count++] = 50 ) {; }//使用逗號表達式和for循環(huán) for ( i = 0, j = 999; i < 1000; j-- )b[j] = a[i]

嵌套for循環(huán)

/* 打印x組成的矩形 */ #include <stdio.h>void draw_box(int, int);int main(void) {draw_box(8, 35);return 0; }void draw_box(int row, int column) {int col;for (; row > 0; row--){for (col = column; col > 0; col--)printf("X");printf("\n");} }

如果程序中不適用col而是column則只會打印一行X,七行空行。因為內(nèi)層循環(huán)。

while循環(huán)

while (condition)statement

condition可以是任何合法表達式
while語句實際就是沒有初始化部分和遞增部分的for語句。
因此for ( ; condition ; )與while ( condition )等價。
需要執(zhí)行初始化和遞增操作時,使用for更好。
不要使用while ( x )而應用while ( x != 0 )。后者更清晰,二者編譯后代碼幾乎相同。

do while循環(huán)

dostatement while(condition);

至少執(zhí)行一次。while后面有;。

如果for循環(huán)后面有分號,則循環(huán)后面的語句不會執(zhí)行,直到for中的條件為假時。例如下面printf輸出為10。

#include <stdio.h>int main(void) {int count;for ( count = 1; count < 10; count++ );printf("count is %d ", count);return 0; }

轉義序列

序列含義
\a振鈴
\b退格
\f換頁
\n換行
\r回車(硬回車,回到文本開頭,繼續(xù)打印覆蓋之前文本)
\t水平制表符
\v垂直制表符
\\反斜杠
\ ?問號
\ ’單引號
\’’雙引號

在格式化字符串中‘\’可以把字符串分為兩行,編譯器會將其視為一行。

三字符序列
??打頭,編譯時將被轉換。例如:??=轉換為#,??(轉換為[,等等。

轉換說明符

說明符含義要轉換的類型
%c單個字符char
%d有符號十進制整數(shù)int、short
%ld有符號十進制長整數(shù)long
%f十進制浮點數(shù)float、double
%s字符串char數(shù)組
%u無符號十進制整數(shù)unsighed int、unsigned short
%lu無符號十進制長整數(shù)unsigned long
%%百分號%

%%打印一個百分號,類似于轉義字符反斜杠。

puts()
puts()的字符串中可以包含轉義序列(\n),但不能顯示數(shù)值變量
puts()打印后會自動換行

scanf()
scanf("%d", &x); &是地址運算符,可以輸入多個數(shù):
scanf("%d %f", &x, &rate);
空白部分可以用空格、制表符或換行符。

以上為第一周內(nèi)容

總結

以上是生活随笔為你收集整理的《21天学通C语言》总结(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。