① 全國計算機等級考試二級c語言歷年試題及答案
這里有一份最全的考研歷年真題資料分享給你
鏈接:
通過不斷研究和學習歷年真題,為考生沖刺階段復習提分指點迷津,做真題,做歷年真題集,對照考綱查缺補漏,提高實戰素養,制定做題策略,規劃方向;
若資源有問題歡迎追問!
② 計算機二級C語言題目求解析 麻煩了 根本就沒教過的 馬上要考了
1.B.
棧是「死胡同」,就是進去了只能等後邊的人都走了才能原路退出來,所以是「先進後出」;
隊列就是個通的胡同了,先進的人從另一個出口就走了,所以是「先進先出」
循環隊列就是 咬了自己尾巴的貪吃蛇,也是沒有岔路一條道的,所以也是線性表,你只要清楚一點:線性結構:只有一條道,沒有岔路口,沒有選擇。
2。A
棧支持子程序調用,調用子程序的過程:當前程序轉出去執行子程序,子程序執行結束後才能回到當前程序繼續執行,因為說了棧先進後出,所以能保證子程序的完整執行。
3.D
二叉樹規律:度為2的結點總是比度為0 的多一個。
4.D
5。C
6.D
7.B
耦合是模塊間的,內聚是模塊內部的,當然是內聚越高,耦合越小越有獨立性。
8.A
很明顯A和B中選一個,那麼應用系統中的核心是資料庫設計,資料庫系統設計是Oracle 等資料庫公司考慮的事情。
③ 求計算機二級考試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__;
④ 求全國計算機等級考試二級C語言的真題
09年3月全國計算機等級考試二級C筆試真題(附答案)(考試時間90分鍾,滿分100分)一、選擇題(1)下列敘述中正確的是 A) 棧是先進先出(FIFO)的線性表B) 隊列是先進先出(FIFO)的線性表C) 循環隊列是非線性結構D) 有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構(2)支持子程序調用的數據結構是 A) 棧 B) 樹 C) 隊列 D)二叉樹(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是 A)10 B)8 C)6 D)4(4)下列排序方法中,最壞情況下比較次數最少的是 A)冒泡排序 B)簡單選擇排序 C)直接插入排序 D)堆排序(5)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於應用軟體的是 A)編譯軟體 B)操作系統 C)教務管理系統 D)匯編程序(6)下面敘述中錯誤的是A)軟體測試的目的是發現錯誤並改正錯誤B)對被調試的程序進行「錯誤定位」是程序調試的必要步驟C)程序調試通常也稱為DebugD)軟體測試應嚴格執行測試計劃,排除測試的隨意性(7)耦合性和內聚性是對模塊獨立性度量的兩個標准。下列敘述中正確的是 A)提高耦合性降低內聚性有利於提高模塊的獨立性B)降低耦合性提高內聚性有利於提高模塊的獨立性C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度D)內聚性是指模塊間互相連接的緊密程度(8)資料庫應用系統中的核心問題是A)資料庫設計 B)資料庫系統設計C)資料庫維護 D) 資料庫管理員培訓(9)有兩個關系R,S如下:R SA B C A Ba 3 2 a 3b 0 1 b 0c 2 1 c 2 由關系R通過運算得到關系S,則所使用的運算為A) 選擇 B)投影 C) 插入 D)連接(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為A) 屬性 B)鍵 C) 關系 D) 域(11)以下選項中合法的標識符是 A) 1-1 B)1—1 C)-11 D)1--(12)若函數中有定義語句:int k;,則 A)系統將自動給k賦初值0 B)這時k中值無定義 C)系統將自動給k賦初值-1 D)這時k中無任何值(13)以下選項中,能用作數據常量的是 A)o115 B) 0118 C)1.5e1.5 D) 115L(14)設有定義:int x=2; ,以下表達式中,值不為6的是A) x*=x+1 B) x++,2*x C)x*=(1+x) D)2*x,x+=2(15)程序段:int x=12; double y=3.141593; printf(「%d%8.6f」,x,y);的輸出結果是A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593(16)若有定義語句:double x,y,*px,*py,執行了px=&x, py=&y;之後,正確的輸入語句是 A)scanf(「%f%f」,x,y); B) scanf(「%f%f」,&x,&y); C) scanf(「%lf%le」,px,py); D) scanf(「%lf%lf」,x,y);(17)以下是if語句的基本形式:if (表達式) 語句,其中表達式A)必須是邏輯表達式 B)必須是關系表達式C)必須是邏輯表達式或關系表達式 D)可以是任意合法的表達式(18)有以下程序#include <stdio.h>main(){int x;</p><p>scanf(「%d」,&x);</p><p>if(x<=3); else</p><p>if(x!=10) printf(「%d\n」,x);</p><p>}程序運行時,輸入的值在哪個范圍才會有輸出結果A)不等於10的整數 B)大於3且不等於10的整數C) 大於3或等於10的整數 D)小於3的整數(19)有以下程序#include<stdio.h>Main(){ int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3) printf(「%d,%d,%d\n」,a,b,c);else printf(「%d,%d,%d\n」,a,b,c);else printf(「%d,%d,%d\n」,a,b,c);}程序運行後的輸出結果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序中的變數已正確定義for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(「*」);程序段的輸出結果是A)******** B)**** C)** D)*(21)有以下程序#include<stdio.h>main(){char *s=(「ABC);</p><p>do</p><p>{printf(「%d」,*s%10);s++;</p><p>}while(*s);}注意,字母A的ASCII碼值為65。程序運行後的輸出結果是A)5670 B)656667 C)567 D)ABC(22)設變數已正確定義,以下不能統計出一行中輸入字元個數(不包含回車符)的程序段是A)n=0;while((ch=getchar())!=』\n』)n++; B) n=0;while(getchar()!=』\n』)n++;C)for(n=0; getchar()!=』\n』;n++); D)n=0;for(ch=getchar();ch!=』\n』;n++);(23)有以下程序#include<stdio.h>main(){ int a1,a2;char c1,c2;scanf(「%d%c%d%c」,&a1,&c1,&a2,&c2);printf(「%d,%c,%d,%c」,&1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的是為34,c1的值為字元a,c2的值為字元b,程序輸出結果是:12,a,34,b,則正確的輸入格式是(以下 代表空格,<CR>代表回車)A)12a34b<CR> B)12 a 34 b<CR>C)12,a,34,b<CR> D)12 a34 b<CR>(24)有以下程序#include<stdio.h>int f(int x,int y){return()y-x)*x);}main(){int a=3,b=4,c=5,d;</p><p>d=f(f(a,b),f(a,c));</p><p>printf(「%d\n」,d);</p><p>}程序運行後的輸出結果是A)10 B)9 C)8 D)7(25)有以下程序#include<stdio.h>void fun(char *s){while(*s)</p><p> { if(*s%2==0) printf(「%c」,*s);</p><p>s++;</p><p> }}main(){ char a[]={「good」}; fun(a);printf(「\n」);}注意:字母a的ASCII碼值為97,程序運行後的輸出結果是A)d B)go C)god D)good(26)有以下程序#include <stdio.h>void fun( int *a,int *b){int *c;</p><p>c=a;a=b;b=c;</p><p>}main(){int x=3,y-5,*P=&x,*q=&y;</p><p> fun(p,q);printf(「%d,%d,」,*p,*q);</p><p>fun(&x,&y);printf(「%d,%d\n」,*p,*q);</p><p>}程序運行後的輸出結果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3(27)有以下程序#include <stdio.h>void f(int *p,int *q );main(){ int m=1,n=2,*r=&m; f(r,&n);printf(「%d,%d」,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}程序運行後輸出的結果是A)1,3 B)2,3 C)1,4 D)1,2(28)以下函數按每行8個輸出數組中的數據void fun( int *w,int n){ int i; for(i=0;i<n;i++) {________</p><p> printf(「%d」,w);</p><p> } printf(「\n」);}下劃線處應填入的語句是A)if(i/8==0)print(「\n」); B) if(i/8==0)continue;C) if(i%8==0)print(「\n」); D) if(i%8==0)continue;(29)若有以下定義 int x[10],*pt=x;則對x數組元素的正確應用是A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3 (30)設有定義:char s[81];int i=10;,以下不能將一行(不超過80個字元)帶有空格的字元串真確讀入的語句或語句組是A gets(s) B)while((s[i++]=getchar())!=」\n」;s=」\0」;C)scanf(「%s」,s);D)do{scanf(「%c」,&s);}while(s[i++]!=」\n」);s=」\0」;(31)有以下程序#include <stdio.h>main(){ char *a[ ]={「abcd」,」ef」,」gh」,」ijk」};int I; for (i=0;i<4;i++) printf(「%c」,*a);}程序運行後輸出的結果是A)aegi B)dfhk C)abcd D)abcdefghijk(32)以下選項中正確的語句組是A)char s[];s=」BOOK!」; B) char *s;s={」BOOK!」};C)char s[10];s=」BOOK!」; D) char *s;s=」BOOK!」;(33)有以下程序#include <stdio.h>int fun{int x,int y}{ if(x==y) return(x); else return((x+y)/2)}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)設函數中有整型變數n,為保證其在未賦值的情況下初值為0,應選擇的存儲類別是A)auto B) register C)static D)auto或register(35)有以下程序#include <stdio.h>int b=2;int fun(int *k){ b=*k+b;return(b);}main(){ int a[10]={1,2,3,4,5,6,7,8},I; for(i=2;i<4;i++) {b=fun(&a)+b;printf(「%d」,b);} printf(「\n」);}程序運行後輸出的結果是A)10 12 B)8 10 C)10 28 D)10 16(36)有以下程序#include <stdio.h>#define PT 3.5;#define S(x) PT*x*x;main(){ int a=1, b=2; printf(「%4.1f\n」,S(a+b));}程序運行後輸出的結果是A)14.0 B)31.5 C)7.5 D)程序有錯無輸出結果(37)有以下程序#include <stdio.h>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)2,3 C)3,4 D)4,1(38)設有宏定義:#include IsDIV(k,n) ((k%n==1)?1:0且變數m已正確定義並賦值,則宏調用:IsDIV(m,5)&& IsDIV(m,7)為真時所要表達的是A)判斷m是否能被5或者7整除B)判斷m是否能被5和7整除C)判斷m被5或者7整除是否餘1D)判斷m被5和7整除是否餘1(39)有以下程序#include <stdio.h>main(){ int a=5,b=1,t; t=(a<<2|b); printf(「%d\n」,t) }程序運行後的輸出結果是A)21 B)11 C)6 D)1(40)有以下程序#include <stdio.h>main(){ FILE *f; f=fopen(「filea.txt」,」w」); fprintf(f,」abc」); fclose(f);}若文本文件filea.txt中原有內容為:hello,則運行以上程序後,文件filea.txt中的內容為A) helloabc B)abclo C)abc D)abchello 二、填空題(每空2分,共30分) 請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有 【1】 個元素。(2)軟體測試可分為白盒測試和黑盒測試。基本路徑測試屬於 【2】 測試。(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和 【3】 。(4)資料庫系統的核心是 【4】(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是 【5 】框。(6)表達式(int)((double)(5/2)+2.5)的值是【6】(7)若變數x、y已定義為int類型且x的值為99,y的值為9,請將輸出語句printf(【7】,x/y);補充完整,使其輸出的計算結果形式為:x/y=11(8)有以下程序#include <stdio.h>main( ){ char c1,c2; scanf(「&c」,&c1); while(c1<65||c1>90) scanf(「&c」,&c1); c2=c1+32; printf(「&c, &c\n」,c1,c2);}程序運行輸入65回車後,能否輸出結果、結束運行(請回答能或不能)【8】 。 (9)以下程序運行後的輸出結果是【9】#include <stdio.h>main( ){int k=1,s=0;</p><p>do{</p><p>if{((k&2)!=0)continue;</p><p>s+=k;k++;</p><p>}while(k)10);printf(「s=&d/n」,s);} (10)下列程序運行時,若輸入labced12df<回車> 輸出結果為【10】 #include <stdio.h>main( ){char a =0,ch;</p><p>while((ch=getchar())!=』\n』)</p><p>{if(a&2!=0&&(ch>』a』&&ch<=』z』)) ch=ch-『a』+』A』;</p><p>a++;putchar(ch);</p><p>}printf(「\n」);}(11)有以下程序,程序執行後,輸出結果是【11】#include <stdio.h>void fun (int *a){a[0=a[1];]}main(){int a[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--) fun{&a};for(i=0;i<10;i++) printf(「&d」,a);printf(「\n」);}(12)請將以下程序中的函數聲明語句補充完整#include <stdio.h>int【12】 ;main( ){int x,y,(*p)();</p><p>p=max;</p><p>printf(「&d\n」,&x,&y);</p><p>}Int max(int a,int b){return (a>b/a:b);}(13)以下程序用來判斷指定文件是否能正常打開,請填空#include <stdio.h>main( ){FILE *fp;</p><p>if (((fp=fopen(「test.txt」,」r」))==【13】))</p><p>printf(「未能打開文件!\n」);</p><p>else</p><p>printf(「文件打開成功!\n」);</p><p>(14)下列程序的運行結果為【14】</p><p>#include <stdio.h></p><p>#include <string.h></p><p>struct A</p><p>{int a;char b[10];double c;};void f (struct A *t);main(){struct A a=(1001,」ZhangDa」,1098,0);</p><p>f(&a);printf(「&d,&s,&6,if\n」,a.a,a.b,a.c);</p><p>}void f(struct A *t){strcpy(t->b,」ChangRong」); }(15)以下程序把三個NODETYPE型的變數鏈接成一個簡單的鏈表,並在while循環中輸出鏈表結點數據域中的數據,請填空#include <stdio.h>struct node{int data; struct node *next;};typedef struct node NODETYPE;main(){NODETYPE a,b,c,*h,*p;</p><p>a. data=10;b.data=20;c.data=30;h=&a;</p><p>b. next=&b;b.next=&c;c.next=』\0』;</p><p>p=h;</p><p>while(p){printf(「&d」,p->data);【15】;}} 2009年4月NCRE二級C參考答案選擇題:1~10: DACDC ABABC11~20:CBDDA CDBCB21~30:CDABA BACBC31~40:ADBCC CBDAC 填空題:(1)19(2)白盒(3)順序結構(4)資料庫管理系統(DBMS)(5)菱形(6)4(7)"x/y=%d"(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(int a,int b)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—>next
⑤ 計算機二級C語言答案詳解
C語言試題大難詳解?要看你是哪套題目啊?
不過你去這個網站上找找,應該會找到你所需要的資料。
http://www.shangxueba.com/share/
⑥ 計算機二級考試(江西考區)試題c語言及答案
2010年3月全國計算機等級考試二級C語言筆試真題及參考答案一、選擇題
(1)下列敘述中正確的是
A)對長度為n的有序鏈表進行查找,最壞清況下需要的比較次數為n
B)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)
C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n)
D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(nlog2n)(2)演算法的時間復雜度是指
A)演算法的執行時間
B)演算法所處理的數據量
C)演算法程序中的語句或指令條數
D)演算法在執行過程中所需要的基本運算次數(3)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於系統軟體的是
A)編輯軟體
B)操作系統
C)教務管理系統
D)瀏覽器(4)軟體(程序)調試的任務是
A)診斷和改正程序中的錯誤
B)盡可能多地發現程序中的錯誤
C)發現並改正程序中的所有錯誤
D)確定程序中錯誤的性質(5)數據流程圖(DFD圖)是
A)軟體概要設計的工具
B)軟體詳細設計的工具
C)結構化方法的需求分析工具
D)面向對象方法的需求分析工具(6)軟體生命周期可分為定義階段,開發階段和維護階段。詳細設計屬於
A)定義階段
B)開發階段
C)維護階段
D)上述三個階段(7)資料庫管理系統中負責數據模式定義的語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言(8)在學生管理的關系資料庫中,存取一個學生信息的數據單位是
A)文件
B)資料庫
C)欄位
D)記錄(9)資料庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬於資料庫設計的
A)需求分析階段
B)邏輯設計階段
C)概念設計階段
D)物理設計階段(10)有兩個關系R和T如下:
則由關系K得到關系T的操作是
A)選擇
B)投影
C)交
D)並(11)以下敘述正確的是
A)C語言程序是由過程和函數組成的
B)C語言函數可以嵌套調用,例如:fun(fun(x))
C)C語言函數不可以單獨編譯
D)C語言中除了main函數,其他函數不可作為單獨文件形式存在(12)以下關於C語言的敘述中正確的是
A)C語言中的注釋不可以夾在變數名或關鍵字的中間
B)C語言中的變數可以在使用之前的任何位置進行定義
C)在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D)C語言的數值常量中夾帶空格不影響常量值的正確表示(13)以下C語言用戶標識符中,不合法的是
A)_1
B)AaBc
C)a_b
D)a-b(14)若有定義:double a=22;int i=0,k=18;,則不符合C語言規定的賦值語句是
A)a=a++,i++;
B)i=(a+k)<=(i+k);
C)i=a%11;
D)i=!a;(15)有以下程序
#include<stdio.h>
main()
{ char a,b,c,d;
scanf(「%c%c」,&a,&b);
c=getchar(); d=getchar();
printf(「%c%c%c%c\n」,a,b,c,d);
}
當執行程序時,按下列方式輸入數據(從第1列開始,<CR>代表回車,注意:回車也是一個字元)
12<CR>
34<CR>
則輸出結果是
A)1234
B)12
C)12
3
D)12
34(16)以i關於C語言數據類型使用的敘述中錯誤的是
A)若要准確無誤差的表示自然數,應使用整數類型
B)若要保存帶有多位小數的數據,應使用雙精度類型
C)若要處理如「人員信息」等含有不同類型的相關數據,應自定義結構體類型
D)若只處理「真」和「假」兩種邏輯值,應使用邏輯類型(17)若a是數值類型,則邏輯表達式(a==1)||(a!=1)的值是
A)1
B)0
C)2
D)不知道a的值,不能確定(18)以下選項中與if(a==1)a=b; else a++;語句功能不同的switch語句是
A)switch(a)
{case:a=b;break;<br>default:a++;<br>}<br>B)switch(a==1)<br>{case 0:a=b;break;<br>case 1:a++;<br>}
C)switch(a)
{default:a++;break;<br>case 1:a=b;<br>}
D)switch(a==1)
{case 1:a=b;break;<br>case 0:a++;<br>}(19)有如下嵌套的if語句
if (a<b)
if(a<c)k=a;
else k=c;
else
if(b<c) k=b;
else k=c;
以下選項中與上述if語句等價的語句是
A)k=(a<b)?a:b;k=(b<c)?b:c;
B)k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C)k=(a<b)?((a<c)?a:):((b<c)?b:c);
D)k=(a<b)?a:b;k=(a<c)?a:c;(20)有以下程序
#include<s七dio.h>
main()
{in i,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>O;j--)
{if(i*j)>3)break;<br>m=i*j;<br>}
}
printf("m=%d\n",m);
}
程序運行後的輸出結果是
A)m=6
B)m=2
C)m=4
D)m=5(21)有以下程序
#include(stdio.h>
main()
{int a=l;b=2;
for(;a<8;a++) {b+=a;a+=2;}
printf("%d,%d\n",a,b);
}
程序運行後的輸出結果是
A)9,18
B)8,11
C)7,11
D)10,14(22)有以下程序,其中k的初值為八進制數
#include <stdio.h>
main()
{int k=011;
printf("%d\n",k++);
}
程序運行後的輸出結果是
A)12
B)11
C)10
D)9(23)下列語句組中,正確的是
A)char *s;s="Olympic";
B)char s[7];s="Olympic";
C)char *s;s={"Olympic"};
D)char s[7];s={"Olympic"};(24)以下關於return語句的敘述中正確的是
A)一個自定義函數中必須有一條return語句
B)一個自定義函數中可以根據不同情況設置多條return語句
C)定義成void類型的函數中可以有帶返回值的return語句
D)沒有return語句的自定義函數在執行結束時不能返回到調用處(25)下列選項中,能正確定義數組的語句是
A)int num[0..2008];
B)int num[];
C)int N=2008;
int num[N];
D)#define N 2008
int num[N];(26)有以下程序
#include <stdio.h>
void fun(char *c,int d)
{*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
main()
{char b='a',a='A';
fun(&b,a);printf("%e,%e\n",b,a);
}
程序運行後的輸出結果是
A)b,B,b,A
B)b,B,B,A
C)a,B,B,a
D)a,B,a,B(27)若有定義int(*Pt)[3];,則下列說法正確的是
A)定義了基類型為int的三個指針變數
B)定義了基類型為int的具有三個元素的指針數組pt
C)定義了一個名為*pt、具有三個元素的整型數組
D)定義了一個名為pt的指針變數,它可以指向每行有三個整數元素的二維數組(28)設有定義double a[10],*s=a;,以下能夠代表數組元素a[3]的是
A)(*s)[3]
B)*(s+3)
C)*s[3]
D)*s+3(29)有以下程序
#include(stdio.h)
main()
{int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;
for(i=0;i<5;i++) s=s+a[b[i]]);
printf("%d\n", s);
}
程序運行後的輸出結果是
A)6
B)10
C)11
D)15(30)有以下程序
#include <stdio.h>
main()
{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=ij<=1;j++) t+=b[i][b[j][i]];
printf("%d\n",t);
}
程序運行後的輸出結果是
A)1
B)3
C)4
D)9(31)若有以下定義和語句.......這是全國2010全國c語言考試的部分題目,樓主需要的話可以自己去下載轉自:酷8學習網 www.k8xx.com
⑦ 2010年全國計算機等級考試二級c語言真題及答案
大學學習資料免費下載網 現在有試題和答案啦
在「等級考試」-「計算機二級」版塊
標題: 2010年3月二級C語言筆試試卷及參考答案
內含word版和pdf版試題和答案
參考資料:大學學習資料免費下載網(哲學、法學、文學、理學、工學、農學、醫學、管理學等考研資料、等級考試、課後答案等資料全集)
⑧ 全國計算機二級考試(c語言)的題型及各題分值是怎樣的(筆試和上機)
全國計算機二級考試(c語言)的題型及各題分值是怎樣的題型分值分布:
1、單項選擇題,40題,40分(含公共基礎知識部分10分)。
2、程序填空題,2~3個空,18分;上機題。
3、程序改錯題,2~3處錯誤,18分;上機題。
4、程序設計題,1題,24分;上機題。
二級公共基礎知識在各科考試選擇題中體現。程序設計部分,主要考查考生對程序設計語言使用和編程調試等基本能力,在選擇題和操作題中加以體現。
(8)計算機二級考試c語言題庫及解析擴展閱讀:
二級c語言考試要求:
1、熟悉Visual C++2010 Express集成開發環境。
2、掌握結構化程序設計的方法,具有良好的程序設計風格。
3、掌握程序設計中簡單的數據結構和演算法並能閱讀簡單的程序。
4、在Visual C++2010 Express集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。
⑨ 20分求計算機二級機c語言試題庫,要最新的,謝謝了
2011年計算機二級考試C語言十套上機題
1.填空題
請補充函數fun(),該函數的功能是:把從主函數中輸入的字元串str2接在字元串str1的後面。
例如:str1=「How do」,str2=「 you do?」,結果輸出:How do you do?
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#include
#define N 40
void fun(char *str1,char *str2)
{
int i=0;
char *p1=str1;
char *p2=str2;
while(【1】)
i++;
for( ;【2】;i++)
*(p1+i)=【3】;
*(p1+i)='\0';
}
main()
{
char str1[N],str2[N];
clrscr();
printf("*****Input the string str1 &
str2*****\n");
printf(" \nstr1:");
gets(str1);
printf(" \nstr2:");
gets(str2);
printf("**The string str1 & str2**\n");
puts(str1);
puts(str2);
fun(str1,str2);
printf("*****The new string *****\n");
puts(str1);
}
答案及評析:
【1】*(p1+i) 【2】*p2 【3】*p2++
【解析】填空1:變數i用來記錄字元串str1的長度,當指針指到字元串str1結束標志符『\0'時,while循環結束,變數i停止累加。填空2:指針p2指向字元串str2,通過for循環將字元串str2接在str1後面,循環結束的條件是指針p2所指的字元是字元串結束標志符『\0'。填空3:指針p2最初指向字元串str2的首字元,通過自加1,使指針p2依次向後移動,指向str2的各個字元,實現將字元串str2接在str1後面的功能。
1.填空題
請補充函數fun(),該函數的功能是求一維數組x[N]的平均值,並對所得結果進行四捨五入(保留兩位小數)。
例如:當x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0},結果為:avg=15.030000。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#include
double fun(double x[10])
{
int i;
long t;
double avg=0.0;
double sum=0.0;
for(i=0;i<10;i++)
【1】;
avg=sum/10;
avg=【2】;
t=【3】;
avg=(double)t/100;
return avg;
}
main()
{
double avg,x[10]={15.6,19.9,16.7,15.2,
18.3,12.1,15.5,11.0,10.0,16.0};
int i;
clrscr();
printf("\nThe original data is :\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
答案及評析:
【1】sum+=x[i] 【2】avg*1000 【3】(avg+5)/10
【解析】填空1:通過for循環求出10個數的累加和,存於變數sum中。填空2:為了實現四捨五入保留兩位小數的功能,應將平均值先擴大1000倍。填空3:將平均值加上5,再除以10,實現四捨五入的功能。
1.填空題
請補充函數fun(),該函數的功能是:從『a』到『z』統計一個字元串中所有字母字元各自出現的次數,結果保存在數組alf中。注意:不區分大小寫,不能使用字元串庫函數。
例如,輸入:「A=abc+5*c」,結果為:a=2,b=1,c=2。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#include
#define N 100
void fun(char *tt,int alf[])
{
int i;
char *p=tt;
for(i=0;i<26;i++)
【1】;
while(*p)
{
if(*p>='A'&&*p<='Z')
【2】;
if(*p>='a'&&*p<='z')
alf[*p-'a']++;
【3】;
}
}
main()
{
char str[N];
char a='a';
int alf[26],k;
clrscr();
printf("\nPlease enter a char string:");
scanf("%s",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k=0;k<26;k++)
{
if(k%5==0)
printf("\n");
printf("%c=%d ",a+k,alf[k]);
}
printf("\n");
}
答案及評析:
【1】alf[i]=0 【2】*p+=32 【3】p++
【解析】填空1:數組alf[26]用來存放字母字元出現的次數,在使用之前需要清零。填空2:題目要求不區分大小寫,所以可以先將所有的大寫字母都轉換為對應的小寫字母,然後一並記錄出現的次數。將大寫字母轉換為對應的小寫字母,只需將ASCII碼加上32就可以了。填空3:指針p指向字元串tt,通過p自加1來移動指針,訪問字元串中的所有字元。
1.填空題
請補充函數fun(),該函數的功能是:分類統計一個字元串中母音字母和其他字元的個數(不區分大小寫)。
例如,輸入aeiouAOUpqrt,結果為A:2 E:1 I:1 O:2 U:2 other:4。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#include
#define N 100
void fun(char *str,int bb[])
{
char *p=str;
int i=0;
for(i=0;i<6;i++)
【1】;
while(*p)
{
switch(*p)
{
case 'A':
case 'a':bb[0]++;break;
case 'E':
case 'e':bb[1]++;break;
case 'I':
case 'i':bb[2]++;break;
case 'O':
case 'o':bb[3]++;break;
case 'U':
case 'u':bb[4]++;break;
default:【2】;
}
【3】
}
}
main()
{
char str[N],ss[6]="AEIOU";
int i;
int bb[6];
clrscr();
printf("Input a string: \n");
gets(str);
printf("the string is: \n");
puts(str);
fun(str,bb);
for(i=0;i<5;i++)
printf("\n%c:%d",ss[i],bb[i]);
printf("\nother:%d",bb[i]);
}
答案及評析:
【1】bb[i]=0 【2】bb[5]++ 【3】p++;
【解析】填空1:數組bb[6] 用來存放5個母音字母和其他字元的個數,在使用之前需要清零。
填空2:數組元素bb[5] 用來存放其他字元的個數,當指針p所指的字元不是母音字母時,則認為是其他字元,bb[5]加1。填空3:指針p指向字元串str,通過p自加1來移動指針,訪問字元串中的所有字元。
1.填空題
str是全部由小寫字母字元和空格字元組成的字元串,由num傳入字元串的長度。請補充函數fun(),該函數的功能是:統計字元串str中的單詞個數,結果由變數num傳回。每個單詞之間都由空格隔開,並且字元串str開始不存在空格。
例如:str=「how do you do」,結果為:num=4。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include<stdio.h>
#define N 80
void fun(char *s,int *num)
{
int i,n=0;
for(i=0;【1】;i++)
{
if(s[i]>=』a』&&s[i]<=』z』&&(s[i+1]==
』 』||s[i+1]==』\0』))
【2】;
}
【3】;
}
main()
{
char str[N];
int num=0;
printf("Enter a string:\n");
gets(str);
while(str[num])
num++;
fun(str,&num);
printf("The number of word is :
%d\n\n",num);
}
答案及評析:【1】i<*num 【2】n++ 【3】*num=n
【解析】填空1:*num傳入字元串的長度,所以for循環中變數i的變化范圍是從0到*num-1。填空2:如果當前判斷的字元是小寫字母,並且它的下一個字元是空格或者是字元串結束標記符,則表示當前字元是一個單詞的最後一個字母,統計單詞數的變數n要加上1。填空3:題目要求結果由變數num傳回,所以要將n的值賦給指針num所指的單元。
1.填空題
str是一個由數字和字母字元組成的字元串,由變數num傳入字元串長度。請補充函數fun(),該函數的功能是:把字元串str中的數字字元轉換成數字並存放到整型數組bb中,函數返回數組bb的長度。
例如:str=「Bcd123e456hui890」,結果為:123456890。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include<stdio.h>
#define N 80
int bb[N];
int fun(char s[],int bb[],int num)
{
int i,n=0;
for(i=0;i<num;i++)
{
if(【1】)
{
bb[n]=【2】;
n++;
}
}
return 【3】;
}
main()
{
char str[N];
int num=0,n,i;
printf("Enter a string:\n");
gets(str);
while(str[num])
num++;
n=fun(str,bb,num);
printf("\nbb= ");
for(i=0;i<n;i++)
printf("%d",bb[i]);}
答案及評析:【1】s[i]>= ′0′ &&s[i]<= ′9′ 【2】s[i]- ′0′ 【3】n
【解析】填空1:如果當前字元的ASCII碼大於字元′0′的ASCII碼,而小於字元′9′的ASCII碼,則說明當前字元是數字字元。填空2:將數字字元轉換為數字的方法是,用當前數字字元的ASCII碼減去字元′0′的ASCII碼。填空3:題目要求函數返回數組bb的長度,而變數n記錄了數字字元的個數,也就是數組bb的長度,所以函數應該返回n。
1.填空題
從鍵盤輸入一組無符號整數並保存在數組xx[N]中,以整數0結束輸入,要求這些數的最大位數不超過4位,其元素的個數通過變數num傳入函數fun()。請補充函數fun(),該函數的功能是:從數組xx中找出個位和十位的數字之和大於5的所有無符號整數,結果保存在數組yy中,其個數由函數fun()返回。
例如:當xx[8]={123,11,25,222,42,333,14,5451}時,
bb[4]={25,42,333,5451}。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#define N 1000
int fun(int xx[],int bb[],int num)
{
int i, n=0;
int g, s;
for(i=0;i
{
g=【1】;
s=xx[i]/10 ;
if((g+s)>5)
【2】;
}
return【3】;
}
main()
{int xx[N];
int yy[N];
int num=0,n=0,i=0;
printf("Input number :\n");
do
{
scanf("%u",&xx[num]);
}
while(xx[num++]!=0);
n=fun(xx,yy,num);
printf("\nyy=");
for(i=0;i
printf("%u ",yy[i]);
}答案及評析:【1】xx[i] 【2】bb[n++]=xx[i] 【3】n
【解析】填空1:將一個整數對10取余,則得到這個整數的個位數,將一個整數除以10再對10取余,則得到這個整數的十位數。由程序可以看出,變數s保存了整數的十位數,所以應該將整數的個位數保存於變數g中。填空2:當整數的個位與十位的數字之和大於5時,則將這個整數存於數組bb中,同時,變數n記錄了滿足條件的無符號整數的個數。填空3:題目要求滿足條件的無符號整數的個數由fun函數返回,所以函數返回n。
1.填空題
請補充函數fun(),該函數的功能是判斷一個數的個位數字和百位數字之和是否等於其十位上的數字,是則返回「yes!」,否則返回「no!」。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include <stdio.h>
#include <conio.h>
char *fun(int n)
{
int g,s,b;
g=n%10;
s=n/10%10;
b=【1】;
if((g+b)==s)
return【2】;
else
return【3】;
}
main()
{
int num=0;
clrscr();
printf("******Input data *******\n");
scanf("%d",&num);
printf("\n\n\n");
printf("****** The result *******\n");
printf("\n\n\n%s",fun(num));
}
答案及評析:【1】n/100%10 【2】″yes!″ 【3】″no!″
【解析】填空1:由程序可以知道,變數g保存了整數的個位數,變數s保存了整數的十位數,所以變數b應該保存整數的百位數。將整數除以100再對10取余,則得到這個整數的百位數。填空2:當個位數字和百位數字之和等於十位數字時,則返回″yes!″。填空3:當個位數字和百位數字之和不等於十位數字時,則返回″no!″。
1.填空題
請補充main函數,該函數的功能是:從一個字元串中截取前面若干個給定長度的子字元串。其中,str1指向原字元串,截取後的字元存放在str2所指的字元數組中,n中存放需截取的字元個數。
例如:當str1=「cdefghij」,然後輸入4,則str2=「cdef」。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include <stdio.h>
#include<conio.h>
#define LEN 80
main()
{
char str1[LEN],str2[LEN];
int n,i;
clrscr();
printf("Enter the string:\n");
gets(str1);
printf("Enter the position of the string
deleted:");
scanf(【1】);
for(i=0;i<n;i++)
【2】
str2[i]=』\0』;
printf("The new string is:%s\n",【3】);
}
答案及評析:【1】″%d″,&n 【2】str2[i]=str1[i]; 【3】str2
【解析】填空1:本題考查對標准輸入函數scanf()的調用格式,由後面的程序可以知道,變數n保存了要截取的字元數,注意在n前面不要忘了取址符『 &』。填空2:截取前n個字元,就是將字元串str1的前n個字元依次賦給字元串str2的前n個字元。填空3:本題考查對標准輸出函數printf()的調用格式,根據題意,應輸出截取後的字元串,即字元串str2。
1.填空題
請補充main函數,該函數的功能是:從鍵盤輸入一個字元串並保存在字元str1中,把字元串str1中下標為偶數的字元保存在字元串str2中並輸出。例如,當str1=「cdefghij」,則str2=「cegi」。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#define LEN 80
main()
{
char str1[LEN],str2[LEN];
char *p1=str1,*p2=str2;
int i=0,j=0;
clrscr();
printf("Enter the string:\n");
scanf(【1】);
printf("***the origial string***\n");
while(*(p1+j))
{
printf("【2】",*(p1+j));
j++;
}
for(i=0;i<j;i+=2)
*p2++=*(str1+i);
*p2=』\0』;
printf("\nThe new string is:%s\n",【3】);
}
答案及評析:【1】″%s″,str1 【2】%c 【3】str2
【解析】填空1:本題考查對標准輸入函數scanf()的調用格式,當輸入字元串時,格式控制字元串為″%s″,題目要求輸入的字元串保存在str1中,所以地址表列應為字元串的首地址,即為str1。填空2:本題考查對標准輸出函數printf()的調用格式,當輸出為字元型變數時,格式控制字元串為″%c″。填空3:題目要求將str1中下標為偶數的字元保存在字元串str2中並輸出,所以printf()函數的輸出表列是str2
⑩ 國家計算機二級C語言考試題
一 、選擇題
(1)下列數據結構中,按先進後出原則組織數據的是
A)線性鏈表
B)棧
C)循環鏈表
D)順序表
正確答案: B
(2)具有3個結點的二叉樹有
A)2種形態
B)4種形態
C)7種形態
D)5種形態
正確答案: D
(3)設有下列二叉樹:
對此二叉樹前序遍歷的結果為
A)ZBTYCPXA
B)ATBZXCYP
C)ZBTACYXP
D)ATBZXCPY
正確答案: B
(4)結構化程序設計主要強調的是
A)程序的規模
B)程序的效率
C)程序設計語言的先進性
D)程序易讀性
正確答案: D
(5)程序的3種基本控制結構是
A)過程、子過程和分程序
B)順序、選擇和重復
C)遞歸、堆棧和隊列
D)調用、返回和轉移
正確答案: B
(6)下列敘述中,不屬於測試的特徵的是
A)測試的挑剔性
B)完全測試的不可能性
C)測試的可靠性
D)測試的經濟性
正確答案: C
(7)需求分析中開發人員要從用戶那裡了解
A)軟體做什麼
B)用戶使用界面
C)輸入的信息
D)軟體的規模
正確答案: A
(8)下列關系模型中,能使經運算後得到的新關系中屬性個數多於原來關系中屬性個數的是
A)選擇
B)連接
C)投影
D)並
正確答案: B
(9)下列敘述中,正確的是
A)用E-R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系
B)用E-R圖只能表示實體集之間一對一的聯系
C)用E-R圖只能表示實體集之間一對多的聯系
D)用E-R圖表示的概念數據模型只能轉換為關系數據模型
正確答案: C
(10)"年齡在18~25之間"這種約束是屬於資料庫當中的
A)原子性措施
B)一致性措施
C)完整性措施
D)安全性措施
正確答案: C
11)以下說法錯誤的是
A)高級語言都是用接近人們習慣的自然語言和數學語言作為語言的表達形式
B)計算機只能處理由0和1的代碼構成的二進制指令或數據
C)C語言源程序經過C語言編譯程序編譯之後生成一個後綴為.EXE的二進制文件
D)每一種高級語言都有它對應的編譯程序
正確答案: C
(12)演算法是指為解決某個特定問題而採取的確定且有限的步驟,下面不屬於演算法的五個特性的是
A)有零個輸入或多個輸入
B)高效性
C)有窮性
D)確定性
正確答案: B
(13)已知int a=6; 則執行a+=a-=a*a;語句後,a的值為
A)36
B)0
C)-24
D)-60
正確答案: D
(14)下面各選項中,均是C語言標識符的選項組是
A)forchinato
B)long_123short56_do
C)voinion_342
D)text.txt _023_3ew
正確答案: B
(15)下列表達式中,結果為5的是
A)6*5%6
B)5*-2+15
C)5+75%10
D)6+-2/3
正確答案: B
(16)下列常量中,為不合法的實型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
正確答案: D
(17)關於C語言的主函數描述正確的是
A)C程序可以有多個main函數
B)C程序必有一個而且只能有一個main函數
C)C程序可以沒有main函數
D)C程序的執行不一定在main函數開始執行
正確答案: B
(18)已知int a=1,b=-1;則語句printf("%d\n",(a--,++b));的輸出結果是
A)-1
B)0
C)1
D)語句錯誤
正確答案: B
(19)已知int a,b;double c;則以下語句中錯誤的函數調用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
正確答案: D
(20)已知x,y,z均為整型變數,且值均為1,則執行語句++x||++y&&++z;後,表達式x+y的值為
A)1
B)2
C)3
D)4
正確答案: C