當前位置:首頁 » 編程語言 » 二級c語言機試題庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

二級c語言機試題庫

發布時間: 2022-09-12 02:59:18

1. 2011年全國計算機等級考試2級c語言機試題庫

重要說明:本題庫為從題中一題一題復制出來工作量大,而且有許多表達式無法在word中快速表示出來(這樣會加大工作量)故而省略,或者表達錯位,有的地方可能或者肯定會有錯,我相信准備參加C語言二級考試的同學應當能夠對照參考答案看出來,這是2011年最新版最完整考試題庫,相信大家一定都能通過!

第一套
程序填空
給定程序中,函數fun的功能是:將形參n所指變數中,各位上為偶數的數去除,剩餘的數按原來從高位到低位的順序組成一個新的數,並通過形參指針n傳回所指變數。如輸入一個數:27638496,新的數為729
第一空:{ t=*n%10;
第二空:if(t%2!=0)
第三空:*n=x;
2.程序修改
給定程序modi1.c中函數fun的功能是:計算n!。例如,給n輸入5,則輸出120.000000。
double fun(int n )
{ double result=1.0;
/*****found******/
if(n==0)
return 1.0;
while(n>1&&n<170)
/*****found******/
result*=n--;
return result;
}
程序設計
請編寫一個函數fun,它的功能是:將一個數字字元串轉換為一個整數(不得調用C語言提供的將字元串轉換為整數的函數)。例如,若輸入字元串"-1234",則函數把它轉換為整數值-1234。
long fun(char *p)
{
int i,len,t;
long x=0;
len=strlen(p);
if(p[0]=='-')
{ t=-1;len--;p++;}
else t=1;
while(*p)
x=x*10-48+(*p++);
return x*t;
}

第二套
1. 給定程序中,函數fun的功能是將形參給定的字元串、整數、浮點數寫到文本文件中,再用字元方式從此文本文件中逐個讀入並顯示在終端屏幕上。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
第1 處 FILE * fp;
第2 處 while (!feof(fp)) {
第3 處 putchar(ch); ch = fgetc(fp); }
2.程序修改
給定程序MODI1.C中函數fun的功能是:依次取出字元串中所有數字字元,形成新的字元串,並取代原字元串。
void fun( char *s )
{ int i,j;
for(i=0,j=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
/*****found******/
s[j++]=s[i];
/*****found******/
s[j]='\0';
}
3.程序設計題
請編寫函數fun,函數的功能是:將M行N列的二維數組中的字元數據,按列的順序依次放到一個字元串中。
void fun(char s[][N],char *b)
{
int i,j,n=0;
for(i=0;i<N;i++)
/*請填寫其相應語句完成其功能*/
{
for(j=0;j<M;j++) {
b[n]=s[j][i];
n=i*M+j+1;
}
}
b[n]='\0';
}
第三套
1. 程序填空
程序通過定義學生結構體變數,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進制方式輸出到文件中。函數 fun的功能是重寫形參filename所指的文件中最後一個學生的數據,即用新的學生數據覆蓋該學生原來的數據,其它學生的數據不變。
第1處:fp=fopen(filename,
"rb+")
第2處:fseek(fp,-1L*
sizeof(STU),SEEK_END);
第3處:fwrite(&n,
sizeof(STU),1,fp);
2. 程序修改
給定程序MODI1.C中的函數Creatlink的功能是創建帶頭結點的單向鏈表,並為各結點數據域賦0到m-1的值。請改正函數Creatlink中指定部位的錯誤,使它能得出正確的結果。
NODE *Creatlink(int n,int m)
{ NODE *h=NULL,*p,*s;
int i;
/*****found******/
p=( NODE *) malloc(sizeof(NODE));
h=p;
p->next=null;
for(i=1;i<=n;i++)
{s=( NODE *) malloc(sizeof(NODE));
s->data=rand()%m;
s->next=p->next;
p->next=s;
p=p->next;
}
/*****found******/
return h;
}
3. 程序設計
請編寫函數fun,函數的功能是:統計一行字元串中單詞的個數,作為函數值返回。一行字元串在主函數中輸入,規定所有單詞由小寫字母組成,單詞之間由若干個空格格開,一行的開始沒有空格。
int fun(char *s)
{
int k=1;
while(*s)
{ if(*s=='')k++;
s++; }
return k;
}
第四套
1. 程序填空
程序通過定義學生結構體變數,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進制方式輸出到文件中。函數fun的功能是從形參filename所指的文件中讀入學生數據,並按照學號從小到大排序後,再用二進制方式把排序後的學生數據輸出到filename所指的文件中,覆蓋原來的文件內容。
第1處fp = fopen(filename, "rb");
第2處if (s[i].sno >s[j].sno)
第3處 fwrite(s,sizeof(STU),N,fp);
2. 程序修改
給定程序MODI1.C中函數fun的功能是:在字元串的最前端加入n個*號,形成新串,差且覆蓋原串。注意:字元串的長度最長允許為79.
void fun(char s[ ],int n)
{
char a[80],*p;
int i;
/*****found******/
p=s;
for(i=0;i<n;i++)
a[i]='*';
do
{a[i]=*p;
i++;
}
/*****found******/
while(*p++)
a[i]=0;
strcpy(s,a);
}
3. 程序設計
請編寫函數fun,函數的功能是:統計各年齡段的人數,N個年齡能過調用隨機函數獲得,並放在主函數的age 數組中:要求函數把0至9歲的年齡段的人數放在d[0]中,把10至19歲的年齡段的人數放在d[1]中,把20至29歲的年齡段的人數放在d[2]中,其餘依次類推,把100歲(含100歲)以上年齡的人數都放在d[10]中。結果在主函數中輸出。
void fun(int *a, int *b)
{
int i,j;
for(i=0;i<M;i++)b[i]=0;
for(i=0;i<N;i++)
{ j=a[i]/10;
if(j>10)b[M-1]++;
else b[j]++;
}
}
第五套
1. 程序填空
給定程序中,函數fun的功能是將參數給定的字元串、整數、浮點數寫到文件文件中,再用字元串方式從此文本文件中逐個讀入,並調用庫函數atoi和atof將字元串換成相應的整數和浮點數,然後將其顯示在屏幕上。
第1處: FILE *fp;
第2處:fclose(fp);
第3處:fscanf(fp,"%s%s%s",str,str1,str2);
2.程序修改
給定程序MODI1.C中函數fun的功能是:對N名學生的學生成績,按從高到低的順序找出前m(m<10) 名學生來,將這些學生數據存放在一個動態分配的連續存儲區中,此存儲區的首地址作為函數值返回。
STU *fun(STU a[ ],int m)
{ STU b[N],*t;
int i,j,k;
/*****found******/
t=(STU *)calloc(sizeof(STU),m);
for(i=0;i<N;i++)
b[i]=a[i];
for(k=0;k<m;k++)
{ for(i=j=0;i<N;i++)
if(b[i].s>b[j].s)j=i;
/*****found******/
t[k]=b[j];
b[j].s=0;
}
return t;
}
3. 程序設計
請編寫函數fun,函數的功能是,刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按從小到大的順序排序,函數返回刪除後數組中數據的個數。
int fun(int a[ ],int n)
{
int i,j=1,k=a[0];
for(i=1;i<n;i++)
if(k!=a[i]){
a[j++]=a[i];
k=a[i];}
a[j]=0;
return j;
}
第六套
1. 程序填空
給定程序中,函數fun的功能是根據形參i的值返回某個函數年值。當調用正確時,程序輸出:x1=5.000000
x2=3.000000.
x1*x1+x1*x2=40.000000
第一處:double fun(int i,double x,double y)
第二處:return f1(x);
第三處:return f2(x,y);
2.程序修改
給定程序MODI1.C中函數fun的功能是:比較兩個字元串,將長的那個字元串的首地址作為函數值返回。
#include <stdio.h>
/*****found******/
char *fun(char *s,char *t)
{
int sl=0,tl=0;
char *ss,*tt;
ss=s; tt=t;
while(*ss)
{ sl++;
/*****found******/
ss++;
}
while(*tt)
{ tl++;
/*****found******/
tt++;
}
if(tl>sl) return t;
else return s;
}

3. 程序設計
請編寫函數fun,函數的功能是:移動字元串中的內容,移動的規則如下:把第1到第m個字元,平均移到字元串的最後,把第m+1個到最後的;字元移到字元串的前部。
void fun(char *w, int m )
{
int i;
for(i=0;i<m;i++)
fun1(w);
}
第七套
1. 程序填空
程序通過定義並賦初值的方式,利用結構體變數存儲了一名學生的信息,函數fun的功能是輸出這位學生的信息。
第1處 void show( STU tt)
第2處 printf("%5.1f",tt.score[i]);
第2處 show(std)
2.程序修改
給定程序MODI1中函數fun的功能是:求出數組中最大數和次最大數,並把最大數和a[0]中的數對調、次最大數和a[1]中的數對調。
int fun(int *a,int n)
{ int i,m,t,k;
for(i=0;i<2;i++){
/*****found******/
m=i;
for(k=i+1;k<n;k++)
/*****found******/
if(a[k]>a[m])m=k;
t=a[i];a[i]=a[m];a[m]=t;
}
}
3.程序設計
請編寫一個unsigned fun(unsigned w),w是一個大於10的無符號整數,若w是n(n>=2)位的整數,函數求出w的後n-1位的數作為函數值返回。
例如:w值為5923,則函數返回923;w值為923則函數返回23。
unsigned fun( unsigned w )
{
if(w>=10000) return w%10000;
if(w>=1000) return w%1000;
if(w>=100) return w%100;
return w%10;
}
第八套
1. 程序填空
給定程序通過定義並賦值的方式,利用結構體變數存儲了一名學生學號、姓名和3門課的成績。函數fun的功能是將該學生的各科成績都乘以一個系統a。
第1處 void modify(STU *ss,float a )
第2處 ss->score[i]*=a;
第3處 modify(&std,a);
2.程序修改
給定程序MODI1.C中函數fun的功能是:求k!<13>,所求階乘的值作為函數值返回。例如:若k=10,則應輸出:3628800。
long fun(int k)
{
/*****found******/
if(k>0)
return (k*fun(k-1));
/*****found******/
else if(k==0)
return 1L;
}
3.程序設計
程序定義了N*N的二維數組,並在主函數中自動賦值。請編寫函數fun(int a[ ][N],int n),函數的功能是:使數組左下三角元素中的值乘以n。
int fun(int a[ ][N],int n)
{ int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]*=n;
}
第九套
1.程序填空
給定程序中,函數fun的功能是將不帶頭節點的單向鏈表結點數據域中的數據從小到大排序。即若原鏈表結點數據域從頭到尾的數據為:10、4、2、8、6,排序後鏈表結點數據域從頭至尾的數據為2、4、6、8、10。
第1處 q=p->next;
第2處 while(q)
第3處 p=p->next;
2.程序修改
給定程序MODI1.C中函數fun的功能是:將s所指字元串中的字母轉換為按字母序列的後續字母(但Z轉換為A,z轉換成a ),其它字元不變。
void fun(char *s)
{
/*****found******/
while(*s)
{ if(*s>'A'&&*s<='Z'
||*s>='a'&&*s<='z')
{ if(*s=='Z')*s='A';
else if(*s=='z')*s='a';
else *s=*s+1;}
/*****found******/
s++;
}
}
3.程序設計
void fun(int *w,int p, int n)
{
int i,j=0,b[N];
for(i=p+1;i<n;i++)b[j++]=w[i];
for(i=0;i<=p;i++)
b[j++]=w[i];
for(i=0;i<n;i++)
w[i]=b[i];
}
第十套
1程序填空
給定程序中,函數fun的功能是:判定形參a所指的N×N(規定N為奇數)的矩陣是否是"幻方",若是,函數返回值為1;不是,函數返回值為0。"幻方"的判定條件是:矩陣每行、每列、主對角線及反對角線上元素之和都相等。
第1處 row=colum=0;
第2處 if((row!=colum)||(row!=m1))return 0;
第3處 return 1;
2程序修改
給定MODI1.Cfun函數的功能是:根據整型形參m,計算如下公式的值。t=1-1/2-1/3-......-1/m.
#include <sdio.h>
double fun( int m )
{
double t = 1.0;
int i;
for(i=2;i<=m;i++)
/********found***********/
t=t-1.0/i;
/********found***********/
return t;
}

2. 計算機二級C語言都有哪些題型

全國計算機二級C語言程序設計包括40個單選題(每題一分)和三道操作題(60分)。
單選題中1~10題為二級公共基礎知識,考試內容包括數據結構與演算法、程序設計基礎、軟體工程基礎、資料庫設計基礎四部分。單選題的11~40題是C語言的內容。
操作題包括程序填空(18分)、程序改錯(18分)和編程題(24分)各一題。
程序填空是將一個完整的程序,扣掉兩到三處,讓考生將它填寫完整。由於每位考生具體抽到的題目不同,程序填空有2到3個空要填。程序填空題以實際填寫的內容為評分依據,填寫正確一個空,給一個空的分。如果是2個空,每個空就是9分;如果是3個空每個空是6分。
程序改錯也是一個完整的程序,其中有2~3處錯誤要求考生將他們改正。與程序填空類似,2處錯誤的話,每處9分,3處錯誤的話,每處6分。程序改錯題的題目會提示每一處錯誤所在的行,在那一行的上一行有********found********標識。
編程題是要求考生編寫一個程序,然後運行出題干要求的結果。題目中主函數main()會完整給出,在主函數中將調用fun()函數,fun函數由考生自己編寫。編程題以運行結果給分,所編寫完成後必須運行,否則沒分。因此,大多數情況下,編程題要麼就是得24分滿分,要麼就是0分。

3. 計算機二級c語言機試題每年都是從固定的50套題中選嗎

不是的,我參加監考,我知道的。


200套題,這是題庫,但每年只更新其中的30套題,很多題目都是舊的。

所以,你做往年的模擬題,考試時很可能抽到原題。

4. 求計算機二級考試c語言機試題庫

這是部分,其餘的可以私下給你,我的QQ:916356609,我傳給你
一、程序填空題
1、給定程序中,函數fun的功能是:在任意給定的9個正整數中找出按升序排列時處於中間的數,將原數據序列中比該中間數小的數用該中間數替換,位置不變,在主函數中輸出處理後的數據序列,並將中間數作為函數值返回。
例如,有9個正整數:1 5 7 23 87 5 8 21 45
按升序排列時的中間數為:8
處理後主函數中輸出的數列為:8 8 8 23 87 8 8 21 45
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
#define N 9
int fun(int x[])
{ int i,j,k,t,mid,b[N];
for(i=0;i<N;i++) b[i]=x[i];
for(i=0;i<=N/2;i++)
{ k=i;
for(j=i+1;j<N;j++) if(b[k]>b[j]) k=j;
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i<N; i++)
/**********found**********/
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
main()
{ int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
}

2、給定程序中,函數fun的功能是建立一個N×N的矩陣。 矩陣元素的構成規律是:最外層元素的值全部為1;從外向內第2層元素的值全部為2;第3層元素的值全部為3,…依次類推。例如,若N=5,生成的矩陣為:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
請在程序的下劃線處填入正確的內容並把下劃線刪除, 使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
#define N 7
/**********found**********/
void fun(int (*a) __1__)
{ int i,j,k,m;
if(N%2==0) m=N/2 ;
else m=N/2+1;
for(i=0; i<m; i++) {
/**********found**********/
for(j= __2__ ; j<N-i; j++)
a[i][j]=a[N-i-1][j]=i+1;
for(k=i+1; k<N-i; k++)
/**********found**********/
a[k][i]=a[k][N-i-1]= __3__;
}
}
main()
{ int x[N][N]={0},i,j;
fun(x);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
}

3、給定程序中,函數fun的功能是: 將s所指字元串中的所有數字字元移到所有非數字字元之後,並保持數字字元串和非數字字元串原有的先後次序。例如,形參s所指的字元串為:def35adh3kjsdf7。執行結果為:defadhkjsdf3537。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
void fun(char *s)
{ int i, j=0, k=0; char t1[80], t2[80];
for(i=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
{
/**********found**********/
t2[j]=s[i]; ___1___;
}
else t1[k++]=s[i];
t2[j]=0; t1[k]=0;
/**********found**********/
for(i=0; i<k; i++) ___2___;
/**********found**********/
for(i=0; i<___3___; i++) s[k+i]=t2[i];
}
main()
{ char s[80]="def35adh3kjsdf7";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}

4、給定程序中,函數fun的功能是:有N×N矩陣,以主對角線為對稱線,對稱元素相加並將結果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣:
1 2 3
4 5 6
7 8 9計算結果為
1 0 0
6 5 0
10 14 9
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!

#include <stdio.h>
#define N 4
/**********found**********/
void fun(int (*t)___1___ )
{ int i, j;
for(i=1; i<N; i++)
{ for(j=0; j<i; j++)
{
/**********found**********/
___2___ =t[i][j]+t[j][i];
/**********found**********/
___3___ =0;
}
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%2d ",t[i][j]);
printf("\n");
}
}

5、給定程序中,函數fun的功能是:對形參s所指字元串中下標為奇數的字元按ASCII碼大小遞增排序,並將排序後下標為奇數的字元取出,存入形參p所指字元數組中,形成一個新串。
例如,形參s所指的字元串為:baawrskjghzlicda,執行後p所指字元數組中的字元串應為:aachjlsw。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
void fun(char *s, char *p)
{ int i, j, n, x, t;
n=0;
for(i=0; s[i]!='\0'; i++) n++;
for(i=1; i<n-2; i=i+2) {
/**********found**********/
___1___;
/**********found**********/
for(j=___2___+2 ; j<n; j=j+2)
if(s[t]>s[j]) t=j;
if(t!=i)
{ x=s[i]; s[i]=s[t]; s[t]=x; }
}
for(i=1,j=0; i<n; i=i+2, j++) p[j]=s[i];
/**********found**********/
p[j]=___3___;
}
main()
{ char s[80]="baawrskjghzlicda", p[50];
printf("\nThe original string is : %s\n",s);
fun(s,p);
printf("\nThe result is : %s\n",p);
}

6、程序通過定義並賦初值的方式,利用結構體變數存儲了一名學生的信息。函數fun的功能是輸出這位學生的信息。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
typedef struct
{ int num;
char name[9];
char sex;
struct { int year,month,day ;} birthday;
float score[3];
}STU;
/**********found**********/
void show(STU ___1___)
{ int i;
printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
/**********found**********/
printf("%5.1f", ___2___);
printf("\n");
}
main( )
{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
printf("\nA student data:\n");
/**********found**********/
show(___3___);
}

7、給定程序中,函數fun的功能是:計算N×N矩陣的主對角線元素和反向對角線元素之和,並作為函數值返回。注意:要求先累加主對角線元素中的值,然後累加反向對角線元素中的值。例如,若N=3,有下列矩陣:
1 2 3
4 5 6
7 8 9fun函數首先累加1、5、9,然後累加3、5、7,函數的返回值為30。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
#define N 4
fun(int t[][N], int n)
{ int i, sum;
/**********found**********/
___1___;
for(i=0; i<n; i++)
/**********found**********/
sum+=___2___ ;
for(i=0; i<n; i++)
/**********found**********/
sum+= t[i][n-i-___3___] ;
return sum;
}
main()
{ int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nThe original data:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%4d",t[i][j]);
printf("\n");
}
printf("The result is: %d",fun(t,N));
}

8、給定程序中,函數fun的功能是:計算形參x所指數組中N個數的平均值(規定所有數均為正數),作為函數值返回;並將大於平均值的數放在形參y所指數組中,在主函數中輸出。
例如,有10個正數:46 30 32 40 6 17 45 15 48 26,平均值為:30.500000
主函數中輸出:46 32 40 45 48
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!

#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double x[],double *y)
{ int i,j; double av;
/**********found**********/
av=__1__;
/**********found**********/
for(i=0; i<N; i++) av = av + __2__;
for(i=j=0; i<N; i++)
/**********found**********/
if(x[i]>av) y[__3__]= x[i];
y[j]=-1;
return av;
}
main()
{ int i; double x[N] = {46,30,32,40,6,17,45,15,48,26};
double y[N];
for(i=0; i<N; i++) printf("%4.0f ",x[i]);
printf("\n");
printf("\nThe average is: %f\n",fun(x,y));
for(i=0; y[i]>=0; i++) printf("%5.0f ",y[i]);
printf("\n");
}

9、給定程序中,函數fun的功能是:計算形參x所指數組中N個數的平均值(規定所有數均為正數),將所指數組中小於平均值的數據移至數組的前部,大於等於平均值的數據移至x所指數組的後部,平均值作為函數值返回,在主函數中輸出平均值和移動後的數據。
例如,有10個正數:46 30 32 40 6 17 45 15 48 26,平均值為:30.500000
移動後的輸出為:30 6 17 15 26 46 32 40 45 48
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double *x)
{ int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i<N; i++) av +=__1__;

5. 2011年9月計算機二級c語言 機試題庫,不要去年的,也不要上次的,要最新的,謝謝~@~@~

試題一
一、單項選擇題
1.C語言程序的執行,總是起始於【 】。
A) 程序中的第一條可執行語句
B) 程序中的第一個函數
C) main函數
D) 包含文件中的第一個函數
分析:在一個C語言源程序中,無論main函數書寫在程序的前部,還是後部,程序的執行總是從main函數開始,並且在main函數中結束。
本題正確答案為C。
2.下列說法中正確的是【 】。
A) C程序書寫時,不區分大小寫字母
B) C程序書寫時,一行只能寫一個語句
C) C程序書寫時,一個語句可分成幾行書寫
D) C程序書寫時每行必須有行號
分析:C語言嚴格區分大小寫字母,如"A1"和"a1"被認為是兩個不同的標識符,C程序的書寫非常靈活,既可以一行多句,又可以一句多行,且每行不加行號。
本題正確答案為C。
3.下面對C語言特點,不正確描述的是【 】。
A) C語言兼有高級語言和低級語言的雙重特點,執行效率高
B) C語言既可以用來編寫應用程序,又可以用來編寫系統軟體
C) C語言的可移植性較差
D) C語言是一種結構式模塊化程序設計語言
分析:C語言是介於匯編語言和高級語言之間的一種語言,由於它可以直接訪問物理地址,對硬體操作,所以C語言既可以編寫應用程序,又可以開發系統軟體,而且C程序可移植性好於匯編語言,程序清晰具有模塊化的特點。
本題正確答案為C。
4.C語言源程序的最小單位是【 】。
A) 程序行B) 語句C) 函數D) 字元
分析:程序行、語句、函數都是由字元構成的,字元是C語言的最小單位。
本題正確答案為D。
5.以下四項中屬於C語言關鍵字的是【 】。
A) CHAR B) define C) unsigned D) return
分析:C語言有32個關鍵字(或稱保留字),它們都有特定的含意,並且由小寫字母組成,所以選項A是錯的,選項B不是保留字,選項D是return的錯誤拼寫。
本題正確答案為C。
6.十進制數2403轉換成十六進制數為【 】。
A) 963 B) 369 C) 953 D) 359
分析:十進制數化成十六進制數的方法是:不斷除以16,商0為止,倒取余數。
本題正確答案為A。
7.二進制數00110101轉換成八進制數是【 】。
A) 055 B) 065 C) 056 D) 152
分析:二進制數化成八進制數的方法是:從右向左劃分,將每3位二進制數書寫成1位八進制數。
本題正確答案為B。
8.將二進制數1011011.011轉換成十進制數是【 】。
A) 91.75 B) 91.375 C) 91.125 D) 91.25
分析:二進制數化成十進制數的方法是:各數字乘以權重再相加,題中整數部分為:(1011011)2=1×26+1×24+1×23+1×21+1×20=64+16+8+2+1=91,小數部分為:(0.011)2=0×2-1+1×2-2+1×2-3=0.25+0.125=0.375,再將兩者合在一起得91.375。
本題正確答案為B。
9.計算機內部運算使用的數是【 】。
A) 十進制數 B) 十六進制數 C) 二進制數 D) 八進制數
分析:在實際生活中找不到具有十個穩定狀態的物理元件,而具有兩種穩定狀態的元件到處可見,如一個開關具有通電和斷電兩個穩定狀態,計算機內部的元件正是以"1"代表通電,以"0"代表斷電的,所以計算機內部運算使用的數是二進制數,至於八進制數和十六進制數是對二進制數的人為縮寫。
本題正確答案為C。
10.一個字長的二進制位數是【 】。
A) 2個BYTE,即16個bit B) 3個BYTE,即24個bit C) 4個BYTE,即32個bit D) 隨計算機系統不同而不同
分析:一個二進制位也稱做1bit,八個二進制位稱做1個BYTE,即所說的一個位元組,BYTE和bit有固定的換算關系,但是計算機中的字長WORD和位元組BYTE沒有固定的換算關系,字長WORD是隨CPU型號而異的。
本題正確答案為D。
11.在C語言系統中,假設int類型數據佔2個位元組,則double、long、unsigned int、char類型數據所佔位元組數分別多少【 】。
A) 8,2,4,1 B) 2,8,4,1 C) 4,2,8,1 D) 8,4,2,1
分析:由上題知CPU字長決定了分配給各種類型變數多少個位元組,當int類型佔2個位元組時,double、long、unsigned int、char型所佔的位元組分別為8、4、2、1個位元組。
本題正確答案為D。
12.下面程序段執行結果是【 】。
int i=5,k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k,i);
A) 24,8 B) 21,8 C) 21,7 D) 24,7
分析:k=(++i)+(++i)+(i++)表達式中,"++"號在i前面的有兩個,所以在計算k之前,i要先增兩次,即i變為7,然後再將3個7相加,使k得21,表達式中"++"號在i後面的有1個,所以得出k的值以後i又增1次變為8。
本題正確答案為B。
13.下面程序段執行結果是【 】。
int i=5;
printf("%d,%d,%d", i,(++i)+(++i)+(i++),i);
A) 8,20,5 B) 8,21,5 C) 5,20,8 D) 5,21,8
分析:此題不能看作將12題中的k=(++i)+(++i)+(i++)代入printf函數,因為函數處理參數的順序是從右向左,所以(++i)+(++i)+(i++)表達式的值不再是求7+7+7,而是為8+7+5=20。
本題正確答案為A。
14.下面程序段的輸出結果是【 】。
int i=32769;
printf("%d\\n",i);
A) 32769 B) 32767 C) -32767 D) 輸出不是確定的數
分析:int型變數表示數據的范圍是-32768~+32767,賦值時比-32768小或比+32767大,都會發生溢出,溢出後存放的數值是:正向溢出時,為該數減去模65536,負向溢出時,為該數加上模65536,所以本題輸出為32769-65536=-32767。
本題正確答案為C。
15.下面的程序運行後輸出為【 】。
main( )
{ int a=-32769;
ptintf("%8U\\n",a);
}
A) 32769 B) %8U C) 32767 D) -32767
分析:格式字元必須小寫,題中的"%8U"不會當作格式控制符,而是原樣輸出,變數a將沒有對應的格式說明,也不會送出。
本題正確答案為B。
二、填空題
1.若以下程序的輸出結果是13,請填空。
main( )
{ int x=016;
printf("%d\\n",【1】); }
分析:在C語言中以0開頭的數字是八進制數,016相當於十進制數14,執行printf語句時,輸出項應為x的值減1。
本題正確答案為 【1】 --x或x-=1。
2.下面程序段的輸出結果是【2】。
int k=10;
float a=3.5,b=6.7,c;
c=a+k%3*(int)(a+b)%2/4;
分析:本題考查運算符的優先順序概念,式中要先算(a+b)的值,再算強制類型變換,*、/、%是同級的要從左到右計算,最後算加法和賦值。
本題正確答案為【2】 3.500000
3.若執行下面程序段後的輸出為:3,4,5,請填空。
int a,b=3,c=5;
a=b<c?【3】:c++;
printf("%d,%d,%d",a,b,c);
分析:本題考查條件運算符和增量運算符的概念,題中b<C為真,應取B++的值給A,因B的值是先用後增1,所以A為3,題中的C++沒有執行到,C保持原值。
本題正確答案為 【3】 b++。
4.C語言中的運算符,優先順序最低的是【4】。
分析:與其它高級語言相比,在C語言中賦值號並不是優先順序最低的,C語言中優先順序最低的運算符是逗號運算符。
本題正確答案為 【4】 逗號運算符。
5.若下面程序的輸出結果是4,請填空。
main( )
{ int i,j,k;
k=0 ; i=j=-2 ;
k+=-i--【5】;
printf("%d\\n",k);
}
分析在C語言中當3個加號或3個減號連在一起時,中間的符號歸屬左邊的變數,即-i---j相當於-(i--)-j。
本題正確答案為 【5】-j 。</c?【3】:c++;
試題二
一、單項選擇題
1.下面敘述不正確的是【 】。
A) C語句末尾必須有分號
B) C語言中無論是整數還是實數都能准確的表示
C) 運算符「%」只能用於整數運算
D) 乘除運算符優先順序高於加減運算符
2.以下敘述正確的是【 】。
A) C語句前面必須有行號
B) C程序中每行只能寫一條語句
C) C語言本身沒有輸入輸出語句
D) 注釋必須跟在一行語句的後面
3.復合語句應用【 】括起來。
A) 小括弧 B) 方括弧 C) 大括弧 D) 尖括弧
4.將二進制數101101101111轉換成十六進制數是【 】。
A) 5557 B) B6F C) 7555 D) F6B
5.將十進制數0.625轉換成二進制數是【 】。
A) 0.111 B) 0.101 C) 0.5 D) 0.A
6.C語言語句一行寫不下時,可以【 】。
A) 用逗號換行 B) 用分號換行 C) 用回車換行 D) 在任意一空格處換行
7.C語言允許將一條語句寫在兩行上,下列語句不正確是【 】。
A) int a, B) int a C) int D) int a,b
b; ,b; a,b; ;
8.下面程序的輸出是【 】。(「□」表示一個空格)
int a=3366;
printf("|%-08d|",a);
A) |-0003366| B) |00003366| C) |3366□□□□| D) 輸出格式非法
9.若有說明語句:int a; float b;,以下輸入語句正確的是【 】。
A) scanf("%f%f",&a,&b);
B) scanf("%f%d",&a,&b);
C) scanf("%d,%f",&a,&b);
D) scanf("%6.2f%6.2f",&a,&b);
10.以下程序的輸出結果是【 】。
main( )
{ int x=11,y=11;
printf("%d%d\\n",x--,--y);
}
A) 11,11 B) 10,10 C) 10,11 D) 11,10
11.將八進制數307轉換成二進制數是【 】。
A) 100110011 B) 11000111 C) 1100000111 D) 111000011
12.執行下面程序段,給x、y賦值時,不能作為數據分隔符的是【 】。
int x,y;
scanf("%d%d",&x,&y);
A) 空格 B) Tab鍵 C) 回車 D) 逗號
13.下面合法的語句是【 】。
A) int a=8,b;
b=++a++;
printf("%d,%d",a,b++);
B) int a;
printf("\\"%d\\"",scanf("%d",&a));
C) char a;
scanf("%c",&a);
char b=scanf("b=%c",&b);
D) char c=getchar( );
putchar((int)c);
14.執行下面程序時,欲將25和2.5分別賦給a和b,正確的輸入方法是【 】。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);
A) 25□2.5
B) 25,2.5
C) a=25,b=5.5
D) a=25□b=2.5
15.與數學公式a•b x•y不等價的語句是【 】。
A) a*b/x*y
B) a*b/x/y
C) a*b/(x*y)
D) a/(x*y)*b
二、填空題
1.表達式5%(-3)的值是【1】,表達式-5%(-3)的值是【2】。
2.在C語言中,格式輸入庫函數為【3】,格式輸出庫函數為【4】。
3.下面程序的輸出結果是【5】。
int x=-32769;
printf("%d",x);
4.執行下列程序的輸出結果是【6】。
main( )
{
float a=1,b;
b=++a*++a;
printf("%f\\n",b);
}
5.執行下列程序的輸出結果是【7】。
main( )
{
int x=5,y;
y=++x*++x;
printf("y=%d\\n",y);
}
參 考 答 案
一、選擇題(1)B (2)C (3)C (4)B (5)B (6)D (7)D (8)C (9)C (10)D (11)B (12)D (13)D (14)C (15)A
二、填空題【1】 2 【2】 -2 【3】 scanf 【4】 printf 【5】 32767 【6】 6.000000 【7】 49

試題三
一、單項選擇題
1.下面不屬於C語言的數據類型是【 】。
A) 整型 B) 實型 C) 邏輯型 D) 雙精度實型
分析:和其它高級語言相比,C語言中沒有邏輯型數據,也沒有邏輯型變數。
本題正確答案為C。
2.C語言中,下列屬於構造類型的是【 】。
A) 整型 B) 實型 C) 指針類型 D) 結構體類型
分析:C語言中構造類型的數據有三種:數組、結構體和共用體,數組是同類型數據的集合,結構體是不同類型的數據集合。
本題正確答案為D。
3.下列字元串不符合標識符規定的是【 】。
A) SUM B) sum C) 3cd D) end
分析:標識符規定只能由26個英文字母(大小寫均可),數字0~9和下劃線組成,且不能以數字開頭,題中的3cd不符合規定。
本題正確答案為C。
4.下面能正確表示八進制數的是【 】。
A) 0x16 B) 029 C) -114 D) 033
分析:選項A)以0x開頭是十六進制數,選項B)雖然是0開頭,但出現了數字9,選項C)是十進制數。
本題正確答案為D。
5.下面四個選項中,均是合法實數的選項是【 】。
A) 2e-4.2 B)-0.50 C) 0.2e-.5 D)-e5
分析:實數有兩種表示形式:小數形式和指數形式,小數形式必須有小數點,指數形式中,字母e之前必須有數字,e之後必須是整數。選項A)中的"2e-4.2",選項C)中的"0.2e-.5",選項D)中的"-e5"均是不合法的。
本題正確答案為B。
6.C語言中,字元型數據在內存中存儲形式是【 】。
A) 原碼 B) 反碼 C) 補碼 D) ASCII碼
分析:C語言中int型數據是以補碼形式存放的,字元型數據是以ASCII碼形式存放的。
本題正確答案為D。
7.下列正確的字元型常量是【 】。
A) "a" B) ′\\\\′ C) "\\r" D) 277
分析:字元常量的定義是用單引號括起來的一個字元,A和C的定界符不對,D超過了char型數據的表示範圍,′\\\\′是轉義字元。
本題正確答案為B。
8.若有說明語句char ch1=′\\x41′;則ch1【 】。
A) 包含4個字元 B) 包含3個字元 C) 包含2個字元 D) 包含1個字元
分析:"\\x41"中的"41"是十六進制數,即十進制的65,題中ch1存放的65是字母"A"的ASCII碼。
本題正確答案為D。
9.下列程序段輸出的字元串長度為【 】。
printf("\\\\aaa\\′ccc\\bddd\\"");
A) 11 B) 12 C) 13 D) 17
分析:\\\\、\\′、\\b和\\"為轉義字元,程序輸出結果為:\\aaa′ccddd"。
本題正確答案為A。
10.下列運算符中,要求運算對象必須是整數的是【 】。
A) / B) * C) % D) !
分析:題目中"/"、"*"、"!"的運算對象既可以整數,也可以是實數,只有取余數運算符"%"要求運算對象必須是整數。
本題正確答案為C。
11.下面合法的賦值語句是【 】。
A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316;
分析:賦值號左端不能為表達式,選項A)是錯的;賦值號不能將字元串賦給某個變數,選項B)也是錯的;增量運算符「++」不能用於表達式,選項C)也是錯的。
本題正確答案為D。
12.已知a為int型,b為double型,c為float型,d為char型,則表達式a+b*c-d/a結果的類型為【 】。
A) int 型 B) float型 C) double型 D) char型
分析:不同類型數據混合運算的轉換規律是:運算前float型數據會自動轉換為double型,char型數據會自動轉換為int型。運算時int型數據和double型數據要先化為相同類型,即double型,運算結果也為double型。
本題正確答案為C。
13.執行以下程序段後的輸出結果是【 】。
int x=0xcde;
printf("M,%4o,%4x\\n",x,x,x);
A) 3294,6336,cde B) 3294,6336,xcde C) 3294,06336,0xcde D) 3294,6336,0cde
分析:0xcde是十六進制數,寫成二進制數形式為:1100 1101 1110,按八進制送出時,是從右向左3位二進制數寫成1位,按十六進制形式送出時,是從右向左4位二進制數寫成1位。
本題正確答案為A。
14.下面的程序運行後輸出為【 】。
#include
#include
main( )
{ int a,b;
float c;
b=5;c=6;c=b+7;b=c+1;
a=sqrt((double)b+c);
printf("%d,%f,%d",a+6,c,b);
}
A) 11.000000,12.000000,13.000000
B) 11.000000,12.000000,13
C) 11.0000000,12,13
D) 11,12.000000,13
分析:C語言允許將一種類型的數據賦給另一種類型的變數,但是變數的類型並不會因為賦值而發生改變,如本題中將b+7,即12賦給float型變數c,c值應為12.000000而不是整數12,同樣a=sqrt((double)b+c),賦值號右邊是雙精度數,但由於a是整形變數,故a的值為5。
本題正確答案為D。
15.執行以下程序後x的值為【 】。
unsigned int x=65535;
printf("%d\\n",x);
A) 65535 B) 1 C) 有錯誤 D) -1
分析:題中將x定義成無符號整數,並且已初始化為:1111111111111111,若按%d格式輸出,則最高位的1被當成了符號,1111111111111111成了負數的補碼,輸出結果為-1。
本題正確答案為D。
二、填空題
1.下面程序段的功能是輸出大寫字母對應的小寫字母的ASCII碼,請填空。
char ch;
scanf("%c",&ch);
ch=(ch>=′A′&&ch<=′Z′)?(【1】):ch
printf("【2】\\n",ch);
分析:題目中條件運算為判斷輸入字母是否為大寫,當ch>=′A′&&ch<=′Z′為真時,將其轉換成對應的小寫字母,需ASCII碼值加上32,已知題意是將大寫字母對應的小寫字母ASCII值輸出,所以printf語句中的輸出格式應為十進制格式。
本題正確答案為 【1】 ch+32, 【2】 %d。
2.下面程序段的執行結果是x=【3】,y=【4】。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d",x,y);
分析:此題考查逗號表達式的概念,因逗號運算符的優先順序比賦值號還低,所以執行x=a+1,b+6時,x得到的是a+1的值。
本題正確答案為 【3】 4, 【4】 11。
3.下面程序執行後k的值為【5】。
int a=1,b=2,c=3,d=4,k;
k=a>b?a:c>d?c:d
分析:因題中a>b的值為假,故求解表達式k=a>b?a:c>d?c:d相當於求k=a>b?a:(c>d?c:d)。
本題正確答案為 【5】 4。
4.已知:int a=5;則執行a+=a-=a*a;語句後,a的值為【6】。
分析:a+=a-=a*a的運算順序是從右向左,相當於求a+=(a-=a*a),其中小括弧內的運算得a=5-5*5即a=-20,下一步再求a+=a,即a=a+a,將-20代入得a=-40。
本題正確答案為 【6】 -40。
5.下面程序的運行結果是x=【7】,y=【8】。
main( )
{ float x=4.9;int y;
y=(int)x;
printf("x=%f,y=%d",x,y); }
分析:強制類型變換並不改變x的原值,x仍為4.9,而變換得到的是中間結果,此題將中間結果賦給了y,另外注意是舍棄小數部分,而不是四捨五入。
本題正確答案為 【7】 4.900000 【8】 4。

試題四
一、單項選擇題
1.對if語句中表達式的類型,下面正確的描述是【 】。
A) 必須是關系表達式
B) 必須是關系表達式或邏輯表達式
C) 必須是關系表達式或算術表達式
D) 可以是任意表達式
分析:C語言中if語句的表達式可以是任意類型,只要表達式的值非0就算作真,是0就作為假。
本題正確答案為D。
2.多重if_else語句嵌套使用時,尋找與else配套的if方法是【 】。
A) 縮排位置相同的if
B) 其上最近的if
C) 下面最近的if
D) 同行上的if
分析:多重if_else嵌套時,else總是與它上面最近的if配對。
本題正確答案為B。
3.以下錯誤的if語句是【 】。
A) if(x>y) z=x;
B) if(x==y) z=0;
C) if(x!=y) printf("%d",x) else printf("%d",y);
D) if(x
分析:選項C)中的第一個printf語句後面丟了分號,所以是錯誤的。
本題正確答案為C。
4.以下判斷兩個字元串相等的正確方法是【 】。
A) if(str1=str2)
B) if(str1==str2)
C) if(strcpy(str1,str2)=0)
D) if(strcmp(str1,str2)==0)
分析:選項A)中用了賦值號,顯然是錯誤的,選項C)中的字元串拷貝函數strcpy不能比較大小,選項B)中的"=="號也不具有串比較功能,比較兩個字元串的大小應用字元串比較函數。
本題正確答案為D。
5.執行下面程序的正確結果是【 】。
main( )
{ float a=1.9;
switch(a)
{ case 0: printf("0000");
case 1: printf("1111");
case 2: printf("2222");
}
printf("%f",a);
}
A) 1.900000
B) 111122221.900000
C) 22221.900000
D) 0000111122221.900000
分析:題中定義了單精度實數a,所以最下面的printf語句輸出有6位小數,另外C語言在判斷switch表達式的值時,是按整型數據處理的(但不4舍5入),所以程序是從case 1處開始執行的,因沒有break語句,接著會執行case 2。
本題正確答案為B。
6.以下程序的輸出為【 】。
main( )
{ int a=20,b=30,c=40;
if(a>b) a=b,
b=c;c=a;
printf("a=%d,b=%d,c=%d",a,b,c);

希望對你有所幫助!!! 也希望能賞點分!!!謝謝

6. c語言計算機二級考試選擇題如圖

全國計算機二級考試試題題庫(附答案)
下列各題 A) 、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項在答題
卡相應位置上塗黑,答在試卷上不得分。
(1) 應用軟體是指
A) 所有能夠使用的軟體 B) 能被各應用單位共同使用的某種軟體
C) 所有微機上都應使用的基本軟體 D) 專門為某一應用目的而編制的軟體
(2) 下列述敘中錯誤的是
A) 計算機要經常使用不要長期閑置不用
B) 為了延長計算機的壽命,應避免頻繁開關計算機
C) 在計算機附近應避免磁場干擾
D) 計算機用幾小時後,應關機一會兒再用
(3) 下列字元中,ASCII碼值最小的是
A) A B) a C) Z D) x
(4) 用晶體管作為電子器件製成的計算機屬於
A) 第一代 B) 第二代 C) 第三代 D) 第四代
(5) 下列各不同進制的四個無符號數中,最小的數是
A) ()2 B) (37)8 C) (75)10 D) (2A)16
(6) 二進制數轉換成十六進制數是
A) B) C) D)
(7) 下列各無符號十進制數中,能用八位二進製表示的是
A) 296 B) 333 C) 256 D) 199
(8) 計算機的軟體系統可分類為
A) 程序與數據 B) 系統軟體與應用軟體
D) 操作系統與語言處理程序 D) 程序、數據與文檔
(9) 486機中的CPU同時能處理的二進制位數為
A) 8 B) 16 C) 32 D) 64
(10) 在使用計算機的過程中,需要重新啟動DOS,則要
A) 按Ctrl+Break鍵 B) 按^C鍵 C) 按Ctrl+Alt+Del鍵 D) 按^H鍵
(11) 現要從軟盤啟動DOS(軟盤中已存有DOS系統),設有如下一些操作:①打開計算機
電源;②將該軟盤插入A驅動器;③關好A驅動器門。則冷啟動的操作順序應為
A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→①
(12) 設當前盤中某一文件路徑為\A\C\B\,當前目錄為\A。下列命令中錯誤的是
A) CD.. B) RD \A\C\B
C) TYPE \A\C\B\ D) TYPE C\B\
(13) 設當前盤中的根目錄下有一子目錄AB,在子目錄AB下有一文件。現要查看文件
的內容,應使用命令
A) TYPE \AB B) TYPE \AB\
C) TYPE \ D) DIR \AB\
(14) 自動批處理文件必須放在
A) C盤根目錄中 B) A盤根目錄中
C) 啟動盤的任一個目錄中 D) 啟動盤的根目錄中
(15) 設當前盤當前目錄為C:\USER\XY\P,且當前盤當前目錄為空,則下列命令中能正
確執行的是
A) RD C:\USER\XY\P B) RD USER\XY\P
C) MD \USER\XY\P\USER D) MD \USER\XY\P\X\Y
(16) 下列DOS命令中,合法的是
A) DISKCOMP B) TYPE >>
C) COMP A: B: D) COMP A: A:
(17) 設當前盤為C盤,所用的所有軟盤已格式化,且容量相同,則下列DOS命令中錯
誤的是
A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C:
(18) 下列DOS命令中錯誤的是
A) TYPE >PRN B) TYPE PRN
C) COPY *.TXT PRN D) COPY CON PRN
(19) 下列四組DOS命令中,互相等價的一組是
A) COPY A:*.* B:與DISKCOPY A: B:
B) COPY +與TYPE >>
C) COPY + 與COPY +
D) TYPE *.FOR>CON與COPY *.FOR CON
(20) 設C盤目錄結構如下:
且C盤根目錄下文件的內容為
CD FORTRAN
CD \TC
如果在A驅動器中插入一張根目錄中只有擴展名為.C的若干文件(即A盤中無DOS系統
文件)的軟碟片,則由C盤啟動DOS系統後,第一次鍵入下列命令中,正確的是
A) COPY A:\*.C B) COPY A:\*.C TC
C) COPY A:\*.C FORTRAN D) CD USER
(21) C語言提供的合法的數據類型關鍵字是
A) Double B) short C) integer D) Char
(22) 在C語言中,合法的長整型常數是
A) 0L B) 4962710 C) D)
(23) 表達式:10!=9的值是
A) true B) 非零值 C) 0 D) 1
(24) 合法的C語言中,合法的長整型常數是
A) '\t' B) "A" C) 65 D) A
(25) 若有說明和語句:
int a=5;
a++;
此處表達式a++的值是
A) 7 B) 6 C) 5 D) 4
(26) 在下列選項中,不正確的賦值語句是
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
(27) 若有說明:int i,j=7, *p=&i;,則與i=j;等價的語句是
A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;
(28) 不能把字元串:Hello!賦給數組b的語句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";
(29) 若有以下說明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
則數值為4的表達式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
(30) 若有以下說明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則數值為6的表達式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5
(31) 若有以下說明:
int w[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
則數值為4的表達式是
A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]
(32) 若程序中有下面的說明和定義
struct abc
{int x;char y;}
struct abc s1,s2;
則會發生的情況是
A) 編譯進錯 B) 程序將順利編譯`連接`執行
C) 能順利通過編譯`連接`但不能執行 D) 能順利通過編譯`但連接出錯
(33) 能正確表示a≥10或a≤0的關系表達式是
A)a>=10 or a<=0 B)a>=10│a<=0
C)a>=10││a<=0 D)a>=10 ││a<=0
(34) 下面程序的輸出是
main()
{ int x=3,y=6,a=0;
while(x++!=(y+=o1))
{ a+o=1;
if(y
#include
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(35) 下面程序的輸出是
main()
{ char *a="";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++; }
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1
C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8
(36) 下面程序的輸出是
main()
{int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}
A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b
(37) 若有以下程序段,w和k都是整型變數:

w=k;
LB: if(w==0) go to LE;
w--;
printf("*");
goto LB;
LE: ┆
則不能與上面程序段等價的循環語句是
A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*");
C)w=k; D)w=k;
while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0);
(38) 若有說明,double *p,a;則能通過scanf語句正確給輸入項讀入數據的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(39) 當執行下面程序且輸入:ABC時,輸出的結果是
#include
#include
main()
{ char ss[10]="12345";
gets(ss);printf("%s\n",ss); }
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(40) 若有以下的說明和語句:
main()
{int t[3][2], *pt[3],k;
fpr(k=o; k<3;k++)pt[k]=t[k];
}
則以一選項中能正確表示t數組元素地址的表達式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
(41) 下面程序輸出數組中的最大值,由s指針指向該元素.
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a, s=a; p-a<10; p++)
if(---?---)s=p;
printf("The max:%d",*s):
}
則在if語句中的判斷表達式應該是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(42) 下面程序的輸出是
#include
main()
{ char*a="abcdefgh";
fun(a);puts(a); }
fun (char * s)
{ int x=0,y;char c;
for(y=strlen(s)-1;x
A)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba
(43) 若有以下函數調用語句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函數調用語句
中實參的個數是
A)3 B)4 C)5 D)6
(44) 下面程序的輸出是
main()
{ int t=1; fun(fun(t));}
fun(int h)
{ static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n"); return(a[h]);}
A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,
1,5,9, 1,3,5, 0,4,8, -1,3,7,
(45) C語言中,函數的隱含存儲類別是
A)auto B)static C)extern D)無存儲類別
(46) 下面程序的輸出是
int w=3;
main()
{ int w=10; printf("%d\n",fun(5)*w); }

7. 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

8. 全國計算機等級考試二級C語言歷年試題及答案

這里有一份最全的考研歷年真題資料分享給你

鏈接:

提取碼:w2wt

通過不斷研究和學習歷年真題,為考生沖刺階段復習提分指點迷津,做真題,做歷年真題集,對照考綱查缺補漏,提高實戰素養,制定做題策略,規劃方向;

若資源有問題歡迎追問!

9. 國家計算機二級c語言機試題庫

今年最新版的二級C題題庫 已經發給你了 注意查收啊 祝你考試順利通過! 題目的前一百題是題庫 後面的幾十題是補充的一些常見題型歸類。