學習啦 > 知識大全 > 知識百科 > 公共基礎知識 > 二級c語言公共知識點

二級c語言公共知識點

時間: 謝君787 分享

二級c語言公共知識點

  c語言是計算機二級考試重要科目,那么你對二級c語言了解多少呢?以下是由學習啦小編整理關于二級c語言公共知識點的內容,希望大家喜歡!

  二級c語言公共知識點

  1.知識點:main()函數的參數

  l 定義形式:main(int argc,char *argv[])

  {…

  }

  l int argc是命令行中的字符串數,char *argv[]是指向字符串的指針數組,系統(tǒng)使用空格把各個字符串隔開。

  2.知識點:不帶參數的宏定義

  l 一般形式:#define 宏名 字符串(或數值)

  即用字符串或數值取代宏名。

  l 宏名一般采用大寫字母表示,以與變量名區(qū)別,也可用小寫字母。

  l 宏定義不是C語句,不必在行末加分號。

  例1:(2009-04-36)有以下程序

  #include<stdio.h>

  #define PT 3.5;

  #define S(x) PT*x*x;

  main()

  {int a=l,b=2;printf("%4.1f\n",S(a+b));}

  程序運行后輸出的結果是(D)

  A)14.0 B)31.5 C)7.5 D)程序有錯無輸出結果

  【解析】此題考查宏的定義形式。由于宏定義并不是語句,故#define后面不能有分號,故該程序有錯無法輸出結果,所以,正確答案:D。

  例2:(2011-03-30)以下函數的功能是:通過鍵盤輸入數據,為數組中的所有元素賦值。

  #define N 10

  void fun(int x[N])

  { inti=0;

  while(i<N)scanf(“%d”,_________);

  }在程序中下劃線處應填入的是

  A)x+i B)&x[i+1] C)x+(i++) D)&x[++i]

  答案:C

  【解析】要求給每個元素賦值,while循環(huán)的變量i必須不斷增加,所以A、B顯然不行,i++是先參與運算在自增1,++i是先自增1再參與運算,所以D會出現x[0]未賦值的情況,故選C。

  l 對程序中用“”括起來的字符串內的字符,即使與宏名相同,也不進行置換。

  l 宏定義可以嵌套使用,例如:

  #define R 3.0

  #define PI 3.14159

  #define L L*PI*R

  3.知識點:帶參數的宏定義

  l 一般形式:#define 宏名(參數表) 字符串

  l 帶參數的宏不占運行時間,只占編譯時間;只是簡單、機械字符替換;宏名無類型。

  l 要注意有括號和沒括號的區(qū)別

  例1:(2009-09-35)有以下程序

  #include <stdio.h>

  #define f(x) x*x*x

  main()

  {int a=3,s,t;

  s=f(a+1); t=f((a+1));

  printf(“%d,%d\n”,s,t);

  }程序運行后的輸出結果是(A)

  A)10,64 B)10,10 C)64,10 D)64,64

  【解析】本題考點為帶參數的宏定義,宏定義中的參數沒有類型,僅為字符序列,不能當作表達式運算。宏展開時,把實參字符串原樣寫在替換文本中。s=f(a+1)=a+1*a1*a+1=10;t=f((a+1))= (a+1)* (a+1)* (a+1)=64

  例2:(2011-03-35)有以下程序

  #define S(x) 4*(x)*x+1

  main()

  { intk=5,j=2;

  printf("%d\n",S(k+j));

  }程序運行后的輸出結果是(B)

  A)197 B)143 C)33 D)28

  【解析】#define宏定義,只是機械簡單的置換S(k+j)=S(5+2)=4*(5+2)*5+2+1=143

  4.知識點:文件包含

  l 一般形式:#include <文件名>或者#include “文件名”

  l < >與” ”的區(qū)別:<>即系統(tǒng)到存放C庫函數頭文件的目錄中尋找要包含的文件;” ”即系統(tǒng)先在用戶當前目錄中尋找,若找不到,再到存放C庫函數頭文件的目錄中尋找。

  l 文件包含可以嵌套。

  l 凡是以“#”開頭的行都是預處理命令行。

  5.知識點:calloc()函數

  l 函數原型:void *calloc(unsigned n,unsigned size);

  l 功能:分配n個數據項的內存連續(xù)空間,每個數據項的大小為size

  6.知識點:free()函數

  l 函數原型:void free(void *p);

  l 功能:釋放p所指的內存區(qū)

  7.知識點:malloc()函數

  l 函數原型:void *malloc(unsigned size);

  l 功能:分配size字節(jié)的存儲區(qū)

  例1:(2011-03-14)以下程序運行后的輸出結果是 emoclew 。

  main()

  { char *p; int i;

  p=(char *)malloc(sizeof(char)*20);

  strcpy(p,"welcome");

  for(i=6;i>=0;i--) putchar(*(p+i));

  printf("\n"); free(p);

  }

  【解析】(char*)malloc(sizeof(char)*20)申請一個20個字符大小的空間,首地址賦給字符指針變量p,strcpy(p,"welcome");將字符串"welcome"賦值給p所指向的空間,for循環(huán)實現從后往前輸出這個字符串,free(p)為釋放申請的空間。

  8.知識點:文件的概念和文件指針

  l 在C程序中文件可以用順序方式存取,可以用隨機方式存取。

  l C程序把文件分為ASCII文件(文本文件)和二進制文件。

  例1:(2009-09-40)下列關于C語言文件的敘述中正確的是(C)

  A)文件由一系列數據依次排列組成,只能構成二進制文件

  B)文件由結構序列組成,可以構成二進制文件或文本文件

  C)文件由數據序列組成,可以構成二進制文件或文本文件

  D)文件由字符序列組成,其類型只能是文本文件

  【解析】本題考點為文件的基本概念。正確答案為C。C語言中根據數據的組織形

  式,分為二進制文件和ASCII碼文件。一個C文件時一個字節(jié)序列或者二進制序列,而不是一個記錄(結構)序列。

  l 文件類型指針:FILE *fp;fp是一個指向FILE類型結構體的指針變量,通過文件指針變量找到與它相關的文件。

  例2:(2010-09-15)以下程序打開新文件f.txt,并調用字符輸出函數將a數組中的字符寫入其中,請?zhí)羁铡?/p>

  #include <stdio.h>

  main()

  { FILE *fp;

  char a[5]={‘1’,’2’,’3’,’4’,’5’},i;

  fp=fopen(“f.txt”,”w”);

  for(i=0;i<5;i++)fputc(a[i],fp);

  fclose(fp);

  }

1215586