導航:首頁 > 源碼編譯 > 計算機高級語言程序的運行方法有編譯執行和

計算機高級語言程序的運行方法有編譯執行和

發布時間:2022-09-04 17:11:45

㈠ 計算機執行高級語言源程序的方法有哪些並分析不同方法的區別和處理過程。

高級語言程序經過編譯和解釋,變成目標程序。下面是高級語言程序執行的內部全過程:
高級語言程序→預處理程序→源程序→編譯程序→目標匯編語言→匯編程序→可再裝配的機器代碼→裝配、連接一個編輯程序(添加可再裝配目標文件)→絕對機器代碼
這就是方法。

㈡ 高級語言按照計算機執行方式不同可以分為哪兩類它們的執行方式有什麼不同,請進行概要說明。

計算機高級語言按程序的執行方式可分為:編譯型和解釋型。
編譯型的語言之使用專門的編譯器、針對特定平台將某種高級語言源代碼一次性「翻譯」成課被該平台硬體執行的機器嗎(包括機器指令和操作數),並包裝成該平台所能識別的可執行性程序的格式,這個轉換過程成為編譯(Compile)。編譯生成的可執行性程序可以脫離開發環境,在特定的平台上獨立運行。有些程序編譯結束後,還可能需要對其他編譯好的目標代碼進行鏈接,級組裝兩個以上的目標代碼模塊生成最終的可執行性程序,通過這種方式實現低層次的代碼復用。因為編譯性慾眼十一磁性的編譯成機器碼,所以可以脫離開發環境獨立運行,且通常運行效率較高;但要移植,則必須將源碼復制到特定平台上,針對特定平台進行修改,至少重新編譯。
解釋型語言是指使用專門的解釋其隊員城西逐行解釋成特定平台的機器嗎並立即執行的語言,解釋型語言通常不會進行整體性的編譯和鏈接處理,解釋型語言相當與把編譯型語言中的編譯和解釋過程混合到了一起同時完成。可以認為:每次執行解釋型語言的程序都需要進行一次編譯,因此解釋型語言的程序運行效率通常較低,而且不能脫離解釋其獨立運行。其優勢在於跨平台容易,只需提供特定平台的解釋其即可。
除此外還有一種偽編譯型語言。如Visual Basic,可以成成可執行性的EXE文件,實際上這個文件中,既有程序的啟動代碼,也有鏈接解釋程序的代碼,而這部分代碼負責啟動Vsuial Basic 解釋程序,再對Vsuial Basic代碼進行解釋並執行。

㈢ 為什麼高級語言中存在編譯和解釋兩種編譯方式

  1. 編譯方式:事先編好的一個叫做編譯程序的機器語言程序放在計算機中。當高級語言編的源程序輸入計算機時,編譯程序就把源程序自動整個地翻譯成用機器指令表示的目標程序。

  2. 解釋方式:事先編好的一個叫做解釋程序的機器語言程序放在計算機中,當高級語言源程序輸入計算機後,解釋程序自動地逐句翻譯源程序,譯一句執行一句。

  3. 因此往往需要特定的平台,由於程序執行的是編譯好的二進制文件,這種編譯一旦完成,那麼就只能在特定平台上運行了:編譯是指將源語言轉化為目標計算機的可執行二進制代碼兩者互有優劣,因此速度比較快(相對下面的解釋)。

  4. 解釋方式:事先編好的一個叫做解釋程序的機器語言程序放在計算機中,當高級語言源程序輸入計算機後,解釋程序自動地逐句翻譯源程序,譯一句執行一句。 可以這么理解,編譯的結果是另外一種語言,而解釋的就是一種中間語言。

㈣ 2011年三月全國計算機二級c真題及答案

2011年3月計算機二級c真題

一、 選擇題

(1)下列關於棧敘述正確的是

A)棧頂元素最先能被刪除

B)棧頂元素最後才能被刪除

C)棧底元素永遠不能被刪除

D)以上三種說法都不對

(2)下列敘述中正確的是

A)有一個以上根結點的數據結構不一定是非線性結構

B)只有一個根結點的數據結構不一定是線性結構

C)循環鏈表是非線性結構

D)雙向鏈表是非線性結構

(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)

A)3 B)4 C)6 D)7

(4)在軟體開發中,需求分析階段產生的主要文檔是

A)軟體集成測試計劃 B)軟體詳細設計說明書

C)用戶手冊 D)軟體需求規格說明書

(5)結構化程序所要求的基本結構不包括

A)順序結構 B)GOTO跳轉

C)選擇(分支)結構 D)重復(循環)結構

(6)下面描述中錯誤的是

A)系統總體結構圖支持軟體系統的詳細設計

B)軟體設計是將軟體需求轉換為軟體表示的過程

C)數據結構與資料庫設計是軟體設計的任務之一

D)PAD圖是軟體詳細設計的表示工具

(7)負責資料庫中查詢操作的資料庫語言是

A)數據定義語言

B)數據管理語言

C)數據操縱語言

D)數據控制語言

(8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯系是

A)1:1聯系 B)1:m聯系

C)m:1聯系 D)m:n聯系

(9)有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是

A)自然連接 B)交 C)除 D)並

(10)定義無符號整數類為UInt,下面可以作為類UInt實例化值的是

A)-369 B)369 C)0.369 D)整數集合{1,2,3,4,5}

(11)計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是

A)C語言程序僅可以編譯執行

B)C語言程序僅可以解釋執行

C)C語言程序既可以編譯執行又可以解釋執行

D)以上說法都不對

(12)以下敘述中錯誤的是

A)C語言的可執行程序是由一系列機器指令構成的

B)用C語言編寫的源程序不能直接在計算機上運行

C)通過編譯得到的二進制目標程序需要連接才可以運行

D)在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件

> (13)以下選項中不能用作C程序合法常量的是

A)1,234 B)'123'

C)123 D)"\x7G"

(14)以下選項中可用作C程序合法實數的是

A).1e0 B)3.0e0.2

C)E9 D)9.12E

(15)若有定義語句:int a=3,b=2,c=1;,以下選項中錯誤的賦值表達式是

A)a=(b=4)=3; B)a=b=c+1;

C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段

char name[20];

int num;

scanf("name=%s num=%d",name;&num);

當執行上述程序段,並從鍵盤輸入:name=Lili num=1001<回車>後,name的值為

A)Lili

B)name=Lili

C)Lili num=

D)name=Lili num=1001

(17)if語句的基本形式是:if(表達式)語句,以下關於「表達式」值的敘述中正確的是

A)必須是邏輯值 B)必須是整數值

C)必須是正數 D)可以是任意合法的數值

(18)有以下程序

#include

main()

{ int x=011;

printf("%d\n",++x);

}

程序運行後的輸出結果是

A)12 B)11 C)10 D)9

(19)有以下程序

#include

main()

{ int s;

scanf("%d",&s);

while(s>0)

{ switch(s)

{ case1:printf("%d",s+5);

case2:printf("%d",s+4); break;

case3:printf("%d",s+3);

default:printf("%d",s+1);break;

}

scanf("%d",&s);

}

}

運行時,若輸入1 2 3 4 5 0<回車>,則輸出結果是

A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段

int i,n;

for(i=0;i<8;i++)

{ n=rand()%5;

switch (n)

{ case 1:

case 3:printf("%d\n",n); break;

case 2:

case 4:printf("%d\n",n); continue;

case 0:exit(0);

}

printf("%d\n",n);

}

以下關於程序段執行情況的敘述,正確的是

A)for循環語句固定執行8次

B)當產生的隨機數n為4時結束循環操作

C)當產生的隨機數n為1和2時不做任何操作

D)當產生的隨機數n為0時結束程序運行

(21)有以下程序

#include

main()

{ char s[]="012xy\08s34f4w2";

int i,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9') n++;

printf("%d\n",n);

}

程序運行後的輸出結果是

A)0 B)3 C)7 D)8

(22)若i和k都是int類型變數,有以下for語句

for(i=0,k=-1;k=1;k++) printf("*****\n");

下面關於語句執行情況的敘述中正確的是

A)循環體執行兩次

B)循環體執行一次

C)循環體一次也不執行

D)構成無限循環

(23)有以下程序

#include

main()

{ char b,c; int i;

b='a'; c='A';

for(i=0;i<6;i++)

{ if(i%2) putchar(i+b);

else putchar(i+c);

} printf("\n");

}

程序運行後的輸出結果是

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)設有定義:double x[10],*p=x;,以下能給數組x下標為6的元素讀入數據的正確語句是

A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));

C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(說明:字母A的ASCII碼值是65)

#include

void fun(char *s)

{ while(*s)

{ if(*s%2) printf("%c",*s);

s++;

}

}

main()

{ char a[]="BYTE";

fun(a); printf("\n");

}

程序運行後的輸出結果是

A)BY B)BT C)YT D) YE

(26)有以下程序段

#include

main()

{ …

while( getchar()
!='\n');



}

以下敘述中正確的是

A)此while語句將無限循環

B) getchar()不可以出現在while語句的條件表達式中

C)當執行此while語句時,只有按回車鍵程序才能繼續執行

D)當執行此while語句時,按任意鍵程序就能繼續執行

(27)有以下程序

#include

main()

{ int x=1,y=0;

if(!x) y++;

else if(x==0)

if (x) y+=2;

else y+=3;

printf("%d\n",y);

}

程序運行後的輸出結果是

A)3 B)2 C)1 D) 0

(28)若有定義語句:char s[3][10],(*k)[3],*p;,則以下賦值語句正確的是

A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序

#include

void fun(char *c)

{ while(*c)

{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');

c++;

}

}

main()

{ char s[81];

gets(s); fun(s); puts(s):

}

當執行程序時從鍵盤上輸入Hello Beijing<回車>,則程序的輸出結果是

A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

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

#include

#define N 10

void fun(int x[N])

{ int i=0;

while(i

}

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

A)x+i B)&x[i+1]

C)x+(i++) D)&x[++i]

(31)有以下程序

#include

main()

{ char a[30],b[30];

scanf("%s",a);

gets(b);

printf("%s\n %s\n",a,b);

}

程序運行時若輸入:

how are you? I am fine<回車>

則輸出結果是

A)how are you? B)how

I am fine are you? I am fine

C)how are you? I am fine

D)row are you?

(32)設有如下函數定義

int fun(int k)

{ if (k<1) return 0;

else if(k==1) return 1;

else return fun(k-1)+1;

}

若執行調用語句:n=fun(3);,則函數fun總共被調用的次數是

A)2 B)3 C)4 D)5

(33)有以下程序

#include

int fun (int x,int y)

{ if (x!=y) return ((x+y);2);

else return (x);

}

main()

{ int a=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

}

程序運行後的輸出結果是

A)3 B)6 C)8 D)12

(34)有以下程序

#include

int fun()

{ static int x=1;

x*=2;

return x;

}

main()

{ int i,s=1;

for(i=1;i<=3;i++) s*=fun();

printf("%d\n",s);

}

程序運行後的輸出結果是

A)0 B)10 C)30 D)64

(35)有以下程序

#include

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

main()

{ int k=5,j=2;

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

}

程序運行後的輸出結果是

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

(36)設有定義:struct {char mark[12];int num1;double num2;} t1,t2;,若變數均已正確賦初值,則以下語句中錯誤的是

A)t1=t2; B)t2.num1=t1.num1;

C)t2.mark=t1.mark; D)t2.num2=t1.num2;

(37)有以下程序

#include

struct ord

{ int x,y;}dt[2]={1,2,3,4};

main()

{

struct ord *p=dt;

printf("%d,",++(p->x)); printf("%d\n",++(p->y));

}

程序運行後的輸出結果是

A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序

#i
nclude

struct S

{ int a,b;}data[2]={10,100,20,200};

main()

{ struct S p=data[1];

printf("%d\n",++(p.a));

}

程序運行後的輸出結果是

A)10 B)11 C)20 D)21

(39)有以下程序

#include

main()

{ unsigned char a=8,c;

c=a>>3;

printf("%d\n",c);

}

程序運行後的輸出結果是

A)32 B)16 C)1 D)0

(40)設fp已定義,執行語句fp=fopen("file","w");後,以下針對文本文件file操作敘述的選項中正確的是

A)寫操作結束後可以從頭開始讀 B)只能寫不能讀

C)可以在原有內容後追加寫 D)可以隨意讀和寫

二、填空題

(1)有序線性表能進行二分查找的前提是該線性表必須是 【1】 存儲的。

(2)一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則後序遍歷結果為 【2】 。

(3)對軟體設計的最小單位(模塊或程序單元)進行的測試通常稱為 【3】測試。

(4)實體完整性約束要求關系資料庫中元組的 【4】 屬性值不能為空。

(5)在關系A(S,SN,D)和關系B(D,CN,NM)中,A的主關鍵字是S,B的主關鍵字是D,則稱 【5】是關系A的外碼。

(6)以下程序運行後的輸出結果是 【6】 。

#include

main()

{ int a;

a=(int)((double)(3/2)+0.5+(int)1.99*2);

printf("%d\n",a);

}

(7)有以下程序

#include

main()

{ int x;

scanf("%d",&x);

if(x>15) printf("%d",x-5);

if(x>10) printf("%d",x);

if(x>5) printf("%d\n",x+5);

}

若程序運行時從鍵盤輸入12<回車>,則輸出結果為 【7】 。

(8)有以下程序(說明:字元0的ASCII碼值為48)

#include

main()

{ char c1,c2;

scanf("%d",&c1);

c2=c1+9;

printf("%c%c\n",c1,c2);

}

若程序運行時從鍵盤輸入48<回車>,則輸出結果為 【8】 。

(9)有以下函數

void prt(char ch,int n)

{ int i;

for(i=1;i<=n;i++)

printf(i%6!=0?"%c":"%c\n",ch);

}

執行調用語句prt('*',24);後,函數共輸出了 【9】 行*號。

(10)以下程序運行後的輸出結果是 【10】 。

#include

main()

{ int x=10,y=20,t=0;

if(x==y)t=x;x=y;y=t;

printf("%d %d\n",x,y);

}

(11)己知a所指的數組中有N個元素。函數fun的功能是,將下標k(k>0)開始的後續元素全部向前移動一個位置。請填空。

void fun(int a[N],int k)

{ int i;

for(i=k;i

}

(12)有以下程序,請在 【12】 處填寫正確語句,使程序可正常編譯運行。

#include

【12】 ;

main()

{ double x,y,(*p)();

scanf("%lf%lf",&x,&y);

p=avg;

printf("%f\n",(*p)(x,y));

}

double avg(double a,double b)

{ return((a+b)/2);}

(13)以下程序運行後的輸出結果是 【13】 。

#include

main()

{ int i,n[5]={0};

for(i=1;i<=4;i++)

{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }

printf("\n");

}

(14)以下程序運行後的輸出結果是 【14】 。

#include

#include

#include

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);

}

(15)以下程序運行後的輸出結果是 【15】 。

#include

main()

{ FILE *fp; int x[6]={1,2,3,4,5,6},i;

fp=fopen("test.dat","wb");

fwrite(x,sizeof(int),3,fp);

rewind(fp);

fread(x,sizeof(int),3,fp);

for(i=0;i<6;i++) printf("%d",x[i]);

printf("\n");

fclose(fp);

}

2011年3月計算機二級c答案:
一、選擇題
01-10:ABDDB ACDCB
11-20:ADBAA ADCAD
21-30:BDBCD CDCCC
31-40:BBBDB CDDCB
二、填空題
1.有序 2.DEBFCA 3.單元 4.主 5.D 6.3 7.1217 8.09 9.4 10.20 0
11.i-1 12.double avg(double a, double b); 13.13715 14.emoclew 15.123456

㈤ 4.11 C語言,計算機高級語言程序的運行方法有編譯執行和解釋執行

是編譯的

區別:
編譯,是用編譯程序,生成.exe的文件,來執行
解釋,就是解釋一句,執行一句,不必要生成exe的可執行文件。他需要在電腦上有相應程序的解釋程序
如早期的q b語言

㈥ 計算機高級程序語言的兩種工作方式(解釋方式和編譯方式)的區別是什麼

高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可
將它們分為兩類:
1.解釋類
執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序,典型的解釋型的高級語言有BASIC。
2.編譯類
編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Delphi等。

㈦ 編譯執行和解釋執行的區別

一、主體不同

1、編譯執行:由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行目標程序。

2、解釋執行:將源語言直接作為源程序輸入,解釋執行解釋一句後就提交計算機執行一句,並不形成目標程序。

二、優勢不同

1、編譯執行:相比解釋執行編譯執行效率高,佔用資源小,適合復雜程序

2、解釋執行:開發速度快,出現嚴重BUG的幾率小。


三、缺點不同

1、編譯執行:兼容性差,例如在windows平台上寫的編譯程序一般不可以在unix平台上運行。

2、解釋執行:解析需要時間,不生成目標程序而是一句一句的執行的方式會造成計算機資源的浪費,即執行效率低。


㈧ C語言的可執行程序是由一系列機器指令構成的

第一課C語言程序設計基礎

本課主要知識點:

1.知識點:C程序基礎

l C語言是一種結構化程序設計語言。三種基本結構:順序、選擇、循環。

例1:(2010-09-11)以下關於結構化程序設計的敘述中正確的是(C)

A)一個結構化程序必須同時由順序、分支、循環三種結構組成

B) 結構化程序使用goto語句會很便捷

C) 在C語言中,程序的模塊化是利用函數實現的

D)由三種基本結構構成的程序只能解決小規模的問題

例2:(2011-03-26)計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是(A)

A)C語言程序僅可以編譯執行

B)C語言程序僅可以解釋執行

C)C語言程序既可以編譯執行又可以解釋執行

D)以上說法都不對

【解析】計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。翻譯的方式有兩種,一個是編譯,一個是解釋。C語言程序僅可以編譯。

例3:(2011-03-26)以下敘述中錯誤的是( D)

A)C語言的可執行程序是由一系列機器指令構成的

B)用C語言編寫的源程序不能直接在計算機上運行

C)通過編譯得到的二進制目標程序需要連接才可以運行

D)在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件

【解析】C程序開發過程:編輯—>(.c)編譯—>(.obj)鏈接—>可執行文件(.exe)

2.知識點:C語言程序的構成

l C程序是由函數構成的,一個C程序有且僅有一個main函數。一個函數由兩部分組成:函數的首部和函數體。函數體包括聲明部分和執行部分。一個C程序總是從main函數開始執行(即程序的入口),由main函數結束,(即程序的出口)。

例1:(2010-03-12)以下敘述正確的是(B)

A)C語言程序是由過程和函數組成的

B) C語言函數可以嵌套調用,例如:fun(fun(x))

C) C語言函數不可以單獨編譯

D)C語言中除了main函數,其他函數不可作為單獨文件形式存在

例2:(2011-09-11)以下敘述中錯誤的是 (C)

A.C語言編寫的函數源程序,其文件名後綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯並執行

D.一個C語言程序只能有一個主函數

3.知識點:標識符

l 命名規則:

①標識符中只能包含字母(a-z,A-Z),數字(0-9),下劃線(_)。

②第一個字元必須是字母或下劃線。

分類

③用戶自定義的標識符 ⅰ格式合法,ⅱ不能使用關鍵字,ⅲ見名知意

例1:(2010-03-13)以下C語言用戶標識符中,不合法的是(D)

A)_1 B)AaBc C)a_b D)a-b

4.知識點:數據類型

例1:(2010-03-16)以下關於C語言數據類型使用的敘述中錯誤的是(D)

A)若要准確無誤差的表示自然數,應使用整數類型

B)若要保存帶有多位小數的數據,應使用雙精度類型

C)若要處理如「人員信息」等含有不同類型的相關數據,應自定義結構體類型

D)若只處理「真」和「假」兩種邏輯值,應使用邏輯類型

【解析】結構數據類型是根據已定義的一個或多個數據類型用構造的方法來定義的,一個結構類型的值可以分解成若干個「成員」或「元素」,每個「成員」都是一個基本數據類型或又是一個構造類型,C項正確。C語言沒有邏輯類型,故D項錯誤

㈨ c語言二級考試題及答案

2011年3月全國計算機等級考試二級筆試試卷
C語言程序設計
(考試時間90分鍾,滿分100分)

一、 選擇題(1-10,21-40每題2分,11-20每題1分,共70分)

(1)下列關於棧敘述正確的是
A)棧頂元素最先能被刪除
B)棧頂元素最後才能被刪除
C)棧底元素永遠不能被刪除
D)以上三種說法都不對

(2)下列敘述中正確的是
A)有一個以上根結點的數據結構不一定是非線性結構
B)只有一個根結點的數據結構不一定是線性結構
C)循環鏈表是非線性結構
D)雙向鏈表是非線性結構

(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)
A)3 B)4 C)6 D)7

(4)在軟體開發中,需求分析階段產生的主要文檔是
A)軟體集成測試計劃 B)軟體詳細設計說明書
C)用戶手冊 D)軟體需求規格說明書

(5)結構化程序所要求的基本結構不包括
A)順序結構 B)GOTO跳轉
C)選擇(分支)結構 D)重復(循環)結構

(6)下面描述中錯誤的是
A)系統總體結構圖支持軟體系統的詳細設計
B)軟體設計是將軟體需求轉換為軟體表示的過程
C)數據結構與資料庫設計是軟體設計的任務之一
D)PAD圖是軟體詳細設計的表示工具

(7)負責資料庫中查詢操作的資料庫語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言

(8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯系是
A)1:1聯系 B)1:m聯系
C)m:1聯系 D)m:n聯系

(9)有三個關系R、S和T如下:


則由關系R和S得到關系T的操作是
A)自然連接 B)交 C)除 D)並

(10)定義無符號整數類為UInt,下面可以作為類UInt實例化值的是
A)-369 B)369 C)0.369 D)整數集合{1,2,3,4,5}

(11)計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是
A)C語言程序僅可以編譯執行
B)C語言程序僅可以解釋執行
C)C語言程序既可以編譯執行又可以解釋執行
D)以上說法都不對

(12)以下敘述中錯誤的是
A)C語言的可執行程序是由一系列機器指令構成的
B)用C語言編寫的源程序不能直接在計算機上運行
C)通過編譯得到的二進制目標程序需要連接才可以運行
D)在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件

(13)以下選項中不能用作C程序合法常量的是
A)1,234 B)'123'
C)123 D)"\x7G"

(14)以下選項中可用作C程序合法實數的是
A).1e0 B)3.0e0.2
C)E9 D)9.12E

(15)若有定義語句:inta=3,b=2,c=1;,以下選項中錯誤的賦值表達式是
A)a=(b=4)=3; B)a=b=c+1;
C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name;&num);
當執行上述程序段,並從鍵盤輸入:name=Lili num=1001<回車>後,name的值為
A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

(17)if語句的基本形式是:if(表達式)語句,以下關於「表達式」值的敘述中正確的是
A)必須是邏輯值 B)必須是整數值
C)必須是正數 D)可以是任意合法的數值

(18)有以下程序
#include
main()
{ int x=011;
printf("%d\n",++x);
}
程序運行後的輸出結果是
A)12 B)11 C)10 D)9

(19)有以下程序
#include
main()
{ int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
運行時,若輸入1 2 3 4 5 0<回車>,則輸出結果是
A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段
int i,n;
for(i=0;i<8;i++)
{ n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n); continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下關於程序段執行情況的敘述,正確的是
A)for循環語句固定執行8次 B)當產生的隨機數n為4時結束循環操作
C)當產生的隨機數n為1和2時不做任何操作D)當產生的隨機數n為0時結束程序運行

(21)有以下程序
#include
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n",n);
}
程序運行後的輸出結果是
A)0 B)3 C)7 D)8

(22)若i和k都是int類型變數,有以下for語句
for(i=0,k=-1;k=1;k++) printf("*****\n");
下面關於語句執行情況的敘述中正確的是
A)循環體執行兩次B)循環體執行一次C)循環體一次也不執行D)構成無限循環

(23)有以下程序
#include
main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
} printf("\n");
}
程序運行後的輸出結果是
A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)設有定義:doublex[10],*p=x;,以下能給數組x下標為6的元素讀入數據的正確語句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(說明:字母A的ASCII碼值是65)
#include
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程序運行後的輸出結果是
A) BY B) BT C) YT D) YE

(26)有以下程序段
#include
main()
{ …
while( getchar()!='\n');

}
以下敘述中正確的是
A)此while語句將無限循環
B) getchar()不可以出現在while語句的條件表達式中
C)當執行此while語句時,只有按回車鍵程序才能繼續執行
D)當執行此while語句時,按任意鍵程序就能繼續執行

(27)有以下程序
#include
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序運行後的輸出結果是
A)3 B)2 C)1 D) 0

(28)若有定義語句:chars[3][10],(*k)[3],*p;,則以下賦值語句正確的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序
#include
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s):
}
當執行程序時從鍵盤上輸入Hello Beijing<回車>,則程序的輸出結果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函數的功能是:通過鍵盤輸入數據,為數組中的所有元素賦值。
#include
#define N 10
void fun(int x[N])
{ int i=0;
while(i<>
}
在程序中下劃線處應填入的是
A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序
#include
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程序運行時若輸入:
how are you? I am fine<回車>
則輸出結果是
A)how are you? B)how I am fine are you? I am fine
C)how are you? I am fine D)row are you?

(32)設有如下函數定義
int fun(int k)
{ if (k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若執行調用語句:n=fun(3);,則函數fun總共被調用的次數是
A)2 B)3 C)4 D)5

(33)有以下程序
#include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行後的輸出結果是 A)3 B)6 C)8 D)12

(34)有以下程序
#include
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序運行後的輸出結果是 A)0 B)10 C)30 D)64

(35)有以下程序
#include
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序運行後的輸出結果是 A)197 B)143 C)33 D)28

(36)設有定義:struct {charmark[12];int num1;double num2;} t1,t2;,若變數均已正確賦初值,則以下語句中錯誤的是
A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

(37)有以下程序
#include
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{
struct ord *p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序運行後的輸出結果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序
#include
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序運行後的輸出結果是 A)10 B)11 C)20 D)21

(39)有以下程序
#include
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序運行後的輸出結果是 A)32 B)16 C)1 D)0

(40)設fp已定義,執行語句fp=fopen("file","w");後,以下針對文本文件file操作敘述的選項中正確的是
A)寫操作結束後可以從頭開始讀 B)只能寫不能讀
C)可以在原有內容後追加寫 D)可以隨意讀和寫

二、填空題
(1)有序線性表能進行二分查找的前提是該線性表必須是 【1】 存儲的。

(2)一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則後序遍歷結果為 【2】 。

(3)對軟體設計的最小單位(模塊或程序單元)進行的測試通常稱為【3】 測試

(4)實體完整性約束要求關系資料庫中元組的 【4】 屬性值不能為空。

(5)在關系A(S,SN,D)和關系B(D,CN,NM)中,A的主關鍵字是S,B的主關鍵字是D,則稱 【5】 是關系A的外碼。


(6)以下程序運行後的輸出結果是 【6】。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}

(7)有以下程序
#include
main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d\n",x+5);
}
若程序運行時從鍵盤輸入12<回車>,則輸出結果為 【7】 。

(8)有以下程序(說明:字元0的ASCII碼值為48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序運行時從鍵盤輸入48<回車>,則輸出結果為 【8】 。

(9)有以下函數
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
執行調用語句prt('*',24);後,函數共輸出了 【9】 行*號。

(10)以下程序運行後的輸出結果是 【10】。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}

(11)己知a所指的數組中有N個元素。函數fun的功能是,將下標k(k>0)開始的後續元素全部向前移動一個位置。請填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i
}

(12)有以下程序,請在 【12】 處填寫正確語句,使程序可正常編譯運行。
#include
【12】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}

(13)以下程序運行後的輸出結果是 【13】。
#include
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("\n");
}

(14)以下程序運行後的輸出結果是 【14】。
#include
#include
#include
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);
}

(15)以下程序運行後的輸出結果是 【15】。
#include
main()
{ FILE *fp; int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","wb");
fwrite(x,sizeof(int),3,fp);
rewind(fp);
fread(x,sizeof(int),3,fp);
for(i=0;i<6;i++) printf("%d",x[i]);
printf("\n");
fclose(fp);
}

2011年3月全國計算機等級考試二級筆試試卷
C語言程序設計答案

一.選擇題1-5 ABDDB
6-10 ACDCB 11-15 ADBAA
16-20 ADCAD 21-25 BDBCD
26-30 CDCCC 31-35 BBBDB
36-40 CDDCB
二,填空題
1) 順序 2) DEBFCA 3) 單元測試 4) 主鍵 5) D 6) 3 7) 1217
8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715
14) e(E)moclew 15) 123456
2010年9月全國計算機等級考試二級C筆試試卷答案
一、選擇題
1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB
21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空
1.1DCBA2345 2.n-1 3.25 4.結構化 5.物理設計 6.2008
7.15 8.非0 9. 1 4 13 40 10.i 11.2
12.a[row][col] 13.3 14.*s 15.FILE

㈩ C語言,在線等,急!

57.A C是編譯的,Java是既可以編譯也可以解釋的
58.你是不是把選項寫錯了啊
59.A 指數表示浮點數的規則你看看就知道了。還有一個辦法就是在電腦上編程算,不報錯的就是對的

閱讀全文

與計算機高級語言程序的運行方法有編譯執行和相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:769
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:844
安卓怎麼下載60秒生存 瀏覽:803
外向式文件夾 瀏覽:240
dospdf 瀏覽:431
怎麼修改騰訊雲伺服器ip 瀏覽:392
pdftoeps 瀏覽:496
為什麼鴻蒙那麼像安卓 瀏覽:736
安卓手機怎麼拍自媒體視頻 瀏覽:186
單片機各個中斷的初始化 瀏覽:724
python怎麼集合元素 瀏覽:481
python逐條解讀 瀏覽:833
基於單片機的濕度控制 瀏覽:499
ios如何使用安卓的帳號 瀏覽:883
程序員公園采訪 瀏覽:812
程序員實戰教程要多長時間 瀏覽:979
企業數據加密技巧 瀏覽:135
租雲伺服器開發 瀏覽:814
程序員告白媽媽不同意 瀏覽:337
攻城掠地怎麼查看伺服器 瀏覽:601