C Programming Language_第1頁
C Programming Language_第2頁
C Programming Language_第3頁
C Programming Language_第4頁
C Programming Language_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、謝謝 浩哲浩哲2022年6月13日#include int main(int argc, char* argv)int num;num = 1;printf(Im a simple C program.n);return 0;2012年03月以下敘述錯誤的是 A.一個C程序可以包含多個不同名的函數 B.一個C程序只能有一個主函數 C.C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過 D.C程序的主函數必須用main作為函數名C語言中數據被分為常量和變量: 常量和變量的概念 常數又稱定數,是指一個數值不變的常量,與之相反的是變量. 聲明常量 #define PI 3.1415926 const

2、 float PI = 3.1415926; 聲明變量 float PI = 3.1415926;C語言中有如下常見的基本數據類型: 整形數據 byte, short, int, long . signed, unsigned . 浮點型數據 float, double . 其他類型數據 char, _Bool, _Complex, _Imaginary .int類型 聲明int類型變量 int x; 聲明并初始化int類型變量 int x = 0; 對已聲明的變量賦值 int x; x = 0; x = 2.5; What will happen ?整數溢出 #include int mai

3、n(int argc, char* argv) int x = 2147483647;unsigned int y = 4294967295;printf(%d %d %dn, x, x + 1, x + 2);printf(%u %u %un, y, y + 1, y + 2);return 0; 使用字符: char類型 聲明char變量 char grade = A; char grade = 65; / OK, but do not recommend 打印輸出字符 printf(“Your grade is %c.n”, grade); Whats the output? Your

4、grade is A.Your grade is A.非打印字符 在ASCII表中存在一部分無法打印的字符, 例如:換行、退格或者讓揚聲器蜂鳴. 那么如何表示這些字符呢? 方法一:使用ASCII碼 char beep = 7; printf(“%c”, beep); 方法二:使用轉義序列 printf(“a”);常見的轉義序列序列序列意義意義a蜂鳴(ANSI C)b退格n換行t水平制表符反斜杠()單引號()”雙引號(“)0ooo八進制值(ooo表示八進制數)xhh十六進制值(hh表示十六進制數)浮點數據類型 聲明浮點類型變量 float x; double y; long double z;

5、浮點常量的值 有效的浮點常量值的形式 -1.56E12 .2 2.87e-3 .8E-5 3.14159264e16 100.2012年03月以下選項中非法的字符常量是 A.102 B.65 C.xffD.019Whats the output ? char ch = A; printf(“The code for %c is %d”, ch, ch);printf() 函數 int x = 10; printf(“The value of x is %d.n”, x); float y =2.5; printf(“The value of y is %f.n”, y); Whats the

6、output ? The value of x is 10. The value of y is 2.5.printf() 函數 常見的占位符占位符占位符用途用途占位符占位符用途用途%c一個字符%s字符串%d有符號十進制整數%u無符號十進制整數%e浮點數, e-記數法%x使用0f符號無符號十六進制整數%E浮點數, E-記數法%X使用0F符號無符號十六進制整數%f浮點數, 十進制記數法%百分號%p指針printf() 函數的高級特性 輸出浮點類型數據 float fl = 3.456; printf(“%8.2f”, fl); Whats the output ?3 3. .4 45 5關于pr

7、intf()函數的參數 #include int main(int argc, char* argv) int x = 3, y = 4;printf(%d %d, x);/ too few argumentsprintf(%d, x, y); / too many argumentsprintf(%f, x);/ type mismatchreturn 0; scanf()函數 #include intint main(int argc, char* argv) constconst intint year = 2012;intint age;printf(How old are you?

8、);scanf(%d, &age);printf(You are born in %d.n, year - age);returnreturn 0; scanf()函數 格式字符串中的常規(guī)字符 int x = 0, y = 0; scanf(“%d, %d”, &x, &y); 那么, 您必須按如下格式輸入兩個整數: 88, 121 (即數字之間用“, ”分隔) 或者 88, 121因為scanf()函數會跳過下一項輸入之前的全部空格和回車符.2012年03月設有以下語句 char ch1,ch2, scanf(“%c%c”, &ch1, &ch2);若

9、要為變量ch1和ch2分別輸入字符A和B,正確的輸入形式應該是 A. A和B之間用逗號間隔 B. A和B之間不能有任何間隔符 C. A和B之間可以用回車間隔 D. A和B之間用空格間隔#include int main(int argc, char* argv)int x = 0, y = 0;scanf(%d%d, &x, &y);printf(x + y is %d.n, x + y);printf(x / y is %.2f.n, (float)x / y);return 0;“復合”運算符 +=,-=,*=,/=,%= For example: int x = 4, y

10、 = 6; x = x + 2; printf(“Now, x = %d, y = %d.n”, x, y); 其中 x = x + 2可以寫成 x += 2取余操作符 % 若 x = 17, y = 5 則 x % y = 2; (185 = 3 2)增量和減量運算符:+和- 下列語句等價: x = x + 1;y = y 1; x += 1;y -= 1; x +;y -; + x;- y;sizeof()運算符和size_t類型#include intint main(int argc, char* argv)size_tsize_t intSize;intSize = sizeofsi

11、zeof(intint);printf(An int has %u byte., intSize);returnreturn 0;+ x和x+的區(qū)別 int x = 3, y = 4; Condition I printf(“%d”, + x * y +); Condition II printf(“%d”, + x * + y); Condition III printf(“%d”, x + * y +);2012年03月有以下程序:#include intint main(int argc, char* argv)intint A=0, B=0, C=0;C=(A-=A-5);(A=B,B

12、+=4);printf(%d, %d, %dn, A, B, C);returnreturn 0;程序運行后輸出的結果是 A.0,4,5 B.4,4,5 C.4,4,4 D.0,0,0While循環(huán)的基本形式 whilewhile (Condition = truetrue) / Do something dodo/ Do something whilewhile (Condition = truetrue); Whats the difference ?#include int main(int argc, char* argv)int x = 0;while (x = 5)printf(%

13、d, + x);return 0;#include int main(int argc, char* argv)int i = 0;for (i = 0; i = 5; i +)printf(%d, i);return 0;利用循環(huán)求和 計算 1+2+.+n的值#include intint main(int argc, char* argv)intint sum = 0, n = 0, i = 0;scanf(“%d”, &n);forfor (; i = n; + i) sum += i;sum += i;returnreturn 0;break和continue#include

14、intint main() intint i = 0; forfor (i = 0; i 10; + i) if if (i = 5) continuecontinue; elseelse printf(%d, i);returnreturn 0;#include intint main() intint i = 0; forfor (i = 0; i 10; + i) if if (i = 5) breakbreak; elseelse printf(%d, i);returnreturn 0;Whats the output of following code?#include intin

15、t main(int argc, char* argv) intint i = 0; forfor (i = 0; i 10; + i) if if (i = 5) break break; elseelse continuecontinue; printf(%d, i); return return 0;在布爾代數中規(guī)定兩個值0和1用于表示邏輯真和邏輯假.1 + 1 = 2true1 + 1 = 3false邏輯運算符:與(And)、或(Or)、非(Not)(1 + 1 = 2) & (1 + 2 = 3)true(1 + 1 = 3) & (1 + 2 = 3)false(

16、1 + 1 = 2) | (1 + 3 = 2)true#include int main() int x = 0; if (x = 0) printf(Hello!); else printf(%d, x); return 0;#include int main() int x = 0; if (x = 0) printf(Hello!); else printf(%d, x); return 0;If-else if-else語句if (x 0)/ Do Somethingelse if (x = 0)/ Do Somethingelse/ Do Something把else和if配對if

17、 if (number 6)if if (number b)max = a;elseelsemax = b; 條件運算符表達法max = (a b) ? a : b;switch和break語句switchswitch (rank)casecase P:printf(“You pass the exam.n”);breakbreak;casecase F:printf(“You failed the exam.n”);breakbreak;defaultdefault:printf(“Bad Input!”);switch和break語句switchswitch (rank)c case as

18、e p: casecase P:printf(“You pass the exam.n”);breakbreak;case case f: casecase F:printf(“You failed the exam.n”);breakbreak;defaultdefault:printf(“Bad Input!”);Whats the output of following code ?#include intint main(int argc, char* argv)intint s = 0, n;forfor (n = 0;n 3;n +)switchswitch(s)casecase

19、0:casecase 1: s+=1;casecase 2: s+=2; breakbreak;casecase 3: s+3;casecase 4: s+=4;printf(%dn,s);#include void function(void) printf(“Hello, world!”);return;int main(int argc, char* argv) function();return 0;#include int getBigger(int x, int y) return (x y) ? x : y;int main(int argc, char* argv) int a

20、 = 3, b = 4; printf(“The bigger one is %d”, getBigger(a, b); return 0;Whats the output of following Code ?#include voidvoid function(charchar c) if if (c x) function(c - 1); printf (%c, c);intint main(int argc, char* argv) function(z); returnreturn 0;什么是數組 ? 假設我們需要存儲一系列具有相同類型數據(Integer), 計算這一系列數值的平均

21、值, 并且記錄有多少數值大于平均值. 如果沒有數組,我們是這樣做的.intint n1, n2, n3, ., n100;scanf(“%d%d.%d”, &n1, &n2, ., &n100);floatfloat average = (n1 + n2 + . + n100) / 100;intint counter = 0;if if (n1 average) counter +;.if if (n100 average) counter +;printf(“Average: %f Count: %d”, average, counter);什么是一維數組?什么是一

22、維數組? 一維數組是存儲于計算機的連續(xù)存儲空間中的多個具有統一類型的數據元素。 同一數組的不同元素通過不同的下標標識。 (a1, a2, a3, ., an)如何聲明如何聲明一維一維數組數組? ? intint a10; intint b5 = 1, 2, 3, 4, 5; intint c5 = 0;#include #define MONTHS 12int main(int argc, char* argv) int daysMONTHS = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; int i = 0; for (i = 0; i M

23、ONTHS; + i) printf(Month %d has %2d days.n, i + 1, daysi); return 0;使用一維數組使用一維數組 計算斐波那契數列的前計算斐波那契數列的前n n項項(n (n 30)30) 1, 1, 2, 3, 5, 8. 對于第n項(n 3)有:an = an 1 + an 2 規(guī)定:a0 = 0, a1 = 1什么是多維數組? 普通數組采用一個整數來作下標。我們在多維數組之中采用一系列有序的整數來標注,如在3, 1, 5 。這種整數列表之中整數的個數始終相同,且被稱為數組的“維度”。關于每個數組維度的邊界稱為“維”。維度為k的數組通常被稱為

24、k維。訪問多維數組元素 for for (i = 0; i m; + i) for for (j = 0; j n; + j) printf(“%d ”, aij); printf(“n”); 什么是指針? 在信息工程中, 指針是一個用來指示一個內存地址的計算機語言的變量或中央處理器(CPU)中的寄存器(Register). 指針一般出現在比較近機器語言的語言, 如匯編語言或C語言. 面向對象語言如Java一般避免用指針, 而是引用. 指針一般指向一個函數或一個變量. 在使用一個指針時, 一個程序既可以直接使用這個指針所儲存的內存地址, 又可以使用這個地址里儲存的變量或函數的值. #inclu

25、de int main(int argc, char* argv) int var = 256; int *p = &var; printf(var = %d.n, var); *p = 512; printf(Now, var = %d.n, var); return 0;#include void swap(int x, int y) int tmp = x; x = y; y = tmp;int main(int argc, char* argv) int a = 3, b = 4; swap(a, b); printf(Now a = %d, b = %d, a, b); re

26、turn 0;#include void swap(int *x, int *y) int tmp = *x; *x = *y; *y = tmp;int main(int argc, char* argv) int a = 3, b = 4; swap(&a, &b); printf(Now a = %d, b = %d, a, b); return 0;指針與數組#include intint main(int argc, char* argv) intint Array5 = 0, 1, 2, 3, 4; intint *p = Array; forfor (p = Ar

27、ray; p Array + 5; + p) printf(%d , *p); returnreturn 0;動態(tài)數組#include intint main(int argc, char* argv) intint n = 0, i = 0; scanf(%d, &n); intint *p = (int *)malloc(n * sizeof(int); forfor (i = 0; i n; + i) pi = i; forfor (i = 0; i n; + i) printf(%d , pi); free(p); returnreturn 0;#include voidvoi

28、d fun(intint *s) staticstatic intint j=0; dodo sj = sj + sj+1; whilewhile(+j 2);intint main(int argc, char* argv) intint k, a10= 1, 2, 3, 4, 5; forfor(k = 1; k 3; k+) fun(a); forfor(k = 0; k 5; k+) printf(%d,ak); printf(n); returnreturn 0;Whats the output of following code?什么是字符串? 字符串(character stri

29、ng)就是一個或多個字符的序列. 下面是一個字符串的例子: “Hello, world!” 需要說明的是, 雙引號并不是字符串的一部分.H He el ll lo o, ,w wo or rl ld d! !00#include int main(int argc, char* argv) char name80; printf(Whats your name? ); scanf(%s, name); / & is not needed here printf(Hello, %s, name); return 0;#include int main(int argc, char* ar

30、gv) char name80; printf(Whats your name? ); gets(name); / Another way to input printf(Hello, ); puts(name); / Another way to output return 0;字符串與指針#include int main(int argc, char* argv) printf(“%s %p %cn”, “We”, “l(fā)ove”, *C!); return 0;字符串與指針#include #include intint main(intint argc, charchar* argv)

31、 charchar str = This is a character string.; charchar *pStr = This is a string constant.; intint i = 0; forfor (i = 0; stri; + i) putchar(stri); printf(n); forfor (i = 0; i strlen(pStr); + i) putchar(pStri); printf(n); returnreturn 0;常用的字符串函數 strlen() strcpy(), strncpy(); strcat(), strncat(); strcmp(),Whats the output of following code ?#include #include int main(int argc, char* argv) printf(%dn, strlen(ATSn0121); printf(%dn, strlen(ATSn0121); return 0;什么是結構體? 在C語言中, 結構體(struct)指的是一種數據結構, 是C語言中聚合數據類型(a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論