當前位置:首頁 » 編程語言 » c語言的重點

c語言的重點

發布時間: 2023-06-05 12:30:46

A. 計算機二級c語言考試重點以及復習技巧

1、語言的基本語法25分。主要有C語言的主要特點、各種數據類型、運算符與運算表達式、基本I/O結構應用、基本的程序控制結構、宏的基本定義、文件的基本應用等。
2、程序閱讀題30分。考核的主要內容為:選擇結構、循環結構的應用、數組的應用、指針特別是指針與字元數組的關系應用、函數應用(參數傳輸,全局變數,局部變數應用等)。3、程序設計15分。主要是應該熟悉程序控制結構,數組,函數的應用。
復習內容:

C語言的基本概念
C語言的主要特徵和程序結構。頭文件,函數的開始和結束標志。源程序的書寫格式。數據類型和運算
基本數據類型和常量的表示法。各種變數的定義和初始化。
運算規則和表達式。
賦值表達式、算術表達式、關系表達式、邏輯表達式、條件表達式、逗號表達式。
運算符的優先順序、類型的自動轉換和強制類型轉換,
C語言的基本語句
基本語句:表達式語名、空語句、復合語句。數據的輸入與輸出、輸入輸出函數的調用。選擇結構語句。if語句。switch語句。
選擇結構的嵌套。循環結構語句。for語句。while語句和do-while語句。continue語句和break語句。
構造類型和指針類型數據
數組、結構、聯合類型的說明和正確使用。
指針。
指針與指針變數的概念,指針與地址運算符。
變數、數組、字元串、函數、結構體的指針,以及指向變數、數組、字元串、函數、結構體的指針變數。通過指針引用以上各類型數據。指針數組,指向指針的指針。
存儲區動態分配和釋放。
函數
函數的基本結構和定義方法。
函數的調用和參數傳遞。
函數的嵌套調用、遞歸調用。
變數的作用域。
Main
()函數的命令行參數引用。
內部函數與外部函數。
庫函數的正確使用。
文件只要求緩沖文件系統(即高級磁碟I/O系統)。
文件的概念:文本文件和二進制文件。
文件類型指針。
文件的基本操作:文件的打開與關閉、文件的讀寫、文件指針的操作。

B. 學習C語言需要掌握哪些基本知識

1.入門程序

#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}

2.數據類型

數據類型:

1.基本數據類型:

1.1. 整型:int 4個位元組

1.2. 字元型:char 1個位元組

1.3. 實型(浮點型)

  • 1.3.1.單精度型:float 4個位元組

  • 1.3.2.雙精度型:double 8個位元組

  • 2.構造類型:

    2.1.枚舉類型

    2.2.數組類型

    2.3.結構體類型

    2.4.共用體類型

    3.指針類型:

    4.空類型:

    3.格式化輸出語句

  • %d:十進制整數;

  • %c:單個字元;

  • %s:字元串;

  • %f:6位小數;

  • #include <stdio.h>

  • int main()

  • {

  • int age = 18;

  • float height = 1.85;

  • char unit = 'm';

  • printf("小明今年%d歲 ", age);

  • printf("小明身高%f%c ", height, unit);

  • printf("小明現在在慕課網上學習IT技術 ");

  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    4.常量

    值不發生改變的量成為常量;

    定義字元常量(注意後面沒有;)

  • #include <stdio.h>

  • #define POCKETMONEY 10 //定義常量及常量值

  • int main()

  • {

  • printf("小明今天又得到%d元零花錢 ", POCKETMONEY);

  • return 0;

  • }

  • 5.運算符

    5.1.算數運算符:+,-,*,/,%,++,--;前++/--,先運算,再取值.後++/--,先取值,再運算;

    5.2.賦值運算符:

    5.3.關系運算符;

    5.4.邏輯運算符;

    5.5.三目運算符:

  • 表達式1 ? 表達式2 : 表達式3;

  • 6.水仙花數計算

    輸出所有三位數的水仙花數字

    所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數,如:153就是一個水仙花數,153=111+555+333。

  • #include <stdio.h>


  • int main()

  • {

  • //定義三位數num,個位數sd,十位數td,百位數hd

  • int num, sd, td, hd;

  • //循環所有三位數

  • for( num=100 ; num<1000 ; num++ )

  • {

  • //獲取三位數字num百位上的數字

  • hd = num/100 ;

  • //獲取三位數字num十位上的數字

  • td = num/10%10 ;

  • //獲取三位數字num個位上的數字

  • sd = num%10 ;

  • //水仙花數的條件是什麼?

  • if(num ==hd*hd*hd+td*td*td+sd*sd*sd )

  • {

  • printf("水仙花數字:%d ", num);

  • }

  • }

  • return 0;

  • }

  • 7.列印正三角形的*

  • #include <stdio.h>

  • int main()

  • {

  • int i, j, k;

  • for(i=1; i<5; i++)

  • {

  • /* 觀察每行的空格數量,補全循環條件 */

  • for( j=i ; j<5 ; j++ )

  • {

  • printf(" "); //輸出空格

  • }

  • /* 觀察每行*號的數量,補全循環條件 */

  • for( k=0 ; k<2*i-1 ; k++ )

  • {

  • printf("*"); //每行輸出的*號

  • }

  • printf(" "); //每次循環換行

  • }

  • return 0;

  • }

  • 8.臭名遠揚的goto語句

    很少使用

  • #include <stdio.h>

  • int main()

  • {

  • int sum = 0;

  • int i;

  • for(i=1; i<=10; i++)

  • {

  • printf("%d ", i);

  • if(i==3){

  • goto LOOP;//滿足條件就執行goto語句

  • }

  • }

  • //執行goto

  • LOOP:printf("結束for循環了...."); //請選擇合適位置添加標識符

  • return 0;

  • }

  • 9.形參與實參

    形參:形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數;

    實參:實參是在調用時傳遞該函數的參數。

    函數的形參和實參具有以下特點:

  • 形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

  • 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。

  • 在參數傳遞時,實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

  • 10.函數返回值注意

    注意:void函數中可以有執行代碼塊,但是不能有返回值,另void函數中如果有return語句,該語句只能起到結束函數運行的功能。其格式為:return;

    11.遞歸

  • #include <stdio.h>


  • int getPeachNumber(int n) //這里要定義n,要不編譯器會報錯!

  • {

  • int num;

  • if(n==10)

  • {

  • return 1;

  • }

  • else

  • {

  • num = (getPeachNumber(n+1)+1)*2;

  • printf("第%d天所剩桃子%d個 ", n, num);

  • }

  • return num;

  • }

  • int main()

  • {

  • int num = getPeachNumber(1);

  • printf("猴子第一天摘了:%d個桃子。 ", num);

  • return 0;

  • }

  • 12.變數存儲類別 !

    12.1.生存周期劃分存儲方式

    C語言根據變數的生存周期來劃分,可以分為靜態存儲方式和動態存儲方式。

    靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變數,如全局變數。

    動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變數是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變數;函數調用時的現場保護和返回地址等。

    12.2.存儲類型劃分

    C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern) ;

  • 用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為「自動存儲類別」,屬於動態存儲方式。

  • 用static修飾的為靜態變數,如果定義在函數內部的,稱之為靜態局部變數;如果定義在函數外部,稱之為靜態外部變數。

  • 注意:靜態局部變數屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變數在編譯時賦初值,即只賦初值一次;如果在定義局部變數時不賦初值的話,則對靜態局部變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)

  • 為了提高效率,C語言允許將局部變數的值放在CPU中的寄存器中,這種變數叫「寄存器變數」,用關鍵字register作聲明。

  • 注意:只有局部自動變數和形式參數可以作為寄存器變數;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變數;局部靜態變數不能定義為寄存器變數。

  • 用extern聲明的的變數是外部變數,外部變數的意義是某函數可以調用在該函數之後定義的變數。

  • #includ <stdio.h>

  • //來源公眾號:C語言與CPP編程

  • int main()

  • {

  • //定義外部局部變數

  • extern int x;

  • return 0;

  • }

  • int x=100;

  • 13.內部函數外部函數 !

    在C語言中不能被其他源文件調用的函數稱為內部函數 ,內部函數由static關鍵字來定義,因此又被稱為靜態函數,形式為:

    static [數據類型] 函數名([參數])

    這里的static是對函數的作用范圍的一個限定,限定該函數只能在其所處的源文件中使用,因此在不同文件中出現相同的函數名稱的內部函數是沒有問題的。

    在C語言中能被其他源文件調用的函數稱為外部函數 ,外部函數由extern關鍵字來定義,形式為:

    extern [數據類型] 函數名([參數])

    C語言規定,在沒有指定函數的作用范圍時,系統會默認認為是外部函數,因此當需要定義外部函數時extern也可以省略。 extern可以省略; 14.數組 數組:一塊連續的,大小固定並且裡面的數據類型一致的內存空間, 數組的聲明:數據類型 數組名稱[長度n]

  • 數據類型 數組名稱[長度n] = {元素1,元素2,元素3,......};

  • 數據類型 數組名稱[] = {元素1,元素2,元素3,......};

  • 數類類型 數組名稱[長度n]; 數組名稱[0] = 元素1;數組名稱[1] = 元素2;...... 注意: 1、數組的下標均以0開始; 2、數組在初始化的時候,數組內元素的個數不能大於聲明的數組長度; 3、如果採用第一種初始化方式,元素個數小於數組的長度時,多餘的數組元素初始化為0; 4、在聲明數組後沒有進行初始化的時候,靜態(static)和外部(extern)類型的數組元素初始化元素為0,自動(auto)類型的數組的元素初始化值不確定。

  • 15.數組遍歷

  • #include <stdio.h>


  • int main()

  • {

  • int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  • int i;

  • for(i=0;i<10;i++)

  • {

  • printf("%d ",arr[i]);

  • }

  • return 0;

  • }

  • 數組的冒泡排序

  • 冒泡排序的思想:相鄰元素兩兩比較,將較大的數字放在後面,直到將所有數字全部排序。

  • 字元串與數組

  • 在C語言中,是沒有辦法直接定義子字元串數據類型的,需使用數組來定義所要的字元串,形式如下:

  • char 字元串名稱[長度] = "字元串內容";

  • char 字元串名稱[長度] = {'字元串1','字元串2',....,'字元串n',''};

  • 注:

  • []中的長度可以省略不寫;

  • 採用第二種方式最後一個元素必須是'',表示結束;

  • 第二種方式不能寫中文!; 輸出字元串時,要使用:printf("%s",字元數組名);或puts(字元數組名);

  • 16.字元串函數

  • strlen(s):獲取字元串s的長度;

  • strcmp(s1,s2):比較字元串;比較的時候會把字元串轉換成ASCII碼再進行比較,返回結果為0表示s1和s2的ASCII碼值相等,返回結果為1表示s1比s2的ASCII碼大,返回結果為-1表示s1比s2的ACSII碼小;

  • strcpy(s1,s2):字元串拷貝;s2會取代s1中的內容;

  • strcat(s1,s2)將s2拼接到s1後面;注意:s1的length要足夠才可以!

  • atoi(s1)將字元串轉為整數!

  • 17.多維數組

    數據類型 數組名稱[常量表達式1]...[常量表達式n];

    多維數組的初始化與一維數組的初始化類似也是分兩種:

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數組名稱[下標1][下標2]...[下標n] = 值;

  • 多維數組初始化要注意以下事項:

  • 採用第一種始化時數組聲明必須指定列的維數。因為系統會根據數組中元素的總個數來分配空間,當知道元素總個數以及列的維數後,會直接計算出行的維數;

  • 採用第二種初始化時數組聲明必須同時指定行和列的維數。

  • 18.多維度數組的遍歷

    使用嵌套循環

    注意:多維數組的每一維下標均不能越界!

    19.結構體

    C 數組允許定義可存儲相同類型數據項的變數,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。

    結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:

  • Title

  • Author

  • Subject

  • Book ID

  • 定義結構

    為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式如下:

  • struct tag {

  • member-list

  • member-list

  • member-list

  • ...

  • } variable-list ;

  • tag 是結構體標簽。

    member-list 是標準的變數定義,比如 int i; 或者 float f,或者其他有效的變數定義。

    variable-list 結構變數,定義在結構的末尾,最後一個分號之前,您可以指定一個或多個結構變數。下面是聲明 Book 結構的方式:

  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • } book;

  • 在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為實例:

  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //同時又聲明了結構體變數s1

  • //這個結構體並沒有標明其標簽

  • struct

  • {

  • int a;

  • char b;

  • double c;

  • } s1;


  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //結構體的標簽被命名為SIMPLE,沒有聲明變數

  • struct SIMPLE

  • {

  • int a;

  • char b;

  • double c;

  • };

  • //用SIMPLE標簽的結構體,另外聲明了變數t1、t2、t3

  • struct SIMPLE t1, t2[20], *t3;


  • //也可以用typedef創建新類型

  • typedef struct

  • {

  • int a;

  • char b;

  • double c;

  • } Simple2;

  • //現在可以用Simple2作為類型聲明新的結構體變數

  • Simple2 u1, u2[20], *u3;

  • 訪問結構成員

    為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變數名稱和我們要訪問的結構成員之間的一個句號。您可以使用 struct 關鍵字來定義結構類型的變數。下面的實例演示了結構的用法:

  • #include <stdio.h>

  • #include <string.h>

  • //來源公眾號:C語言與CPP編程


  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • };


  • int main( )

  • {

  • struct Books Book1; /* 聲明 Book1,類型為 Books */

  • struct Books Book2; /* 聲明 Book2,類型為 Books */


  • /* Book1 詳述 */

  • strcpy( Book1.title, "C Programming");

  • strcpy( Book1.author, "Nuha Ali");

  • strcpy( Book1.subject, "C Programming Tutorial");

  • Book1.book_id = 6495407;


  • /* Book2 詳述 */

  • strcpy( Book2.title, "Telecom Billing");

  • strcpy( Book2.author, "Zara Ali");

  • strcpy( Book2.subject, "Telecom Billing Tutorial");

  • Book2.book_id = 6495700;


  • /* 輸出 Book1 信息 */

  • printf( "Book 1 title : %s ", Book1.title);

  • printf( "Book 1 author : %s ", Book1.author);

  • printf( "Book 1 subject : %s ", Book1.subject);

  • printf( "Book 1 book_id : %d ", Book1.book_id);


  • /* 輸出 Book2 信息 */

  • printf( "Book 2 title : %s ", Book2.title);

  • printf( "Book 2 author : %s ", Book2.author);

  • printf( "Book 2 subject : %s ", Book2.subject);

  • printf( "Book 2 book_id : %d ", Book2.book_id);


  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    20.共用體

    共用體是一種特殊的數據類型,允許您在相同的內存位置存儲不同的數據類型。您可以定義一個帶有多成員的共用體,但是任何時候只能有一個成員帶有值。共用體提供了一種使用相同的內存位置的有效方式。

  • #include <stdio.h>

  • #include <string.h>


  • union Data

  • {

  • int i;

  • float f;

  • char str[20];

  • };


  • int main( )

  • {

  • union Data data;


  • printf( "Memory size occupied by data : %d ", sizeof(data));


  • return 0;

  • }

  • 21.指針

  • #include <stdio.h>


  • int main ()

  • {

  • int var = 20; /* 實際變數的聲明 */

  • int *ip; /* 指針變數的聲明 */


  • ip = &var; /* 在指針變數中存儲 var 的地址 */


  • printf("Address of var variable: %p ", &var );


  • /* 在指針變數中存儲的地址 */

  • printf("Address stored in ip variable: %p ", ip );


  • /* 使用指針訪問值 */

  • printf("Value of *ip variable: %d ", *ip );


  • return 0;

  • }

  • 22.文件讀寫

    寫入文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;


  • fp = fopen("/tmp/test.txt", "w+");

  • fprintf(fp, "This is testing for fprintf... ");

  • fputs("This is testing for fputs... ", fp);

  • fclose(fp);

  • }

  • 讀取文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;

  • char buff[255];


  • fp = fopen("/tmp/test.txt", "r");

  • fscanf(fp, "%s", buff);

  • printf("1: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("2: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("3: %s ", buff );

  • fclose(fp);


  • }

  • C語言與C++學習路線

    23.排序演算法

    十大經典排序演算法(動態演示+代碼)

    24.查找演算法

    九種查找演算法

    25.面試知識

    C語言與C++面試知識總結

    26.字元串操作

    字元串操作的全面總結

    27.C語言常用標准庫解讀

    C語言常用標准庫解讀

    28. C語言最常用的貪心演算法

    C語言最常用的貪心演算法就這么被攻克了

    29. 常見的C語言內存錯誤及對策

    常見的C語言內存錯誤及對策

    30. C語言實現面向對象的原理

    C語言實現面向對象的原理

    31. C語言/C++內存管理

    看完這篇你還能不懂C語言/C++內存管理?

    32. 再談C語言指針

    再談指針:大佬給你撥開 C 指針的雲霧

    C語言函數指針之回調函數

    C語言指針詳解(文末有福利)

    33. C語言預處理命令

    長文詳解:C語言預處理命令

    34. C語言高效編程與代碼優化

    C語言高效編程與代碼優化

    35. C語言結構體

    C語言之結構體就這樣被攻克了!值得收藏!

    36. 原碼, 反碼, 補碼 詳解

    原碼, 反碼, 補碼 詳解

    37. C語言宏定義

    簡述C語言宏定義的使用

    38. c語言之共用體union、枚舉、大小端模式

    c語言之共用體union、枚舉、大小端模式

C. 如果能把C語言的要點給我列的在詳細一點就更好了

C語言知識要點——轉給那些還沒把書看完的同志們
來源: 李志遠的日誌
1.C源程序的框架

盡管各個C源程序的功能千變萬化,但框架是不變的,主要有:編譯預處理、主函數()、函數n()等,主函數的位置不一定在最前面,可以在程序的中部或後面,主函數的名字固定為main。

2.C語言源程序的書寫規則:

(1)C源程序是由一個主函數和若干個其它函數組成的。

(2)函數名後必須有小括弧,函數體放在大括弧內。

(3)C程序必須用小寫字母書寫。

(4)每句的末尾加分號。

(5)可以一行多句。

(6)可以一句多行。

(7)可以在程序的任何位置加註釋。

3.語句種類

語句是程序的基本成分,程序的執行就是通過一條條語句的執行而得以實現的,根據表現形式及功能的不同,C語言的基本語句可以分為五大類。

(1)流程式控制制語句

流程式控制制語句的功能是控製程序的走向,程序的流程有三種基本結構:順序結構、分支結構和循環結構,任何復雜的程序都可以由這三種基本結構復合而成。其中後兩種結構要用特定的流程式控制制語句實現。

(2)表達式語句

表達式語句的形式是:表達式;,即表達式後跟一分號";",分號是語句結束符,是一個語句必不可少的成分。表達式和表達式語句的區別在於表達式代表的是一個數值,而表達式語句則代表一種動作。最常見的表達式語句是賦值語句。

(3)函數調用語句

函數調用語句實際上也是一種表達式語句,形式為:在一次函數調用的小括弧後面加上一個分號。

(4)空語句

空語句的形式就是一個分號,它不代表任何動作,常常作為一個意義轉折點使用。

(5)復合語句

復合語句從形式上看是多個語句的組合,但在語法意義上它只相當於一個語句,在任何單一語句存在的地方都可以是復合語句。注意復合語句中最後一個語句末尾的分號不能少。復合語句右大括弧後面沒有分號。

4.運算符

用來表示數據各種操作的符號稱為運算符。運算符實際上代表了一種類型數據的運算規則。不同的運算符具有不同的運算規則,其操作的數據類型必須符合該運算符的要求,運算結果的數據類型也是固定的。

根據參加操作的數據個數多少,可以將C語言的運算符分為單目運算符,雙目運算符和三目運算符(三目運算符只有條件運算符一個)。

根據運算對象和運算結果的數據類型可分為算術運算符、關系運算符、邏輯運算符等。

5.表達式

表達式是由常量、變數、函數,通過運算符連接起來而形成的一個算式。一個常量,一個變數或一個函數都可以看成是一個表達式。

表達式的種類有:

算術表達式、關系表達式、邏輯表達式、賦值表達式、字位表達式、強制類型轉換表達式、逗號表達式(順序表達式)、條件表達式、指針表達式。

6.數據的輸入/輸出

C語言本身沒有輸人/輸出語句,數據的輸入/輸出是通過調用庫函數來實現的。

第二章 數據類型知識點

劃分數據類型的意義是編譯系統對每個不同類型的數據在內存中分配的位元組數不同,不同類型的數據可以按規定參加不同類型的運算。

1.C語言的數據類型

數據類型有:整型、字元型、實型單精度型、雙精度型、構造類型數組類型、結構體類型、共用體類型、枚舉類型、指針類型、空類型,其中整型、實型、字元型是C語言中的基本類型。

2.各種類型數據的定義方法

定義形式:數據類型 變數名1,變數名2,......變數名n;

3.常量與變數

(1)常量——在程序執行期間其值不變的量。它不能被賦值。

(2)變數——在程序運行期間其值可以改變的量。

4.各種類型數據的混合運算

各類數據運算前會自動轉換成同一類型。規律如右圖示:從右向左的箭頭表示必定的轉換,如float型數據運算前化成double型,以提高運算精度,結果也為double型,short或char型數據運算前化成int型,結果也為int型;從下向上的箭頭表示轉換方向是向級別高的靠攏。

5.強制類型變換

當我們需要對數據進行類型變換,而機器又不能自動完成時,就要用強制類型變換,形式為:(數據類型符)(被轉換對象)。

第三章 選擇知識點

C語言中實現選擇結構的控制語句有兩種:條件分支語句if和開關分支語句switch。

1.if語句的三種形式:

(1) if(表達式)語句;

(2) if(表達式)語句1;

else語句2;

(3) if(表達式1)語句1;

else if(表達式2)語句2;

else if(表達式3)語句3;

...

else if(表達式n)語句n;

2.開關分支語句switch

(1)形式

switch(表達式)

{ case e1:語句1;break;

case e2:語句2;break;

case e3:語句3;break;

......

case en:語句n;break;

default :語句n+1;

}

(2)功能

當表達式的值等於e1時,執行語句1;

當表達式的值等於e2時,執行語句2;

......

當表達式的值等於en時,執行語句n;

當表達式的值與常量e1、e2......en誰都不等時,就執行default後的語句

第四章 循環知識點

循環就是在程序執行過程中,反復多次的執行同一段程序。C語言中有三種循環語句。

1.while循環語句

形式為:while(表達式)

{

循環體

};

執行過程是:先計算表達式的值,當表達式的值非0時就執行循環體,之後再判斷表達式的值,且重復以上過程;當表達式的值為0時就結束循環。

2.do-- while循環語句

形式為:do

{

循環體

} while(表達式);

執行過程是:先執行循環體一次,再判斷表達式的值,當表達式的值非0時就再執行循環體,之後再判斷表達式的值,且重復以上過程;當表達式的值為0時就結束循環。

3.for循環語句

形式為:for(表達式1;表達式2;表達式3)

{ 循環體 }

4.三種循環語句的比較

三種循環語句可以完成同一件事,可任選其一。

使用while和do-- while循環時,要提前給循環變數賦初值。而for循環是在表達式1中賦初值的。

while循環和for循環都是先判斷條件後執行循環體,有可能一次也不執行循環體,do-- while循環是先執行循環體,後判斷條件,即循環體至少也得執行一次。for循環不限於計數循環,其循環條件可以是邏輯表達式和字元表達式等。

5.循環嵌套

三種循環控制語句可以互相嵌套,即在一個循環體內部又可以出現另一循環,這種嵌套在理論上來說可以是無限的。注意必須是一個循環完整的套住另一個循環。

6.break語句

break語句只能出現在三種循環語句和switch多分支語句中,其作用是用來中斷這四種語句的執行。當程序執行到break語句時,會跳出break語句所在的循環或switch分支,而直接執行緊跟在它們後面的語句。

7.continue語句

continue語句只能出現在三種循環語句中,當程序執行到continue語句時,其作用是提前結束本次循環,自動跳過循環體中後半部剩餘的語句的執行,而直接回到循環條件判斷。根據判斷的結果決定是否繼續執行下次循環。

8. goto 語句

goto語句是一種非結構化語句,其作用是使程序的執行無條件的轉移到某一處。使用格式為: goto 標號;利用goto語句與if條件語句配合,也可以實現條件循環。C語句允許在任何語句前添加標號,作為跳轉目標,標號的構成是標識符後面加一個":"。

第五章 數組知識點

數組就是同類型的一批數據的集合,用一個變數名存放,區分各元素的辦法是用下標。

1.一維數組

類型說明符數組名\[數組長度\];

(1)數組命名要符合標識符的命名規則。

(2)數組名後的括弧必須是方括弧,不能是圓括弧。

(3)數組長度必須是正整數,可以是個表達式,但不能有變數,C語言不支持動態數組。

(4)數組長度表示數組中元素的個數

(5)數組元素的下標從0開始數,所以最大下標是數組的長度減1。

2.多維數組(以二維為例)

類型說明符數組名\[第一維長度\]\[第二維長度\];

(1)數組命名要符合標識符的命名規則。

(2)數組名後的括弧必須是兩個方括弧,定義時不能寫成inta\[3,4\];。

(3)數組長度必須是整型常量表達式。

(4)第一維長度表示數組行數,第二維長度表示數組列數。

(5)每個數組元素都有兩個下標,第一維表示該元素所在的行,第二維表示該元素所在的列,每一維的下標都從0開始數。

二維數組的初始化:C語言規定只有靜態數組和外部數組才允許在定義時賦初值,賦初值形式如下:

static類型說明符數組名\[第一維長度\]\[第二維長度\]={初值表};

二維數組的引用:二維數組不能整體引用,要引用數組的單個元素,形式為:數組名\[下標\]\[下標\]和普通變數的使用無任何區別。

3.字元數組

C語言中沒有字元串變數,字元串是靠字元數組實現的,所謂字元數組就是元素的數據類型為字元型的數組。

(1)字元數組的定義形式:char數組名\[數組長度\];

因為C語言中的整型數據和字元型數據是相通的,所以也可以這樣定義:int數組名\[數組長度\];

(2)字元數組的初始化:給字元數組的初始化有兩種方式,一種是用字元常量,另一種是用字元串。形式如下:

staticchar數組名\[數組長度\]={字元常量表};

staticchar數組名\[數組長度\]={字元串常量};

4.數組與函數

數組經常作為函數的參數,數組做函數的參數有兩種形式,一是數組元素做函數的參數,一是數組名做函數的參數,當用數組名做函數的實參時傳送的是首地址。

5.常用的字元串處理函數

C語言提供了一些處理字元串的標准函數,用以完成一些常見的操作。對以下幾個函數要掌握其功能和調用形式。

(1)gets(字元數組名)此函數功能是從鍵盤輸入一串字元,回車後送到字元數組中,注意定義數組時數組長度要足夠大。

(2)puts(字元數組名)此函數功能是將字元數組的內容輸出到屏幕上。

(3)strcat(字元數組名1,字元數組名2)此函數功能是將字元數組1中的'\\0'去掉後將字元數組2的內容連接到字元數組1的末尾。

(4)strcpy(字元數組名1,字元數組名2)函數功能是將字元數組2的內容(包括'\\0')拷貝到字元數組1中,字元數組2處也可以是字元串常量。strcpy函數可以實現拷子串。

(5)strcmp(字元數組名1,字元數組名2)函數功能是兩個字元串(ASCII碼)比大小。

(6)strlen(字元數組名)此函數功能是求字元串的長度,注意不包括'\\0'。

(7)strlwr(字元數組名)此函數功能是將字元串中的所有大寫字母都變成小寫。

(8)strupr(字元數組名)此函數功能是將字元串中的所有小寫字母都變成大寫。

第六章 函數知識點

每個C源程序都是由函數組成的,一個主函數和若干個其它函數,C語言程序設計的基礎工作就是函數的具體編寫,C語言中的函數就相當於其它高級語言中的子程序。

1.函數的概念

函數就是一個數據加工廠,從函數外部接收數據,在函數內部加工處理,然後得到一個結果返回給外部的調用者。所以函數就是對語言功能的擴充,對函數的調用就是對功能的調用。

2.標准函數

各種高級語言都定義了一些標准函數,C語言中的標准函數稱為庫函數,是將一些基本的、常用的功能編成了函數,供大家使用方便。使用庫函數時必須把它的頭文件用#i nclude命令包含進來,每個庫函數的功能及對應的頭文件都會在手冊中給出。

3.自定義函數

C 語言也允許用戶自己編寫函數以實現C庫函數中沒有提供的功能,稱作自定義函數。

4.定義函數

C語言規定每個函數都要獨立定義,函數定義不能嵌套。

函數定義的形式:數據類型函數名(形參表)

形參說明語句序列

{ 說明語句序列

可執行語句序列 }

5.函數調用

函數調用的形式是: 函數名(實參表)。當實參表中有多個參數時,要用逗號隔開,若被調函數無參數,調用時小括弧也不能省。函數調用過程是:將實參的值傳給形參,在函數體內進行加工處理,然後由return語句將函數值返回調用處。

5.全局變數和局部變數

局部變數:在函數內部定義的變數稱為局部變數,只在本函數中有效。

全局變數:在函數外部定義的變數稱為全局變數,它的作用范圍是從定義開始到本文件結束。

6.動態存儲與靜態存儲

內存中的用戶數據區分為動態存儲區和靜態存儲區,動態存儲區是指程序運行期間給變數臨時分配存儲單元,變數用完後立即釋放單元的區域,動態存儲區放的是函數的形參、自動變數、函數調用期間的現場保護數據和返回地址。

靜態存儲區是指程序運行期間給變數分配固定的存儲單元,放的是全局變數和局部靜態變數。

一個變數除了它的數據類型以外還有存儲類型,定義一個變數時應該說明這兩種類型。

第七章 預處理知識點

對高級語言編譯連接就是把源程序轉換成機器語言,C語言在進行編譯之前還要預先處理三件事:宏定義命令、文件包含命令和條件編譯命令,統稱為預處理命令,其特點是:

1.所有的預處理命令都放在程序的頭部,以#開頭,且#號後面不留空格。

2.預處理命令不是C的語句,行尾不加分號。

3.預處理命令是在編譯預處理階段完成的,所以它們沒有任何計算、操作等執行功能。

4.預處理命令有所變動後,必須對程序重新進行編譯和連接。

1.宏定義

宏定義命令的作用是給一些常用的對象重新命名,在程序中可以用宏名來引用這些對象,預處理時宏名會被代表的內容替換,此過程稱為宏展開或宏替換。宏定義有兩種形式:

2.文件包含

使用文件包含命令可以將另—個C源程序的全部內容包含進來,其形式為:

#i nclude <文件名>或#i nclude "文件名"

通常可以把經常用到的,帶公用性的一些函數或符號等集合在...起形成一個源文件,然後用此命令將這個源文件包含進來,這樣可以避免在每個新程序中都要重新鍵入這些內容。

3.條件編譯

顧名思義滿足條件時進行編譯,為了解決程序移植問題,C語言提供了條件編譯命令,它能使源程序在不同的編譯環境下生成不同的目標代碼文件。條件編譯命令有3種形式。

第八章 指針知識點

1.什麼是指針和指針變數?

指針就是內存地址,因為通過"地址"可以找到變數,所以內存"地址"形象的稱為指針。

指針變數就是存地址的變數。在C語言中用一個變數存另一個變數的地址,那麼就稱這個變數為指針變數,指針變數的值就是地址。通常指針變數被簡稱為指針。

指針變數是有類型的,即指針值增1表示指向下一個數據,如整型數據在內存中占兩個位元組,它的指針變數增1是增兩個位元組。如實型數據在內存中佔4個位元組,它的指針變數增1是增4個位元組。

2.怎樣定義指針變數?

定義形式為:數據類型*指針變數名1,*指針變數名2......;

3.指針的有關運算

指針為內存地址是整數,可以進行一些算術運算、關系運算、賦值運算、特殊運算等,但要注意運算代表的實際意義。

4.指向數組的指針變數

(1)指向數組元素的指針變數定義形式為:inta\[10\];

int*p=a;

(2)指向一維數組的指針變數

定義形式為:inta\[3\]\[4\];

int(*p)\[4\];

p=a;

(3)指向字元串的指針變數

定義形式為: char*p="字元序列";

C語言中的字元串是以隱含形式的字元數組存放的,定義了指針變數p並不是將整個字元串都存放在p中了,而p中存放的是字元串的首地址。

5.指向函數的指針變數

一個函數在編譯時被分配一個入口地址,這個地址就是函數的指針,可以用一個指針變數指向它。指向函數的指針變數定義形式為:

數據類型(*指針變數名);

6.指針變數做函數的參數

(1)指針作函數的參數可以傳送地址,如數組的首地址,函數的入口地址等。

(2)指針作函數的參數也可以用地址方式傳送數據。

7.返回值是指針的函數

即函數的返回值是內存的地址,利用這種方法可以將一個以上的數據返回給函數的調用者。定義形式如下:

數據類型*函數名(形參表)

8.指針數組

定義形式為:數據類型*數組名\[數組長度\];

數組中的每個元素都是指針類型的數據,這種數組被稱為指針數組。

9.指向指針的指針

定義形式為:數據類型**指針變數名;

指向指針數據的指針變數稱為指向指針的指針。

10.main函數的形參

main函數可以帶兩個形參,如:

main(argc,argv)

intargc;

char *argv\[\];

{

......

}

11.指向結構體的指針變數

結構體變數的指針就是該變數所佔據的內存段的首地址。指向結構體的指針變數定義形式為:struct結構體類型名*指針變數名;

12.指向共用體的指針變數

共用體變數的指針就是該變數所佔據的內存段的首地址。指向共用體的指針變數定義形式為:union共用體類型名*指針變數名;

替換了的字元時(這里為正中間的字元"4"),原來的字元己不復存在。

第九章 結構體與共用體知識點

結構體類型是C語言的一種構造數據類型,它是多個相關的不同類型數據的集合,相當於其它高級語言中的記錄。

1.結構體類型定義

結構體類型的形式為:

struct結構體類型名

{ 數據類型成員名1;

...

數據類型成員名n;

}

2.結構體變數的定義

結構體變數有三種定義形式:

(1)先定義結構體類型,後定義結構體變數。

(2)定義結構體類型的同時定義結構體變數。

(3)不定義結構體類型名,直接定義結構體變數。

3.結構體變數的引用

(1)結構體變數的初始化:許多C版本規定對外部或靜態存儲類型的結構體變數可以進行初始化,而對局部的結構體變數則不可以,新標准C無此限制,允許在定義時對自動變數初始化。

(2)結構體成員的引用:由於C語言一般不允許對結構體變數的整體引用,所以對結構體的引用只能是對分量的引用,結構體變數中的任一分量可以表示為:結構體變數名·成員名

4.結構體與數組

C語言中數組的成員可以是結構體變數,結構體變數的成員也可以是數組。

結構體數組有三種定義形式:

(1)先定義結構體類型,後定義結構體數組。

(2)定義結構體類型的同時定義結構體數組。

(3)不定義結構體類型名,直接定義結構體變數。

5.結構體與指針

一方面結構體變數中的成員可以是指針變數,另一方面也可以定義指向結構體的指針變數,指向結構體的指針變數的值是某一結構體變數在內存中的首地址。

結構體指針的定義形式:struct結構體類型名*結構體指針變數名。

由結構體指針引用結構體成員的方法

6.用指針處理鏈表

結構體的成員可以是指針類型,並且這個指針類型就是本結構體類型的,這樣可以構造出一種動態數據結構—成為鏈表。所謂動態數據就是指在編譯時不能確定數據量的多少,而是在程序執行時才確定的數據,動態數據可以比較方便的進行數據插人或刪除等操作。

7.結構體與函數

結構體變數的成員可以作函數的參數、指向結構體變數的指針也可以作函數的參數。雖然結構體變數名也可以作為函數的參數,將整個結構體變數進行傳遞,但一般不這樣做,因為如果結構體的成員很多,或者有些成員是數組,則程序運行期間,將全部成員一個一個的傳遞,既浪費時間,又浪費空間,開銷太大。

8.結構體與共用體

結構體變數中的成員可以是共用體,共用體變數中的成員可以是結構體。

共用體

為了節省存儲空間,C語言允許將幾種不同類型的數據存放在同一段內存單元,它們共用一個起始地址,稱做共用體。

1.共用體類型定義

union共用體類型名

{ 數據類型成員名1;

...

數據類型成員名n;

}

2.共用體變數定義

(1)先定義類型,後定義變數。

(2)定義類型的同時定義變數。

(3)不定義類型名,直接定義變數。

3.共用體變數的引用

(1)共用體變數不能整體引用,只能引用其成員,形式為:共用體變數名·成員名

(2)共用體變數的成員不能初始化,因為它只能放一個數據。

(3)共用體變數存放的數據是最後放入的數據。

(4)共用體變數的長度是最大的成員的長度。

(5)可以引用共用體變數的地址、各個成員的地址,它們都是同一個地址。

(6)共用體變數不能當函數的參數或函數的返回值,但可以用指向共用體變數的指針作函數的參數。

(7)共用體變數的成員可以是數組,數組的成員也可以是共用體變數。

第十章 位運算知識點

位運算就是按二進制位進行操作的運算,運算的對象只能是整型或字元型,不能是實型。不同長度的變數進行位運算,系統會自動右對齊,而左端的不齊部分,對於無符號數左端補滿0,對於有符號數則:正數左端補滿0,負數左端補滿1。

第十一章 文件知識點

操作系統是以文件為單位對數據進行管理的,任何一種計算機高級語言都要有和磁碟文件打交道的能力,否則該語言的功能充其量是算一算、顯示顯示而已。在C語言中沒有單獨的文件操作語句,所有對文件的操作都是通過庫函數來完成的,所以本章的重點是學會使用有關文件操作的庫函數。

1.文件的基本概念

2.文件類型指針

3.文件的操作

D. 大一期末C語言考試的重點是什麼

選擇,循環,函數,數組,指針,文件都要,其中函數(自定義函數),指針是重點,要掌握指向不同對象的指針,比如文件指針,指向函數的等。順便把文件的也看看

E. C語言的重點與難點

順序、循環、選擇三大結構是重點,數組指針文件是難點。學會設計演算法是重難點。指令的語法全憑記憶,不算難。文件是非重點,只會簡單考。數組指針是重要手段,必須掌握。多上機實驗,肯定沒問題。

F. 學習C語言應注意哪些方面其重點和難點是哪些

第一個難點 C語言的數據類型 關於C語言數據類型,不難理解但難於運用。這就要求同學們在學習的時候記住常用的一些數據類型的特徵(第一次作業第2題內容)。 第二個難點 C語言的運算符和運算順序 1.C語言的運算功能十分豐富,運算種類遠多於其它程序設計語言。大家在學習的時候不僅要注意某些運算符的運演算法則,還要注意運算規則(注意事項)。 2.當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。 第三個難點 C語言的三種簡單程序結構 其實,C語言的前二個程序結構不是難點,三種結構里難點應在於循環的嵌套用法。 (1)關於順序結構 這種結構的程序比較簡單,就是按照語句的排列順序依次執行的機制。順序結構的執行順序是自上而下,依次執行,因此編寫程序也必須遵守這一規定,否則你的程序執行結果就不對。 語句也是多分支選擇語句,又稱為多路開關語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if—else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。 (3)關於循環結構: 循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。 四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環,所以下面我們重點講解另外的三種循環。 常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,大家好好看一下書中三種循環的格式和執行順序,如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。 注意:在while和do—while循環體內和for 循環中的第3語句中,應包含趨於結束的語句(如i++,i--),否則就可能成了一個死循環,這也是初學者的一個常見錯誤。 下面我們來討論下這三種循環的異同之處: 用while和do—while循環時,循環變數的初始化的操作應在循環體之前,而for循環是在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do—while循環是先執行循環體後判斷表達式,也就是說do—while的循環體最少被執行一次,而while 循環和for就不一定了。這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,不能用break和 continue語句進行控制。 這三種結構並不是彼此孤立的,在循環中可能出現分支、順序結構,分支中也可能出現循環、順序結構而把循環、分支看成一個語句,它又是構成順序結構的一個元素,因此這三種結構相互結合,就能實現各種演算法,設計出解題程序,但若是很大的題目,這樣編出的程序往往很長,重復結構多,並且可閱讀性差,因此我們常將C程序設計成模塊化結構。

G. c語言重點

站長提醒廣大考生:下面的138道題目,在二級考試中命中率極高。

一、選擇題
(1) 下面敘述正確的是(C)
A. 演算法的執行效率與數據的存儲結構無關B. 演算法的空間復雜度是指演算法程序中指令(或語句)的條數C. 演算法的有窮性是指演算法必須能在執行有限個步驟之後終止 D. 以上三種描述都不對
(2) 以下數據結構中不屬於線性數據結構的是(C)
A. 隊列 B. 線性表 C. 二叉樹 D. 棧
(3) 在一棵二叉樹上第5層的結點數最多是(B) 註:由公式2k-1得
A. 8 B. 16 C. 32 D. 15
(4) 下面描述中,符合結構化程序設計風格的是(A)
A. 使用順序、選擇和重復(循環)三種基本控制結構表示程序的控制邏輯 B. 模塊只有一個入口,可以有多個出口 C. 注重提高程序的執行效率 D. 不使用goto語句
(5) 下面概念中,不屬於面向對象方法的是 (D) 註:P55-58
A. 對象 B. 繼承 C. 類 D. 過程調用
(6) 在結構化方法中,用數據流程圖(DFD)作為描述工具的軟體開發階段是(B)
A. 可行性分析 B. 需求分析 C. 詳細設計 D. 程序編碼
(7) 在軟體開發中,下面任務不屬於設計階段的是(D)
A. 數據結構設計 B. 給出系統模塊結構
C. 定義模塊演算法 D.定義需求並建立系統模型
(8) 資料庫系統的核心是(B)
A. 數據模型 B. 資料庫管理系統 C. 軟體工具 D. 資料庫
(9) 下列敘述中正確的是(C)
A.資料庫是一個獨立的系統,不需要操作系統的支持B.資料庫設計是指設計資料庫管理系統C.資料庫技術的根本目標是要解決數據共享的問題 D.資料庫系統中,數據的物理結構必須與邏輯結構一致
(10) 下列模式中,能夠給出資料庫物理存儲結構與物理存取方法的是(A) 註:P108
A. 內模式 B. 外模式 C. 概念模式 D. 邏輯模式
(11) 演算法的時間復雜度是指(C)
A. 執行演算法程序所需要的時間 B. 演算法程序的長度 C. 演算法執行過程中所需要的基本運算次數 D. 演算法程序中的指令條數
(12) 演算法的空間復雜度是指(D)
A. 演算法程序的長度 B. 演算法程序中的指令條數 C. 演算法程序所佔的存儲空間 D. 演算法執行過程中所需要的存儲空間
(13) 設一棵完全二叉樹共有699個結點,則在該二叉樹中的葉子結點數為(B) 註:利用公式n=n0+n1+n2、n0=n2+1和完全二叉數的特點可求出
A. 349 B. 350 C. 255 D. 351
(14) 結構化程序設計主要強調的是(B)
A.程序的規模 B.程序的易讀性
C.程序的執行效率 D.程序的可移植性
(15) 在軟體生命周期中,能准確地確定軟體系統必須做什麼和必須具備哪些功能的階段是(D) 註:即第一個階段
A. 概要設計 B. 詳細設計 C. 可行性分析 D. 需求分析
(16) 數據流圖用於抽象描述一個軟體的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬於數據流圖合法圖符的是(A) 註:P67
A. 控制流 B. 加工 C. 數據存儲 D. 源和潭
(17) 軟體需求分析階段的工作,可以分為四個方面:需求獲取、需求分析、編寫需求規格說明書以及(B) 註:P66
A. 階段性報告 B. 需求評審 C. 總結 D. 都不正確
(18) 下述關於資料庫系統的敘述中正確的是(A)
A. 資料庫系統減少了數據冗餘 B. 資料庫系統避免了一切冗餘
C. 資料庫系統中數據的一致性是指數據類型的一致 D. 資料庫系統比文件系統能管理更多的數據
(19) 關系表中的每一橫行稱為一個(A)
A. 元組 B. 欄位 C. 屬性 D. 碼
(20) 資料庫設計包括兩個方面的設計內容,它們是(A)
A. 概念設計和邏輯設計 B. 模式設計和內模式設計
C. 內模式設計和物理設計 D. 結構特性設計和行為特性設計
(21) 下列敘述中正確的是(A)
A. 線性表是線性結構 B. 棧與隊列是非線性結構
C. 線性鏈表是非線性結構 D. 二叉樹是線性結構
(22) 下列關於棧的敘述中正確的是(D)
A. 在棧中只能插入數據 B. 在棧中只能刪除數據
C. 棧是先進先出的線性表 D. 棧是先進後出的線性表
(23) 下列關於隊列的敘述中正確的是(C)
A. 在隊列中只能插入數據 B. 在隊列中只能刪除數據
C. 隊列是先進先出的線性表 D. 隊列是先進後出的線性表
(24) 對建立良好的程序設計風格,下面描述正確的是(A) 註:P48
A. 程序應簡單、清晰、可讀性好 B. 符號名的命名要符合語法
C. 充分考慮程序的執行效率 D. 程序的注釋可有可無
(25) 下面對對象概念描述錯誤的是(A) 註:P55
A. 任何對象都必須有繼承性 B. 對象是屬性和方法的封裝體
C. 對象間的通訊靠消息傳遞 D. 操作是對象的動態性屬性
(26) 下面不屬於軟體工程的3個要素的是(D) 註:P62
A. 工具 B. 過程 C. 方法 D. 環境
(27) 程序流程圖(PFD)中的箭頭代表的是(B) 註:P81
A. 數據流 B. 控制流 C. 調用關系 D. 組成關系
(28) 在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和資料庫系統階段。其中數據獨立性最高的階段是(A)
A.資料庫系統B. 文件系統 C. 人工管理 D. 數據項管理
(29) 用樹形結構來表示實體之間聯系的模型稱為(B)
A. 關系模型 B. 層次模型 C. 網狀模型 D. 數據模型
(30) 關系資料庫管理系統能實現的專門關系運算包括(B)
A. 排序、索引、統計 B. 選擇、投影、連接
C. 關聯、更新、排序 D. 顯示、列印、製表
(31) 演算法一般都可以用哪幾種控制結構組合而成(D) 註:P3
A. 循環、分支、遞歸 B. 順序、循環、嵌套
C. 循環、遞歸、選擇 D. 順序、選擇、循環
(32) 數據的存儲結構是指(B) 註:P13,要牢記
A. 數據所佔的存儲空間量 B. 數據的邏輯結構在計算機中的表示
C. 數據在計算機中的順序存儲方式 D. 存儲在外存中的數據
(33) 設有下列二叉樹:圖見書P46
對此二叉樹中序遍歷的結果為(B)
A. ABCDEF B. DBEAFC C. ABDECF D. DEBFCA
(34) 在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發送(D) 註:P56
A. 調用語句 B. 命令 C. 口令 D. 消息
(35) 檢查軟體產品是否符合需求定義的過程稱為(A) 註:P95
A. 確認測試 B. 集成測試 C. 驗證測試 D. 驗收測試
(36) 下列工具中屬於需求分析常用工具的是(D) 註:P67
A. PAD B. PFD C. N-S D. DFD
(37) 下面不屬於軟體設計原則的是(C) 註:P73
A. 抽象 B. 模塊化 C. 自底向上 D. 信息隱蔽
(38) 索引屬於(B)
A. 模式 B. 內模式 C. 外模式 D. 概念模式
(39) 在關系資料庫中,用來表示實體之間聯系的是(D)
A. 樹結構 B. 網結構 C. 線性表 D. 二維表
(40) 將E-R圖轉換到關系模式時,實體與聯系都可以表示成(B)
A. 屬性 B. 關系 C. 鍵 D. 域
(41) 在下列選項中,哪個不是一個演算法一般應該具有的基本特徵(C)
A. 確定性 B. 可行性 C.無窮性D. 擁有足夠的情報
(42) 希爾排序法屬於哪一種類型的排序法(B)
A.交換類排序法 B.插入類排序法 C.選擇類排序法 D.建堆排序法
(43) 在深度為5的滿二叉樹中,葉子結點的個數為(C)
A. 32 B. 31 C. 16 D. 15
(44) 對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數為(B) 註:要牢記
A. N+1 B. N C. (N+1)/2 D. N/2
(45) 信息隱蔽的概念與下述哪一種概念直接相關(B) 註:P74
A.軟體結構定義 B. 模塊獨立性 C. 模塊類型劃分 D. 模擬耦合度
(46) 面向對象的設計方法與傳統的的面向過程的方法有本質不同,它的基本原理是(C)
A. 模擬現實世界中不同事物之間的聯系 B. 強調模擬現實世界中的演算法而不強調概念 C. 使用現實世界的概念抽象地思考問題從而自然地解決問題 D. 鼓勵開發者在軟體開發的絕大部分中都用實際領域的概念去思考
(47) 在結構化方法中,軟體功能分解屬於下列軟體開發中的階段是(C) 註:總體設計也就是概要設計
A. 詳細設計 B. 需求分析 C. 總體設計 D. 編程調試
(48) 軟體調試的目的是(B) 註:與軟體測試要對比著復習
A.發現錯誤 B.改正錯誤 C.改善軟體的性能 D.挖掘軟體的潛能
(49) 按條件f對關系R進行選擇,其關系代數表達式為(C)
A. R|X|R B. R|X|Rf C. бf(R) D. ∏f(R)
(50) 資料庫概念設計的過程中,視圖設計一般有三種設計次序,以下各項中不對的是(D) 註:P127,要牢記
A. 自頂向下 B. 由底向上 C. 由內向外 D. 由整體到局部
(51) 在計算機中,演算法是指(C)
A. 查詢方法 B. 加工方法
C. 解題方案的准確而完整的描述 D. 排序方法
(52) 棧和隊列的共同點是(C) 註:這一共同點和線性表不一樣
A. 都是先進後出 B. 都是先進先出 C. 只允許在端點處插入和刪除元素 D. 沒有共同點
(53) 已知二叉樹後序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是(A) 註:P38,前提要掌握三種遍歷的方法
A. cedba B. acbed C. decab D. deabc
(54) 在下列幾種排序方法中,要求內存量最大的是(D) 註:要牢記,書中沒有提到。
A. 插入排序 B. 選擇排序 C. 快速排序 D. 歸並排序
(55) 在設計程序時,應採納的原則之一是(A) 註:和設計風格有關
A. 程序結構應有助於讀者理解 B. 不限制goto語句的使用
C. 減少或取消註解行 D. 程序越短越好
(56) 下列不屬於軟體調試技術的是(B) 註:P98
A. 強行排錯法 B. 集成測試法 C. 回溯法 D. 原因排除法
(57)下列敘述中,不屬於軟體需求規格說明書的作用的是(D)註:P71
A. 便於用戶、開發人員進行理解和交流 B. 反映出用戶問題的結構,可以作為軟體開發工作的基礎和依據 C. 作為確認測試和驗收的依據 D. 便於開發人員進行需求分析
(58) 在數據流圖(DFD)中,帶有名字的箭頭表示(C)
A. 控製程序的執行順序 B. 模塊之間的調用關系 C. 數據的流向 D. 程序的組成成分
(59) SQL語言又稱為(C)
A. 結構化定義語言 B. 結構化控制語言
C. 結構化查詢語言 D. 結構化操縱語言
(60) 視圖設計一般有3種設計次序,下列不屬於視圖設計的是(B)
A. 自頂向下 B. 由外向內 C. 由內向外 D. 自底向上
(61) 數據結構中,與所使用的計算機無關的是數據的(C)
A. 存儲結構 B. 物理結構 C. 邏輯結構 D. 物理和存儲結構
(62) 棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是(D)
A. ABCED B. DBCEA C. CDABE D. DCBEA
(63) 線性表的順序存儲結構和線性表的鏈式存儲結構分別是(B)
A. 順序存取的存儲結構、順序存取的存儲結構 B. 隨機存取的存儲結構、順序存取的存儲結構 C. 隨機存取的存儲結構、隨機存取的存儲結構 D. 任意存取的存儲結構、任意存取的存儲結構
(64) 在單鏈表中,增加頭結點的目的是(A)
A. 方便運算的實現 B. 使單鏈表至少有一個結點 C. 標識表結點中首結點的位置 D. 說明單鏈表是線性表的鏈式存儲實現
(65) 軟體設計包括軟體的結構、數據介面和過程設計,其中軟體的過程設計是指(B) 註:P73
A. 模塊間的關系 B. 系統結構部件轉換成軟體的過程描述 C. 軟體層次結構 D. 軟體開發過程
(66) 為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替傳統的程序流程圖,通常也把這種圖稱為(B) 註:P82
A. PAD圖 B. N-S圖 C. 結構圖 D. 數據流圖
(67) 數據處理的最小單位是(C) 註:數據項不可再分割
A. 數據 B. 數據元素 C. 數據項 D. 數據結構
(68) 下列有關資料庫的描述,正確的是(C) 註:P102
A. 資料庫是一個DBF文件 B. 資料庫是一個關系 C. 資料庫是一個結構化的數據集合 D. 資料庫是一組文件
(69) 單個用戶使用的數據視圖的描述稱為(A) 註:P108
A. 外模式 B. 概念模式 C. 內模式 D. 存儲模式
(70) 需求分析階段的任務是確定(D)
A. 軟體開發方法 B. 軟體開發工具 C. 軟體開發費用 D. 軟體系統功能
(71) 演算法分析的目的是(D) 註:書中沒有總結,但要牢記
A. 找出數據結構的合理性 B. 找出演算法中輸入和輸出之間的關系 C. 分析演算法的易懂性和可靠性 D. 分析演算法的效率以求改進
(72)鏈表不具有的特點是(B)
A.不必事先估計存儲空間 B.可隨機訪問任一元素
C.插入刪除不需要移動元素 D.所需空間與線性表長度成正比
(73) 已知數據表A中每個元素距其最終位置不遠,為節省時間,應採用的演算法是(B)
A. 堆排序 B. 直接插入排序 C. 快速排序 D. 直接選擇排序
(74) 用鏈表表示線性表的優點是(A) 註:因為不需要移動元素
A. 便於插入和刪除操作 B. 數據元素的物理順序與邏輯順序相同 C. 花費的存儲空間較順序存儲少 D. 便於隨機存取
(75) 下列不屬於結構化分析的常用工具的是(D) 註:P67
A. 數據流圖 B. 數據字典 C. 判定樹 D. PAD圖
(76) 軟體開發的結構化生命周期方法將軟體生命周期劃分成(A)
A. 定義、開發、運行維護 B. 設計階段、編程階段、測試階段 C. 總體設計、詳細設計、編程調試 D. 需求分析、功能定義、系統設計
(77) 在軟體工程中,白箱測試法可用於測試程序的內部結構。此方法將程序看做是(C) 註:P87
A. 循環的集合 B. 地址的集合 C. 路徑的集合 D. 目標的集合
(78) 在數據管理技術發展過程中,文件系統與資料庫系統的主要區別是資料庫系統具有(D) 註:數據模型採用關系模型(二維表)
A. 數據無冗餘 B. 數據可共享
C. 專門的數據管理軟體 D. 特定的數據模型
(79) 分布式資料庫系統不具有的特點是(B)
A. 分布式 B. 數據冗餘
C. 數據分布性和邏輯整體性 D. 位置透明性和復制透明性
(80) 下列說法中,不屬於數據模型所描述的內容的是(C) 註:P110
A. 數據結構 B. 數據操作 C. 數據查詢 D. 數據約束
(81)根據數據結構中各數據元素之間前後件關系的復雜程度,一般將數據結構分成(C)
A.動態結構和靜態結構 B.緊湊結構和非緊湊結構
C.線性結構和非線性結構 D.內部結構和外部結構
(82)下列敘述中,錯誤的是(B)
A.數據的存儲結構與數據處理的效率密切相關 B.數據的存儲結構與數據處理的效率無關 C.數據的存儲結構在計算機中所佔的空間不一定是連續的 D.一種數據的邏輯結構可以有多種存儲結構
(83)線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是(D)
A.每個元素都有一個直接前件和直接後件 B.線性表中至少要有一個元素 C.表中諸元素的排列順序必須是由小到大或由大到
D.除第一個元素和最後一個元素外,其餘每個元素都有一個且只有一個直接前件和直接後件
(84)線性表若採用鏈式存儲結構時,要求內存中可用存儲單元的地址(D)
A.必須是連續的 B.部分地址必須是連續的
C.一定是不連續的 D.連續不連續都可以
(85)棧通常採用的兩種存儲結構是(A)
A.順序存儲結構和鏈式存儲結構 B.散列方式和索引方式
C.鏈表存儲結構和數組 D.線性存儲結構和非線性存儲結構
(86)下列數據結構中,按先進後出原則組織數據的是(B)
A.線性鏈表 B.棧 C.循環鏈表 D.順序表
(87)樹是結點的集合,它的根結點數目是(C)
A.有且只有1 B.1或多於1 C.0或1 D.至少2
(88)具有3個結點的二叉樹有(D)
A.2種形態 B.4種形態 C.7種形態 D. 5種形態
(89)設一棵二叉樹中有3個葉子結點,有8個度為1的結點,則該二叉樹中總的結點數為(B)
A. 12 B. 13 C.14 D. 15
(90)在結構化程序設計思想提出之前,在程序設計中曾強調程序的效率,現在,與程序的效率相比,人們更重視程序的(C)
A.安全性 B.一致性 C.可理解性 D.合理性
(91)為了提高測試的效率,應該 (D) 註:P85
A.隨機選取測試數據B.取一切可能的輸入數據作為測試數據C.在完成編碼以後制定軟體的測試計劃 D.集中對付那些錯誤群集的程序
(92)軟體生命周期中所花費用最多的階段是(D)
A.詳細設計 B.軟體編碼 C.軟體測試 D.軟體維護

二、填空題
(1) 演算法的復雜度主要包括______復雜度和空間復雜度。 答:時間
(2) 數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的______。答:存儲結構#物理結構
(3) 若按功能劃分,軟體測試的方法通常分為白盒測試方法和______測試方法。答:黑盒
(4) 如果一個工人可管理多個設施,而一個設施只被一個工人管理,則實體"工人"與實體"設備"之間存在______聯系。
答:一對多#1:N#1:n
(5) 關系資料庫管理系統能實現的專門關系運算包括選擇、連接和______。 答:投影
(6) 在先左後右的原則下,根據訪問根結點的次序,二叉樹的遍歷可以分為三種:前序遍歷、______遍歷和後序遍歷。答:中序
(7) 結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。 答:模塊化
(8) 軟體的調試方法主要有:強行排錯法、______和原因排除法。答:回溯法
(9) 資料庫系統的三級模式分別為______模式、內部級模式與外部級模式。答:概念#概念級
(10) 數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。答:數據存儲
(11) 設一棵完全二叉樹共有500個結點,則在該二叉樹中有______個葉子結點。答:250
(12) 在最壞情況下,冒泡排序的時間復雜度為______。 答:n(n-1)/2#n*(n-1)/2#O(n(n-1)/2)#O(n*(n-1)/2)
(13) 面向對象的程序設計方法中涉及的對象是系統中用來描述客觀事物的一個______。答:實體
(14) 軟體的需求分析階段的工作,可以概括為四個方面:______、需求分析、編寫需求規格說明書和需求評審。 答:需求獲取
(15) ______是資料庫應用的核心。 答:資料庫設計
(16) 數據結構包括數據的______結構和數據的存儲結構。
答:邏輯
(17) 軟體工程研究的內容主要包括:______技術和軟體工程管理。答:軟體開發 註:P64
(18) 與結構化需求分析方法相對應的是______方法。
答:結構化設計
(19) 關系模型的完整性規則是對關系的某種約束條件,包括實體完整性、______和自定義完整性。答:參照完整性
(20) 數據模型按不同的應用層次分為三種類型,它們是______數據模型、邏輯數據模型和物理數據模型。答:概念 註:P110
(21) 棧的基本運算有三種:入棧、退棧和______。
答:讀棧頂元素#讀棧頂的元素#讀出棧頂元素
(22) 在面向對象方法中,信息隱蔽是通過對象的______性來實現的。答:封裝
(23) 數據流的類型有______和事務型。 答:變換型 註:P77
(24) 資料庫系統中實現各種數據管理功能的核心軟體稱為______。答:資料庫管理系統#DBMS 註:要牢記,重要
(25) 關系模型的數據操縱即是建立在關繫上的數據操縱,一般有______、增加、刪除和修改四種操作。答:查詢 註:要牢記
(26) 實現演算法所需的存儲單元多少和演算法的工作量大小分別稱為演算法的 ______。 答:空間復雜度和時間復雜度
(27) 數據結構包括數據的邏輯結構、數據的 ______以及對數據的操作運算。答:存儲結構 註:P7
(28) 一個類可以從直接或間接的祖先中繼承所有屬性和方法。採用這個方法提高了軟體的______。答:可重用性
(29) 面向對象的模型中,最基本的概念是對象和 ______。 答:類
(30) 軟體維護活動包括以下幾類:改正性維護、適應性維護、______維護和預防性維護。答:完善性 註:要牢記,書中沒有提到
(31) 演算法的基本特徵是可行性、確定性、______和擁有足夠的情報。答:有窮性
(32) 順序存儲方法是把邏輯上相鄰的結點存儲在物理位置______的存儲單元中。答:相鄰
(33) Jackson結構化程序設計方法是英國的M.Jackson提出的,它是一種面向______的設計方法。答:數據結構 註:P67
(34) 資料庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。
答:概念設計階段#資料庫概念設計階段
(35) 資料庫保護分為:安全性控制 、______、並發性控制和數據的恢復。答:完整性控制 註:要牢記
(36) 測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發現錯誤的位置並改正錯誤。答:調試
(37) 在最壞情況下,堆排序需要比較的次數為______。
答:O(nlog2n)
(38) 若串s="Program",則其子串的數目是______。答:29
(39) 一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯系屬於______的聯系。
答:1對多#1:N
(40) 資料庫管理系統常見的數據模型有層次模型、網狀模型和______三種。答:關系模型
(41)數據的邏輯結構有線性結構和_______兩大類。 答非線性結構
(42)數據結構分為邏輯結構與存儲結構,線性鏈表屬於_______。答:存儲結構
(43)數據的基本單位是_______。答:元素
(44)長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為______。
答:n/2
(45)當循環隊列非空且隊尾指針等於隊頭指針時,說明循環隊列已滿,不能進行入隊運算。這種情況稱為______。 答:上溢
(46)在面向對象方法中,類之間共享屬性和操作的機制稱為_______。答:繼承

H. 學習C語言應注意哪些方面其重點和難點是哪些

第一個難點 C語言的數據類型 關於C語言數據類型,不難理解但難於運用。這就要求同學們在學習的時候記住常用的一些數據類型的特徵(第一次作業第2題內容)。 第二個難點 C語言的運算符和運算順序 1.C語言的運算功能十分豐富,運算種類遠多於其它程序設計語言。大家在學習的時候不僅要注意某些運算符的運演算法則,還要注意運算規則(注意事項)。 2.當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。 第三個難點 C語言的三種簡單程序結構 其實,C語言的前二個程序結構不是難點,三種結構里難點應在於循環的嵌套用法。 (1)關於順序結構 這種結構的程序比較簡單,就是按照語句的排列順序依次執行的機制。順序結構的執行順序是自上而下,依次執行,因此編寫程序也必須遵守這一規定,否則你的程序執行結果就不對。 語句也是多分支選擇語句,又稱為多路開關語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if—else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。 (3)關於循環結構: 循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。 四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環,所以下面我們重點講解另外的三種循環。 常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,大家好好看一下書中三種循環的格式和執行順序,如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。 注意:在while和do—while循環體內和for 循環中的第3語句中,應包含趨於結束的語句(如i++,i--),否則就可能成了一個死循環,這也是初學者的一個常見錯誤。 下面我們來討論下這三種循環的異同之處: 用while和do—while循環時,循環變數的初始化的操作應在循環體之前,而for循環是在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do—while循環是先執行循環體後判斷表達式,也就是說do—while的循環體最少被執行一次,而while 循環和for就不一定了。這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,不能用break和 continue語句進行控制。 這三種結構並不是彼此孤立的,在循環中可能出現分支、順序結構,分支中也可能出現循環、順序結構而把循環、分支看成一個語句,它又是構成順序結構的一個元素,因此這三種結構相互結合,就能實現各種演算法,設計出解題程序,但若是很大的題目,這樣編出的程序往往很長,重復結構多,並且可閱讀性差,因此我們常將C程序設計成模塊化結構。

熱點內容
phprecv 發布:2025-05-17 11:55:00 瀏覽:610
福建時鍾監控網關伺服器雲主機 發布:2025-05-17 11:54:28 瀏覽:248
c資料庫壓縮 發布:2025-05-17 11:39:22 瀏覽:960
安卓手機如何連接音響功放 發布:2025-05-17 11:37:48 瀏覽:958
破解exe加密視頻 發布:2025-05-17 11:23:41 瀏覽:976
我的世界伺服器圈太大了怎麼辦 發布:2025-05-17 11:15:21 瀏覽:614
便宜的免費雲伺服器 發布:2025-05-17 11:08:50 瀏覽:779
中國頂級dhcp解析伺服器地址 發布:2025-05-17 11:06:27 瀏覽:36
php轉義html 發布:2025-05-17 11:04:00 瀏覽:569
鋼筋籠加密區規范 發布:2025-05-17 10:59:50 瀏覽:6