- 相關推薦
計算機等級考試二級C語言考試試題帶答案(精選10份)
無論是在學習還是在工作中,我們會經常接觸并使用考試題,考試題可以幫助學;蚋髦鬓k方考察參試者某一方面的知識才能。大家知道什么樣的考試題才是好考試題嗎?下面是小編為大家收集的計算機等級考試二級C語言考試試題帶答案,希望對大家有所幫助。
計算機等級考試二級C語言考試試題帶答案 1
一、填空題(每空2分,共40分)
請將每一個空的正確答案寫在答案卡上,答在試卷上不得分。
(1) 為了要將當前盤目錄中的可執行程序ABC.EXE的輸出結果存放到當前盤當前目錄中的文件OUT.TXT中,則應使用的DOS命令為【1】 。
(2) 計算機網絡分為廣域網和局域網,因特網屬于【2】 。
(3) 要想在當前目錄下方便地執行C盤\UCDOS目錄中的程序,就應該先執行預設搜索路徑的命令,該DOS命令為【3】 。
(4) 要查看當前目錄中擴展名為.DAT的所有文件目錄,應該使用的DOS 命令為【4】 。
(5) 在Windows環境下,當進行復制操作時,其復制的內容將存放在【5】中
(6) 若從鍵盤輸入58,則以下程序輸出的結果是 【6】 。
main()
{ int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
(7) 以下程序的輸出結果是【7】 。
main()
{ int a=177;
printf("%o\n",a);
}
(8) 以下程序的輸出結果是【8】 。
main()
{ int a=0
a+=(a=8);
printf("%d\n",a);
}
(9) 以下程序輸出的結果是【9】 。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
(10) 以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針.請將定義補充完整。
struct node
{int info;
【10】 link;
}
(11) 以下程序的輸出結果是【11】 。
main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
(12) 以下程序的輸出結果是【12】 。
main()
{ char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
(13) 以下程序的輸出結果是【13】 。
main()
{ char s[]="abcdef";
s[3]=‘\0;
printf("%s\n",s);
}
(14) 以下程序的輸出結果是【14】 。
main()
{ int x=0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int *a,int n,int k)
{ if(k<=n) sub(a,n/2,2*k);
*a+=k;
}
(15) 設有如下宏定義
#define MYSWAP(z,x,y) {z=x; x=y; y=z;}
以下程序段通過宏調用實現變量a、b內容交換,請填空。
float a=5,b=16,c;
MYSWAP( 【15】 ,a,b);
(16) 以下程序用來統計文件中字符個數。請填空。
#include "stdio.h"
main()
{ FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r"))==NULL)
{ pirntf("Open error\n"); exit(0);}
while( 【16】 )
{ fgetc(fp); num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
(17) 以下程序中,select 函數的功能是:在N行M列的二維數組中,選出一個最大值作為函數值返回,并通過形參傳回此最大值所在的行下標。請填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0;i
for(j=0;j
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= 【17】;
return 【18】;
}
main()
{int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
(18) mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請填空。
int mystrlen(char *str)
{ int i;
for(i=0; 【19】!=‘\0;i++);
return(【20】);
}
二、選擇題((1)—(40)題每小題1分,(41)—(50)題每小題2分,共和60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上,答在試卷上不得分。
(1) 在計算機中,一個字長的二進制位數是
A) 8 B) 16 C) 32 D) 隨CPU的型號而定
(2) 計算機網絡的突出優點是
A) 速度快 B) 資源共享 C) 精度高 D) 容量大
(3) 計算機網絡能傳送的信息是:
A) 所有的多媒體信息 B) 只有文本信息
C) 除聲音外的所有信息 D) 文本和圖像信息
(4) 切斷計算機電源后,下列存儲器中的信息會丟失的是:
A) RAM B) ROM C) 軟盤 D) 硬盤
(5) 十進制數127轉換成二進制數是
A) 11111111 B) 01111111 C) 10000000 D) 11111110
(6) 要想打印存放在當前盤當前目錄上所有擴展名為.TXT 的文件內容, 應該使用的DOS命令為
A) DIR *.TXT>PRN B) TYPE *.TXT>PRN
C) COPY *.TXT PRN D) COPY *.TXT>PRN
(7) 將當前盤當前目錄及其子目錄中的全部文件 (總量不足1.2MB) 復制到一張空的A盤的根目錄下,應該使用的DOS命令為
A) XCOPY *.*A:\ /M B) XCOPY *.*A:\ /S
C) XCOPY *.*A:\ /P D) XCOPY *.*A:\ /A
(8) 在C盤根目錄下執行PROMPT $p$g命令之后,DOS的提示符變為
A) C:> B) C:\> C) C> D) C:\
(9) DOS命令 "COPY CON DISP"中的CON代表
A) 子目錄 B) 磁盤文件 C) 鍵盤 D) 顯示器
(10) 結構化程序設計所規定的三種基本控制結構是
A) 輸入、處理、輸出 B) 樹形、網形、環形
C) 順序、選擇、循環 D) 主程序、子程序、函數
(11) 要把高級語言編寫的源程序轉換為目標程序,需要使用
A) 編輯程序 B) 驅動程序 C) 診斷程序 D) 編譯程序
(12) 英文小寫字母d的ASCII碼為100,英文大寫字母D的ASCII碼為
A) 50 B) 66 C) 52 D) 68
(13) Windows環境下,PrintScreen鍵的作用是
A) 復制當前窗口到剪貼板 B) 打印當前窗口的內容
C) 復制屏幕到剪貼板 D) 打印屏幕內容
(14) 在Windows環境下,為了終止應用程序的運行,應
A) 關閉該應用程序窗口 B) 最小化該應用程序窗口
C) 雙擊該應用程序窗口的標題欄 D) 將該應用程序窗口移出屏幕
(15) 下列各帶有通配符的文件名中,能代表文件XYZ.TXT的是
A) *Z.? B) X*.* C) ?Z,TXT D) ?.?
(16) 若有定義:int a=8,b=5,C;,執行語句C=a/b+0.4;后,c的值為
A) 1.4 B) 1 C) 2.0 D) 2
(17) 若變量a是int類型,并執行了語句:a=‘A+1.6;,則正確的敘述是
A) a的值是字符C B) a的值是浮點型
C) 不允許字符型和浮點型相加 D) a的值是字符‘A’的ASCII值加上1。
(18) 以下程序段的輸出結果是
int a=1234;
printf("%2d\n",a);
A) 12 B) 34 C) 1234 D) 提示出錯、無結果
(19) 以下選項中不屬于C語言的類型的是
A) signed short imt B) unsigned long int
C) unsigned int D) long short
(20) 若有說明語句:int a,b,c,*d=&c;,則能正確從鍵盤讀入三個整數分別賦給變量a、b、c的語句是
A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);
C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);
(21) 在16位C編譯系統上,若定義long a; ,則能給a賦40000的正確語句是
A) a=20000+20000; B) a=4000*10;
C) a=30000+10000; D) a=4000L*10L;
(22) 以下敘述正確的是
A) 可以把define和if定義為用戶標識符
B) 可以把define定義為用戶標識符,但不能把if定義為用戶標識符
C) 可以把if定義為用戶標識符,但不能把define定義為用戶標識符
D) define和if都不能定義為用戶標識符
(23) 若定義:int a=511,*b=&a;, 則printf("%d\n",*b);的輸出結果為
A) 無確定值 B) a的地址 C) 512 D) 511
(24) 以下程序的輸出結果是
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
A) 5 B) 4 C) 6 D) 不確定
(25) 以下程序中,while循環的循環次數是
main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(I==5) break;
i++;
}
......
}
A) 1 B) 10
C) 6 D) 死循環,不能確定次數
(26) 以下程序的輸出結果是
main()
{ int a=0,i;
for(i=;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A) 31 B) 13 C) 10 D) 20
(27) 以下程序的輸出結果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A) 1 B) 0 C) 非0的數 D) -1
(28) 以下程序的輸出結果是
#include
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printh("%d\n",a);
}
A) 21 B) 32 C) 33 D) 11
(29) 以下程序的輸出結果是
char cchar ch)
{
if(ch>=‘A’&&ch<=‘Z) ch=ch-‘A+‘a;
return ch;
}
main()
{ char s[]="ABC+abc=defDEF",*p=s;
while(*p)
{ *p=c*p);
p++;
}
printf("%s\n",s);
}
A) abc+ABC=DEFdef B) abc+abc=defdef
C) abcaABCDEFdef D) abcabcdefdef
(30) 以下程序的輸出結果是
int f()
{ static int i=0;
int s=1;
s+=i; i++;
return s;
}
main()
{ int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}
A) 20 B) 24 C) 25 D) 15
(31) 以下程序段的輸出結果是
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
A) 9 B) 12 C) 13 D) 14
(32) 若有以下程序
#include
void f(int n);
main()
{ void f(int n);
f(5);
}
void f(int n)
{ printf("%d\n",n); }
則以下敘述中不正確的是
A) 若只在主函數中對函數f進行說明,則只能在主函數中正確調用函數f
B) 若在主函數前對函數f進行說明,則在主函數和其后的其它函數中都可以正確調用函數f
C) 對于以上程序,編譯時系統會提示出錯信息:提示對對f函數重復說明
D) 函數f無返回值,所以可用void將其類型定義為無值型
(33) 以下程序調用findmax函數返回數組中的最大值
findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a
if ( ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下劃線處應填入的是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(34) 以下程序的輸出結果是
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
(35) 在C語言中,形參的缺省存儲類是
A) auto B) register C) static D) extern
(36) 若指針p已正確定義,要使p指向兩個連續的整型動態存儲單元,不正確的.語句是
A) p=2*(int*)malloc(sizeof(int));
B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)calloc(2,sizeof(int));
(37) 以下程序的輸出結果是
main()
{ char x=040;
printf("%0\n",x<<1);
}
A) 100 B) 80 C) 64 D) 32
(38) 若要打開A盤上user子目錄下名為abc.txt的文本文件進行讀、寫操作,下面符合此要求的函數調用是
A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+")
C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w")
(39) 以下不能正確進行字符串賦初值的語句是
A) char str[5]="good!"; B) char str[]="good!";
C) char *str="good!"; D) char str[5]={‘g,‘o,‘o,‘d};
(40) 若有下面的說明和定義:
struct test
{ int ml; char m2; float m3;
union uu {char ul[5]; int u2[2];} ua;
} myaa;
則sizeof(struct test )的值是
A) 12 B) 16 C) 14 D) 9
(41) 若有定義:int aa[ 8];。則以下表達式中不能代表數組元aa[1]的地址的是
A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1
(42) 以下程序的輸出結果是
f(int b[],int m,int n)
{ int i,s=0;
for(i=m;i
return s;
}
main()
{int x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
A) 10 B) 18 C) 8 D) 15
(43) 若有以下定義和語句:
int s[4][5],(*ps)[5];
ps=s;
則對s數組元素的正確引用形式是
A) ps+1 B) *(ps+3) C) ps[0][2] D) *(ps+1)+3
(44) 以下程序的輸出結果是
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A) 3 B) 4 C) 1 D) 9
(45) 以下程序的輸出結果是
#include
#include
main()
{ char b1[8]="abcdefg",b2[8],*pb=b1+3;
while (--pb>=b1) strcpy(b2,pb);
printf("%d\n",strlen(b2));
}
A) 8 B) 3 C) 1 D) 7
(46) 在說明語句:int *f();中,標識符f代表的是
A) 一個用于指向整型數據的指針變量
B) 一個用于指向一維數組的行指針
C) 一個用于指向函數的指針變量
D) 一個返回值為指針型的函數名
(47) 不合法的main函數命令行參數表示形式是
A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
(48) 以下程序的輸出的結果是
int x=3;
main()
{ int i;
for (i=1;i
}
ncre()
{ staic int x=1;
x*=x+1;
printf(" %d",x);
}
A) 3 3 B) 2 2 C) 2 6 D) 2 5
(49) 若以下定義:
struct link
{ int data;
struck link *next;
}a,b,c,*p,*q;
且變量a和b之間已有如下圖所示的鏈表結構:
a b
data next data next
┌──┬──┐ ┌──┬──┐
│ 5 │ ┼──→ │ 9 │ \0 │
└──┴──┘ └──┴──┘
↑p
c
data next
┌──┬──┐
│ 7 │ │
└──┴──┘
↑q
指針p指向變量a,q指向變量c。則能夠把c插入到a和b 之間并形成新的鏈表的語句組是:
A) a.next=c; c.next=b; B) p.next=q; q.next=p.next;
C) p->next=&c; q->next=p->next; D) (*p).next=q; (*q).next=&b;
(50) 設有以下說明語句
typedef struct
{ int n;
char ch[8];
}PER;
則下面敘述中正確的是
A) PER 是結構體變量名 B) PER是結構體類型名
C) typedef struct 是結構體類型 D) struct 是結構體類型名
計算機等級考試二級C語言考試試題帶答案 2
1. 以下程序執行后sum 的值是
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d ",sum);
}
A)15
B)14
C) 不確定
D)0
你所選擇的答案是:C,正確答案是:C √
2. 當調用函數時,實參是一個數組名,則向函數傳送的是
A) 數組的長度
B) 數組的'首地址
C) 數組每一個元素的地址
D) 數組每個元素中的值
你所選擇的答案是:B,正確答案是:B √
3. 以下只有在使用時才為該類型變量分配√
4. 以下程序的輸出結果是
main()
{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) printf("%d,",x[i][2-i]);
}
A) 1,5,9
B) 1,4,7
C) 3,5,7
D)3,6,9
你所選擇的答 案是:C,正確答案是:C √
5. 以下程序的輸出結果是
#define SQR(X) X*X
main()
{ int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("d ",a);
}
A) 16
B) 2
C) 9
計算機等級考試二級C語言考試試題帶答案 3
1.C語言編譯程序的功能是()。
A.執行一個C語言編寫的源程序
B.把C源程序翻譯成ASCII碼
C.把C源程序翻譯成機器代碼
D.把C源程序與系統提供的庫函數組合成一個二進制執行文件
【答案】C
【解析】編譯程序的功能是將“高級語言”翻譯為“機器語言”。每條C語言語句,經過編譯最終都將轉換成二進制的機器指令。答案選擇C選項。
2.計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是()。
A. C語言程序僅可以編譯執行
B. C語言程序僅可以解釋執行
C. C語言程序既可以編譯執行,又可以解釋執行;
D.以上說法都不對
【答案】A
【解析】編譯執行是指程序執行前需要一個專門的編譯過程把程序編譯成機器語言的文件,再次運行時不需要重新翻譯,執行效率高;解釋執行是指每個語句都是執行的時候才翻譯,執行效率低。用C語言編寫的程序必須經過編譯器編譯后,轉換為二進制的機器指令來運行。答案選擇A選項。
3.以下敘述中錯誤的是()。
A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令
B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件
C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中
D. C語言源程序經編譯后生成后綴為的目標程序
【答案】A
【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫函數連接起來生成一個后綴為的可執行文件。答案選擇A選項。
4.以下敘述中錯誤的是()
A.C語言的可執行程序是由一系列機器指令構成的
B.用C語言編寫的源程序不能直接在計算機上運行
C.通過編譯得到的二進制目標程序需要連接才可以運行
D.在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的exe文件
【答案】D
【解析】A項正確,C語言的可執行程序是由一系列機器指令組成的;BC項正確,用C語言編寫的源程序必須經過編譯,生成二進制目標代碼,再經過連接才能運行;D項錯誤,C語言經過編譯鏈接后的二進制目標代碼可以脫離C語言集成開發環境獨立運行。答案選擇D選項。
5.以下敘述正確的是()。
A. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的二進制文件
B. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的可執行文件
C. C編譯程序把文件后綴為的二進制文件編譯成文件后綴為的可執行文件
D.鏈接程序把文件后綴為.c的源程序文件鏈接成文件后綴為的可執行文件
【答案】A
【解析】C編譯程序把文件后綴為C的源程序文件編譯成文件后綴為的二進制文件,鏈接將一個或多個目標文件與程序用到的庫文件連接起來,形成一個可以在操作系統直接運行的.執行程序,故排除B、C、D項,答案選擇A選項。
6.以下敘述中正確的是(A.在C語言程序中,main函數必須放在其他函數的最前面
B.每個后綴為.c的C語言源程序都可以單獨進行編譯
C.在C語言程序中,只有main函數才可以單獨進行編譯
D.每個后綴為.c的C語言源程序都應該包含一個main函數
【答案】B
【解析】main函數可以在程序的任何位置。每一個可執行的C程序都必須有一個且只能有一個主函數。后綴名為.c的C語言源程序都可以單獨進行編譯。main函數只是讓執行程序的系統知道該從哪里開始執行程序(從主函數處執行),其他有關這個程序的子函數是通過函數調用來實現其功能(不需main函數)。答案選擇B選項。
7.以下敘述中錯誤的是()。
A. C語言編寫的函數源程序,其文件名后綴可以是.c
B. C語言編寫的函數都可以作為一個獨立的源程序文件
C. C語言編寫的每個函數都可以進行獨立的編譯并執行;
D.一個C語言程序只能有一個主函數
【答案】C
【解析】C源程序經過C編譯程序編譯之后生成一個后綴為的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件,把此文件與C語言提供的各種庫函數連接起來生成一個后綴為的可執行文件。只有含有main函數的經過編譯鏈接才能執行。答案選擇C選項。
8.以下敘述中錯誤的是(A.一個C程序可以包含多個不同名的函數
B.一個C程序只能有一個主函數
C. C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過
D. C程序的主函數必須用main作為函數名
【答案】C
【解析】一個C程序有且只有一個主函數main。一個C程序可以包含多個不同名字的子函數。C程序在書寫時沒有嚴格的縮進要求。答案選擇C選項。
9.以下敘述中正確的是()。
A. C語言規定必須用main作為主函數名,程序將從此開始執行
B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執行
C. C語言程序將從源程序中第一個函數開始執行;
D. main的各種大小寫拼寫形式都可以作為主函數名,如:MAIN,Main等
【答案】A
【解析】用戶不能指定某函數為主函數,C語言規定,程序從main函數開始執行,從main函數退出,C語言函數名區別大小寫。答案選擇A選項。
10.下列敘述中錯誤的是()。
A. C程序可以由一個或多個函數組成
B. C程序可以由多個程序文件組成
C.一個C語言程序只能實現一種算法
D.一個C函數可以單獨作為一個C程序文件存在
【答案】C
【解析】一個C程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法,答案選擇C選項。
計算機等級考試二級C語言考試試題帶答案 4
1: 第1題請編寫函數fun,其功能使:將兩個兩位正整數a b合并形成一個整數放在c中。合并的方式使:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的千位和十位上。
答案:
void fun(int a,int b,long *c)
{*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}
2: 第2題請編寫一個函數fun,它的功能使:計算n門課程的平均分,計算結果作為函數值返回。
答案:
float fun(float *a,int n)
{float ave=0.0;
int i;
for(i=0;i
ave+=a;
ave/=n;
return ave;}
3: 第3題假定輸入的'字符串中只包含字母和*號。請編寫函數fun,它的功能使:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。
答案:
void fun(char *a)
{int i=0;
char *p,*q;
p=q=a;
while(*p)
p++;
p--;
while(*p==‘*’)
p--;
while(q<=p)
{a=*q;
i++;
q++;}
a=‘’;}
4: 第4題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c中,合并的方式是:將a數的十位和個位數依次放在c的個位和百位上,b數的十位和個位數依次放在c數的千位和十位上。
答案:
void fun(int a,int b,long *c)
{c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}
5: 第5題 n名學生的成績已在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun,它的功能是:求出平均分,由函數值返回。
答案:
double fun(strec *h)
{double aver=0.0;
while(h!=null)
{aver+=h->s;
hy=h->next;}
aver/=n;
return aver;}
6: 第6題請編寫函數fun,計算并輸出給定10個數的方差。
答案:
double fun(double x[10])
{int i,j;
double s=0.0,s1=0.0;
for(i=0;i<10;i++)
s1+=x;
s1/=10;
for(j=0;j<10;j++)
s+=(x[j]-s1)*(x[j]-s1);
s/=10;
s=pow(s,0.5);
return s;}
7: 第7題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c 中。合并的方式是:將a數的十位和個位數依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的個位和百位上。
答案:
void fun(int a,int b,long *c)
{*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;}
計算機等級考試二級C語言考試試題帶答案 5
1.若有以下數組說明,則i=10;a[a[i]]元素數值是(C )。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10
B、9
C、6
D、5
先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].
a[10]對應下面數組中的元素為9.因此a[a[i]]即為a[9]
a[9]對應下面數組中的元素為6.因此a[9]即為6
2.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}};則數組a的第一維的大小為: ( B )
A、2
B、3
C、4
D、無確定值
5 7
D、3 6 9
二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行
3.對二維數組的正確定義是(C )
詳見教材P149~152,二維數組的定義、初始化
類型符數組名[常量表達式][常量表達式]
二維數組可以看做是矩陣
類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的`行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。
一維數組初始化時可以省略數組長度
二維數組初始化時可以省略行數,但不能省略列數
選項A,B,都省略了列數
選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中
A、int a[ ][ ]={1,2,3,4,5,6};
B、int a[2] []={1,2,3,4,5,6};
C、int a[ ] [3]={1,2,3,4,5,6};
D、int a[2,3]={1,2,3,4,5,6};
4.已知int a[3][4];則對數組元素引用正確的是__C___
A、a[2][4]
B、a[1,3]
C、a[2][0]
計算機等級考試二級C語言考試試題帶答案 6
一 選擇題(7分,每小題0.5分)
1.C語言源程序的基本單位是( )。
A 過程 B 函數 C 子程序 D 標識符
2.下列程序的輸出結果是( )。
main( )
{ int a=7,b=5;
printf("%d ",b=b/a);
}
A 5 B 1 C 0 D不確定值
3.假設變量a,b均為整型,表達式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7 B 8 C 9 D 2
4.設a為int型變量,執行下列賦值語句后,a的取值分別是( )。
a=125.534; a=(int)125.521%4; a=5<<2;
A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20
5.設有如下程序段,下面描述中正確的是 ( )。
int k=10; while(k=0) k=k-1;
A 循環執行一次 B循環是無限循環 C循環體語句一次也不執行 D循環體語句執行一次
6.以下程序的輸出結果為( )。
int i;
void prt( )
{ for(i=5;i<8;i++) printf("%c",*);
printf(" ");
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A *** B *** *** *** *** C *** *** D * * *
7.在C語言程序中,以下說法正確的是( )。
A函數的定義可以嵌套,但函數的調用不可以嵌套
B函數的定義不可以嵌套,但函數的調用可以嵌套
C函數的定義和函數的調用都不可以嵌套
D函數的定義和函數的調用都可以嵌套
8.以下函數調用語句中含有( )個實參。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 語法錯誤
9.以下程序的輸出結果為( )。
#define ADD(x) x*x
main( )
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}
A d=70 B d=80 C d=140 D d=700
10.已知職工記錄描述如下,在Turbo C中,系統為變量w分配( )字節的空間。
struct worker
{ int no;
char name[20];
char sex;
union
{ int day; int month; int year;}birth;
} w;
A 29 B 20 C 25 D 6
11.設有以下定義,值為5的枚舉常量是( )。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue B sat C fri D thu
12.下面選項中正確的賦值語句是(設 char a[5],*p=a;)( )。
A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";
13.設有以下程序段,則值為6的表達式是( )。
struct st { int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;
p=&a[0];
A p++->n B ++p->n C p->n++ D (*p).n++
14.C語言中的文件類型只有( )。
A 索引文件和文本文件兩種 B 文本文件一種
C 二進制文件一種 D ASCII碼文件和二進制文件兩種
二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)
1.在Turbo C中,整型數據在內存中占2個字節。( )
2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結果為A。( )
3.break語句用在循環體中,可結束本層循環,continue語句用在循環體中,可結束本次循環。( )
4.函數的'遞歸調用不過是一個函數直接或間接地調用它自身。( )
5.函數strlen("ASDFG ")的值是7。( )
6.通過return語句,函數可以帶回一個或一個以上的返回值。( )
7.結構體類型只有一種。 ( )
8.char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。( )
9.若有定義:char *p(char a[10]);則p是函數名。( )
10.用fopen("file","r+");打開的文件"file"可以進行修改。 ( )
三 寫出下列程序的運行結果(10分,每小題2分)
1.float average (float array[10])
{ int i;
float aver,sum=array[0];
for (i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
main( )
{ float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;
int i;
aver=average (score);
printf (“average score is %5.2f ”,aver);
}
2.main( )
{ char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;
printf(“%2c”,*p);
printf(“ ”);
printf(“%2c ”,**(pa=&p));
}
3.main( )
{ int a,b,s=0;
for(a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{ b+=3; continue; }
b-=5;
}
printf(“a=%d b=%d ”,a,b);
}
4.main()
{ printf(“main( ) :%d ”,fact(5));
fact(-5);
}
fact(int value)
{ int f;
if(value<0)
{ printf(“Arg error ");
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf(“This called value=%d ”,f);
return f;
}
5.main( )
{ int a=012,b=0x12,k=12;
char c=‘102’,d=‘ ’;
printf(“a=%d b=%d k=%d ”,a,b,k);
printf(“c=%c,d=%c%o ”,c,d,a);
a=‘A’; c=49;
printf(“a=%d c=%c ”,a,c);
}
四 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個空1分)
1.有一個3*4矩陣,求其中的最大元素。
max_value( (1) )
{ int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
(2) ;
}
main( )
{ int a[3][4], i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
(3) ;
printf(“max value is %d ”,max_value(a));
}
2.輸入x、y兩個整數,按先大后小的順序輸出x、y。
#include “stdio.h”
main( )
{ int x,y, *px,*py, (4) ;
scanf(“%d%d”,&x,&y);
(5) ; (6) ;
if(x
{ p=px; px=py; py=p; }
printf(“x=%d,y=%d ”,x,y);
printf(“MAX=%d,MIN=%d ”,*px,*py);
}
3.用選擇排序法對任意10個整數按照由小到大排序。
main()
{ int a[11],i,j,k,t;
printf("Please input 10 numbers: ");
for(i=1;i<11;i++) scanf("%d",&a[i]);
printf(" ");
for(i=1;i<=9;i++)
{ (7) ;
for(j=i+1; (8) ;j++)
if(a[j]>a[k]) k=j;
if(k!=i)
{ t=a[k]; a[k]=a[i]; a[i]=t;}
}
printf("The sorted numbers: ");
for(i=1;i<11;i++) printf("%d ",a[i]);
}
答案
一 選擇題(7分,每小題0.5分)
1. B 2. C 3. B 4. B 5. C
6. A 7. B 8. A 9. A 10. C
11. A 12. A 13. B 14. D
二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)
1.× 2.× 3.√ 4.√ 5.×
6.× 7.× 8.× 9.√ 10.√
三 寫出下列程序的運行結果(10分,每小題2分)
1. 2. 3.
4. 5.
四 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個空1分)
1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])
2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)
3.(7) (8)
計算機等級考試二級C語言考試試題帶答案 7
一 選擇題(24分,每小題2分)
1.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。
A 存放讀入數據項的存儲區 B 存放讀入數據的地址或指向此地址的指針
C 一個指向所讀文件的文件指針 D 一個整形變量,代表要讀入的數據項總數
2.以下程序的輸出結果為( )。
main( )
{ int i=010,j=10;
printf("%d,%d ",i++,j--);
}
A 11,9 B 9,10 C 8,10 D 9,9
3.設a為int型變量,執行下列賦值語句后,a的取值分別是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;
A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20
4.設i和k都是int類型,則for循環語句( )。
for(i=0,k=-1;k=1;i++,k++) printf("****");
A 循環結束的條件不合法 B 循環體一次也不執行 C 循環體只執行一次 D 是無限循環
5.以下程序的輸出結果為( )。
main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case a:case b:case c:printf("%c,",c);break; default:printf("end");}
}
}
A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,
6.函數調用語句:fseek(fp,-10L,2);的含義是( )。
A 將文件位置指針從文件末尾處向文件頭的方向移動10個字節
B 將文件位置指針從當前位置向文件頭的方向移動10個字節
C 將文件位置指針從當前位置向文件末尾方向移動10個字節
D 將文件位置指針移到距離文件頭10個字節處
7.以下程序的輸出結果為( )。
main( )
{ char s1[40]="country",s2[20]="side";
int i=0,j=0;
while(s1[i]!=) i++;
while(s2[j]!=) s1[i++]=s2[j++];
s1[i]=0;
printf("%s ",s1);
}
A side B country C sidetry D countryside
8.下列說法不正確的是( )。
A 主函數main中定義的變量在整個文件或程序中有效
B 不同函數中,可以使用相同名字的變量
C 形式參數是局部變量
D 在一個函數內部,可以在復合語句中定義變量,這些變量只在本復合語句中有效
9.在下列程序段中,枚舉變量 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;
A 1 B 3 C 5 D 6
10.設有說明 int (*ptr)();其中標識符ptr是( )。
A 是一個指向整形變量的指針 B 是一個指針,它指向一個函數值是int的函數
C 是一個函數名 D定義不合法
11.定義由n個指向整形數據的指針組成的數組p,其正確的方式為( )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同類型的指針類型變量p與數組a,不能進行的操作是( )。
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)
1.參加位運算的數據可以是任何類型的數據。( )
2.若有定義和語句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( )
3.C語言把文件看作是一個字符(字節)的'序列。( )
4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒定義,所以此宏定義是錯誤的。( )
5.在Turbo C中,下面的定義和語句是合法的:file *fp;fp=fopen("a.txt","r");( )
6.若有定義:char s[ ]="china";則Turbo C系統為數組s開辟6個字節的內存單元。( )
7.若有定義和語句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];則sum=21。( )
8.若有定義和語句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結果是1。( )
9.在程序中定義了一個結構體類型后,可以多次用它來定義具有該類型的變量。( )
10.在Turbo C中,此定義和語句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )
三 寫出下列程序的運行結果(36分,每小題6分)
1.main( )
{ int i=29,j=6,k=2,s;
s=i+i/j%k-9;
printf(“s=%d ”,s);
}
2.main( )
{ int x=31,y=2,s=0;
do
{ s-=x*y;
x+=2;
y-=3;} while( x%3==0);
printf(“x=%d y=%d s=%d ”,x,y,s);
}
3.main( )
{ int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“ ”);
}
invert(int s[ ],int i,int j)
{ int t;
if(i
{ invert(s,i+1j-1);
t=s[i];s[i]=s[j];s[j]=t;
}
}
4.#include
main()
{ char str[ ]=“The C program”,c;
int i;
for(i=2;(c=str[i])!=‘’;i++)
{ switch(c)
{ case ‘g’: ++i; break;
case ‘o’: continue;
default: printf(“%c”,c); continue;
}
printf(“*”);
}
printf(“ ”);
}
5.struct w
{ char low;
char high;
};
union u
{ struct w byte;
short word;
}uw;
main( )
{ int result;
uw.word=0x1234;
printf(“word value:%04x ”,uw.word);
printf(“high byte:%02x ”,uw.byte.high);
printf(“low byte:%02x ”,uw.byte.low);
uw.byte.low=0x74;
printf(“word value:%04x ”,uw.word);
result=uw.word+0x2a34;
printf(“the result:%04x ”,result);
}
6.main()
{ char *s2=“I love China!”,**s1=&s2;
char *s3,c,*s4=“w”;
s3=&c;
*s3=‘H’;
s2=s2+2;
printf(“%s %c %s %c ”,s2,*s3,s4,**s1);
}
四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)
1. 百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹?
main( )
{ int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+= (1) )
for(hm=0;hm<=100-hb;hm+= (2) )
{ hl=100-hb- (3) ;
if(hb/3+hm/2+2* (3) ==100)
{ n++;
printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);
}
}
printf("n=%d ",n);
}
2.用“起泡法”對輸入的10個字符排序后按從小到大的次序輸出。
#define N 10
char str[N];
main()
{ int i,flag;
for(flag=1;flag==1;)
{ scanf("%s",str);
flag=0;
printf(" ");
}
sort(___(4)___);
for(i=0;i
printf("%c",str[i]);
printf(" ");
}
sort(char str[N])
{ int i,j;
char t;
for(j=1;j
for(i=0;(i
if(str[i]>str[i+1])
{ t=str[i];
____(5)____;
____(6)____;
}
}
3.以下程序是一個函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來表示。)
例如,矩陣為:
3 0 0 3
2 5 7 3
1 0 4 2
則所有靠外側的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。
add(int m,int n,int arr[])
{ int i,j,sum=0;
for(i=0;i
for(j=0;j
sum=sum+ (7) ;
for(j=0;j
for(i=1; (8) ;i++)
sum=sum+arr[i*n+j];
return(sum);
}
4.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。
#define N 10
main()
{ void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a; p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}
void maxmin(int arr[],int *pt1,int *pt2,int n)
{ int i;
*pt1=*pt2=arr[0];
for(i=1;i
{ if(arr[i]>*pt1) (9) ;
if(arr[i]<*pt2) (10) ;
}
}
答案
一 選擇題(24分,每小題2分)
1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )
二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)
1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )
6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )
三 寫出下列程序的運行結果(36分,每小題6分)
1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,
4.e C pr*am 5.word value:1234 6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j](或者arr[i*10+j])
(8) i
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]
計算機等級考試二級C語言考試試題帶答案 8
(1)算法的時間復雜度是指_______。
A)執行算法程序所需要的時間
B)算法程序的長度
C)算法執行過程中所需要的基本運算次數
D)算法程序中的指令條數
答案:C
評析:所謂算法的時間復雜度,是指執行算法所需要的計算工作量。
(2)下列敘述中正確的是________。
A)線性表是線性結構B)棧與隊列是非線性結構
C)線性鏈表是非線性結構D)二叉樹是線性結構
答案:A
評析:一般將數據結構分為兩大類型:線性結構與非線性結構。線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
(3)下面關于完全二叉樹的敘述中,錯誤的是_________。
A)除了最后一層外,每一層上的結點數均達到最大值
B)可能缺少若干個左右葉子結點
C)完全二叉樹一般不是滿二叉樹
D)具有結點的完全二叉樹的深度為[log2n]+1
答案:B
評析:滿二叉樹指除最后一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最后一層外,每一層上的結點數均達到最大值,在最后一層上只缺少右邊的若干子結點(葉子結點)的二叉樹。
C語言筆試題答案篇
(1)結構化程序設計主要強調的是_________。
A)程序的規模B)程序的易讀性
C)程序的執行效率D)程序的`可移植性
答案:B
評析:結構化程序設計主要強調的是結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以保證程序的正確性。
(2)在軟件生命周期中,能準確地確定軟件系統必須做什么和必須具備哪些功能的階段是________。
A)概要設計B)詳細設計C)可行性分析D)需求分析
答案:D
評析:需求分析是對待開發軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統的功能。編寫軟件規格說明書及初步的用戶手冊,提交評審。
(3)數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是_________。
A)控制流B)加工C)數據存儲D)源和潭
答案:A
評析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
(4)軟件需求分析一般應確定的是用戶對軟件的__________。
A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求
答案:D
評析:軟件需求分析中需要構造一個完全的系統邏輯模型,理解用戶提出的每一功能與性能要求,是用戶明確自己的任務。因此,需求分析應確定用戶對軟件的功能需求和非功能需求。
C語言筆試題答案篇
(1)下述關于數據庫系統的敘述中正確的是________。
A)數據庫系統減少了數據冗余
B)數據庫系統避免了一切冗余
C)數據庫系統中數據的一致性是指數據類型的一致
D)數據庫系統比文件系統能管理更多的數據
答案:A
評析:由數據的共享自身又可極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。所謂數據的一致性是指在系統中同一數據的不同出現應保持相同的值。
(2)關系表中的每一橫行稱為一個________。
A)元組B)字段C)屬性D)碼
答案:A
評析:在關系數據庫中,關系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數據,每行數據稱為元組。
(3)數據庫設計包括兩個方面的設計內容,它們是________。
A)概念設計和邏輯設計B)模式設計和內模式設計
C)內模式設計和物理設計D)結構特性設計和行為特性設計
答案:A
評析:數據庫設計可分為概念設計與邏輯設計。概念設計的目的是分析數據間內在語義關聯,在此基礎上建立一個數據的抽象模型。邏輯設計的主要工作是將ER圖轉換為指定的RDBMS中的關系模型。
(4)請讀程序:
#include
main
{
int a;float b,c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(” a=%d,b=%ec。%f ”,a,b,C);
}
若運行時從鍵盤上輸入9876543210l,則上面程序的輸出結果是________。
A)a=98,b=765,c=432 1
B)a=1 0,b=432,c=8765
C)a=98,b=765.000000,c=432 1.000000
D)a=98,b=765.0,c=432 1.0
答案:C
評析:scanf把用戶從鍵盤錄入的數字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。
(5)一個良好的算法由下面的基本結構組成,但不包括__________。
A)順序結構B)選擇結構C)循環結構D)跳轉結構
答案:D
評析:1966年,Bohra和Jacopini提出了以下三種基本結構,用這三種基本結構作為表示一個良好算法的基本單元:1、順序結構;2、選擇結構;3、循環結構。
(6)請選出以下程序的輸出結果________。
#include
sub(x,y,z)
int x,y,星符號z:
{星符號z變化,所以此次函數被調用后,a的值為y-x=-5,同理可知,在sub(7,a,&b)后,b的值發生變化,其值為-5-7=-12,在sub(a,b,&C)后,c的值發生變化,其值為-12-(-5)=-7。
(7)下面程序在屏幕上的輸出是________。
main
{
printf(”ab c”);
}
A)ab c B)a c C)abc D)ab c
答案:B
評析:c語言中允許使用一種特殊形式的字符常量,、就是以一個“”開頭的字符序列,這樣的字符稱為“轉義字符”。常用的轉義字符有: ,換行;,水平制表;,退格;,回車。
(8)若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是_______。
A)pb=&x; B)pb=x; C)星符號pb=星符號、/)還包括自增自減運算符(++、–),在c語言解析表達式時,它總是進行貪婪咀嚼,這樣,該表達式就被解析為i++ ++ +i,顯然該表達式不合c語言語法。
(10)若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態存儲單元
int星符號int) D)(int星符號)
答案:D
評析:不論p是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格式為(數據類型+)。
(11)下面程序輸出的結果是__________。
main
{
int i=5,J=9,x;
x=(I==j?i:(j=7));
printf(” %d,%d”,I,J);
}
A)5,7 B)5,5 C)語法錯誤D)7,5
答案:A
評析:條件表達式的一般形式為:表達式I?表達式2:表達式3;先求解表達式1,若為真則求解表達式2;若表達式l的值為假,則求解表達式3。本題中先判斷i==j,不等,執行j=7;然后執行x=7。故本題為A。
計算機等級考試二級C語言考試試題帶答案 9
1.下面對軟件特點描述不正確的是()。
A.軟件是一種邏輯實體,具有抽象性
B.軟件開發、運行對計算機系統具有依賴性
C.軟件開發涉及軟件知識產權、法律及心理等社會因素
D.軟件運行存在磨損和老化問題
【答案】D
【解析】軟件具有以下特點:①軟件具有抽象性,是一種邏輯實體;②軟件沒有明顯的制作過程;③軟件在使用期間不存在磨損、老化問題,④對硬件和環境具有依賴性;⑤軟件復雜性高,成本昂貴;⑥軟件開發涉及諸多的社會因素。D項描述是硬件存在的問題。答案選擇D選項。
2.下面描述不屬于軟件特點的是()。
A.軟件是一種邏輯實體,具有抽象性
B.軟件在使用中不存在磨損、老化問題
C.軟件復雜性高
D.軟件使用不涉及知識產權
【答案】D
【解析】軟件具有以下特點:①軟件是一種邏輯實體,具有抽象性;②軟件沒有明顯的制作過程,③軟件在使用期間不存在磨損、老化問題;④軟件對硬件和環境具有依賴性;⑤軟件復雜性高,成本昂貴,⑥軟件開發涉及諸多的社會因素,如知識產權等。答案選擇D選項。
3.下面對軟件特點描述錯誤的是()
A.軟件沒有明顯的制作過程
B.軟件是一種邏輯實體,不是物理實體,具有抽象性
C.軟件的開發、運行對計算機系統具有依賴性
D.軟件在使用中存在磨損、老化問題
【答案】D
【解析】軟件的特點有:①具有抽象性,是邏輯實體;②沒有明顯的制作過程;③在使用期間不存在磨損、老化問題;④對硬件和環境具有依賴性;⑤復雜性高,成本昂貴;⑥開發涉及諸多的社會因素。答案選擇D選項。
4.軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是()。
A.編輯軟件
B.操作系統
C.教務管理系統
D.瀏覽器
【答案】B
【解析】系統軟件是控制和協調計算機及外部設備,支持應用軟件開發和運行的軟件,操作系統是系統軟件;支撐軟件是支撐各種軟件的開發與維護的軟件,又稱為軟件開發環境,瀏覽器屬于支撐軟件;應用軟件是用戶可以使用的各種程序設計語言,以及用各種程序設計語言編制的應用程序的集合,編輯軟件、教務管理軟件屬于應用軟件。答案選擇B選項。
5.軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件),下面屬于應用軟件的是()。
A.學生成績管理系統
B. C語言編譯程序
C. UNIX操作系統
D.數據庫管理系統
【答案】A
【解析】應用軟件是為解決特定領域的應用而開發的軟件,如事務處理軟件,工程與科學計算軟件,學生成績管理系統、教務管理系統、瀏覽器、編輯軟件等應用性質不同的各種軟件。系統軟件是計算機管理自身資源,提高計算機使用效率并服務于其他程序的軟件,如操作系統,編譯程序,匯編程序,數據庫管理系統等。支撐軟件是介于系統軟件和應用軟件之間,協助用戶開發軟件的工具性軟件,包括輔助和支持開發和維護應用軟件的工具軟件,如需求分析工具軟件,設計工具軟件,編碼工具軟件,測試工具軟件,維護工具軟件等。答案選擇A選項。
6.數據庫管理系統是()。
A.操作系統的一部分
B.在操作系統支持下的系統軟件
C.一種編譯系統
D.一種操作系統
【答案】B
【解析】系統軟件主要包括:①操作系統軟件;②各種語言的解釋程序和編譯程序;③各種服務性程序;④各種數據庫管理系統。數據庫管理系統是一種系統軟件,負責數據庫中的數據組織、數組操縱、數據維護、控制和保護以及數據服務等。答案選擇B選項。
7.數據庫管理系統是()。
A.操作系統的一部分
B.在操作系統支持下的系統軟件
C.一種編譯系統
D.一種通信軟件系統
【答案】B
【解析】系統軟件主要包括:①操作系統軟件;②各種語言的解釋程序和編譯程序;③各種服務性程序;④各種數據庫管理系統。數據庫管理系統是一種系統軟件,負責數據庫中的數據組織、數組操縱、數據維護、控制和保護以及數據服務等。答案選擇B選項。
8.下列選項中,不屬于數據管理員(DBA)職責的`是()。
A.數據庫維護
B.數據庫設計
C.改善系統性能,提高系統效率
D.數據類型轉換
【答案】D
【解析】數據庫管理員對數據庫進行規劃、設計、維護、監視等,其主要工作有:①數據庫設計,主要是對數據模式進行設計,②數據庫維護,對數據庫中的數據安全性、完整性、并發控制及系統恢復、數據定期轉儲等進行實施與維護;③改善系統性能,不斷調整內部結構,提高系統效率。答案選擇D選項。
9.數據庫系統的核心是()。
A.數據模型
B.軟件開發
C.數據庫設計
D.數據庫管理系統
【答案】D
【解析】數據庫系統包括四個部分:數據庫、數據庫管理系統、數據庫應用程序、數據庫管理員。其中DBMS是為數據庫的建立、使用和維護而配置的軟件,是數據庫系統的核心。答案選擇D選項。
10.下列敘述中正確的是()。
A.數據庫系統是一個獨立的系統,不需要操作系統的支持
B.數據庫技術的根本目標是要解決數據的共享問題
C.數據庫管理系統就是數據庫系統
D.數據庫系統由數據庫應用系統、數據庫和數據庫管理系統組成。
【答案】B
【解析】A項錯誤,數據庫需要調用操作系統的接口,需要操作系統的支持;C項錯誤,數據庫管理系統(DBMS)是數據庫系統的核心,負責數據庫中的數據組織、數據操作、數據維護、控制及保護和數據服務等;D項錯誤,數據庫應用系統是數據庫系統再加上應用軟件及應用界面這三者所組成,具體包括:數據庫、數據庫管理系統、數據庫管理員、硬件平臺、軟件平臺、應用軟件、應用界面。答案選擇B選項。
計算機等級考試二級C語言考試試題帶答案 10
1.下列敘述中正確的是()。
A.所有數據結構必須有根結點
B.所有數據結構必須有終端結點(即葉子結點)
C.只有一個根結點,且只有一個葉子結點的數據結構一定是線性結構
D.沒有根結點或沒有葉子結點的數據結構一定是非線性結構
【答案】D
【解析】D項正確,線性結構的特點是:①集合中必存在“第一個元素"且惟一②集合中必存在“最后一個元素”且惟一;③除最后一個元素外,其他數據元素均有惟一的“后繼”,④除第一個元素外,其他數據元素均有惟一的“前驅”。所以沒有根結點或沒有葉子結點的數據結構一定是非線性結構。AB兩項錯誤,不是所有數據結構都必須有根結點和葉子結點;C項錯誤,數據結構中若有中間結點不滿足只有一個前件或者后件的條件,就不是線性結構。答案選擇D選項。
2.以下敘述中錯誤的是()。
A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令
B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件
C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中
D. C語言源程序經編譯后生成后綴為.obj的目標程序
【答案】A
【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為.obj的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把.obj文件與各種庫函數連接起來生成一個后綴為.exe的可執行文件。答案選擇A選項。
3. C語言主要是借助以下()功能來實現程序模塊化的。
A.定義函數
B.定義常量和外部變量
C.三種基本結構語句
D.豐富的數據類型
【答案】A
【解析】C程序的模塊化主要通過函數來實現。C語言允許對函數單獨進行編譯,從而可以實現模塊化。答案選擇A選項。
4.有以下程序段:
char ch;
int k;
ch='a';
k=12;
print("%c,%d,",h,ch,k);
printf("k=%d",k);
已知字符a的ASCII碼十進制值為97,則執行上述程序段后輸出的結果是()。
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數不符,輸出為零值或不定值
C.a,97,12k=12
D. a,97,k=12
【答案】D
【解析】字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運算。"ch='a",%c表示以字符格式輸出ch的值,所以輸出為a;%d表示以十進制代碼的形式輸出ch的值,為97;k沒有對應的輸出格式,不輸出。在第二個語句中,首先輸出"k=",然后以十進制代碼輸出k的值,為12。答案選擇D選項。
5.下列敘述中正確的是()。
A.棧是“先進先出”的線性表
B.隊列是“先進后出"的線性表
C.循環隊列是非線性結構
D.有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構
【答案】D
【解析】有序的線性表既可采用順序存儲結構,也可以采用鏈式存儲結構。A項錯誤,棧是“先進后出"的線性表B項錯誤,隊列是“先進先出"的線性表;C項錯誤,循環隊列是線性結構的`,有序的線性表既可采用順序存儲結構,也可采用鏈式存儲結構。
6.某二叉樹的中序序列為DCBAEFG,后序序列為DCBGFEA,則該二叉樹的深度(根結點在第1層)為()。
A. 5
B. 40
C.3
D. 2
【答案】B
【解析】二叉樹的后序序列為DCBGFEA,則A為根結點。中序序列為DCBAEFG,則DCB為左子樹結點,EFG為右子樹結點。同理B為C父結點,C為D父結點。根據分析,可畫出左子樹,同理E為F父結點,F為G父結點。根據分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。
7.設有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是()。
A. s[0]=m[1];
B. s=m;
C.s.n=m.n;
D. s[2].x=m[2].x;
【答案】A
【解析】定義了結構體類型數組s,長度為2,結構體類型數組m,長度為2,并對數組m進行了初始化。同類型的結構體可以直接用變量名實現賦值,A項正確;數組名為數組首地址,地址常量之間不可以相互賦值,B項錯誤;數組名為地址常量不是結構體變量,不能引用成員,C項錯誤;s[2]與m[2]數組越界,D項錯誤。答案選擇A選項。
8.關于C語言標識符,以下敘述錯誤的是()。
A.標識符可全部由數字組成
B.標識符可全部由下劃線組成
C.標識符可全部由小寫字母組成
D.標識符可全部由大寫字母組成
【答案】A
【解析】C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。
9.以下程序段中的變量已定義為int類型,則
sum=pAd=5;
pAd=sum++,++pAd,pAd++;
printf("%d",pAd);
程序段的輸出結果是()。
A. 6
B. 4
C. 5
D. 7
【答案】D
【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變量之前,規則是先使變量的值增(或減)1,然后以變化后表達式的值參與其他運算;后置運算,運算符放在變量之后,規則是變量先參與其他運算,然后再使變量的值增(或減)1。執行pAd=sum++,sum++是后置自增,執行完后,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執行完后,pAd7。答案選擇D選項。
10.設循環隊列為Q(1:m),其初始狀態為front=rear=m。經過一系列入隊與退隊運算后,front=20,rear=15。現要在該循環隊列中尋找最小值的元素,最壞情況下需要比較的次數為()。
A. 5
B. 6
C.m-5
D. m-6
【答案】D
【解析】循環隊列是隊列的一種順序存儲結構,用隊尾指針rear指向隊列中的隊尾元素,用隊首指針指向隊首元素的前一個位置,因此,從隊首指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態為front=rear=m,當front=20,rear=15時,隊列中有m-20+15=m-5個元素,最壞情況下需要比較次數為m-6次。答案選擇D選項。
【計算機等級考試二級C語言考試試題帶答案10份】相關文章:
計算機等級考試二級C語言試題及答案10-31
2017計算機等級考試二級c語言考試試題08-22
2017計算機等級C語言考試試題及答案07-10
計算機二級考試C語言試題及答案10-11
計算機二級考試C語言試題與答案10-27
全國計算機等級考試二級c語言考試試題08-26
計算機等級考試二級C語言考試技巧08-26
計算機二級C語言考試試題及答案10-09