全國計算機二級c語言題庫
1. 2009年上半年全國計算機等級考試二級c語言筆試試題及答案
一、選擇題(每題2分,共計70分)
1.(1)下列敘述中正確的是
A)棧是先進先出的線性表
B)隊列是"先進後出"的線性表
C)循環隊列是非線性結構
D)有序線性表即可以採用順序存儲結構,也可以採用鏈式存儲結構
2.
(2)支持子程序調用的數據結構是
A)棧
B)樹
C)隊列
D)二叉樹
3.
(3)某二叉樹有5個讀為2的結點,則該二叉樹中的葉子結點數是
A)10
B)8
C)6
D)4
4.
(4)下列排序方法中,最壞情況下比較次數最少的是
A)冒泡排序
B)簡單選擇排序
C)直接插入排序
D)堆排序
(5)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下列
屬於應用軟體的是
A)編譯程序
B)操作系統
C)教務管理系統
D)匯編程序
6.
(6)下面敘述中錯誤的是
A)軟體測試的目的是發現錯誤並改正錯誤
B)對被調試程序進行"錯誤定位"是程序調試的必要步驟
C)程序調試也成為Debug
D)軟體測試應嚴格執行測試計劃,排除測試的隨意性
7.
(7)耦合性和內聚性是對模塊獨立性度量的兩個標准。下列敘述中正確的是
A)提高耦合性降低內聚性有利於提高模塊的獨立性
B)降低耦合性提高內聚性有利於提高模塊的獨立性
C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度
D)內聚性是指模塊間互相連接的緊密程度
8.
(8)資料庫應用系統中的核心問題是
A)資料庫設計
B)資料庫系統設計
C)資料庫維護
D)資料庫管理員培訓
9.
(9)有兩個關系R,S如下:
由關系R通過運算得到關系S,則所使用的運算為
A)選擇
B)投影
C)插入
D)連接
10.
(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為
A)屬性
B)鍵
C)關系
D)域
11.(11)一下選項中合法的標識符是
A)1_1
B)1-1
C)_11
D)1_ _
12.
(12)若函數中有定義語句:int k;,則
A)系統將自動給k賦初值0
B)這是k中的值無定義
C)系統將自動給k賦初值-1
D)這時k中無任何值
13.
(13)一下選項中,能用作數據常量的是
A)o115
B)0118
C)1.5e1.5
D)115L
14.
(14)設有定義:int x=2;,一下表達式中,值不為6的是
A)x*=x+1
B)X++,2*x
C)x*=(1+x)
D)2*x,x+=2
15.
(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.1415930
16.
(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.
(17)一下是if語句的基本形式:
if(表達式) 語句
其中"表達式"
A)必須是邏輯表達式
B)必須是關系表達式
C)必須是邏輯表達式或關系表達式
D)可以是任意合法的表達式
18.
(18)有以下程序
#include <stdio.h>
main()
{ int x;
scanf("%d",&x);
if(x<=3) ; else
if(x!=10) printf("%d\n",x);
}
程序運行時,輸入的值在哪個范圍才會有輸出結果
A)不等於10的整數
B)大於3且不等於10的整數
C)大於3或等於10的整數
D)小於3的整數
19.
(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.
(20)一下程序段中的變數已正確定義
for(i=0;i<4;i++,j++)
for(k=1;k<3;k++); printf("*");
程序段的輸出結果是
A)********
B)****
C)**
D)*
21.(21)有以下程序
#include <stdio.h>
main()
{ char *s={"ABC"};
do
{ printf("%d",*s%10);s++;
}
while (*s);
}
注意:字母A的ASCII碼值為65。程序運行後的輸出結果是
A)5670
B)656667
C)567
D)ABC
22.
(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.
(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",a1,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.
(24)有以下程序
#include <stdio.h>
int f(int x,int y)
{ return ((y-x)*x);}
main()
{ int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n",d);
}
程序運行後的輸出結果是
A)10
B)9
C)8
D)7
25.
(25)有以下程序
#include <stdio.h>
void fun(char *s)
{ while(*s)
{ if (*s%2==0) printf("%c",*s);
s++;
}
}
main()
{ char a[]={"good"};
fun(a); printf("\n");
}
注意:字母a的ASCII碼值為97,程序運行後的輸出結果是
A)d
B)go
C)god
D)good
26.
(26)有以下程序
#include <stdio.h>
void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
fun(p,q); printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
程序運行後輸出的結果是
A)3,5,5,3
B)3,5,3,5
C)5,3,3,5
D)5,3,5,3
27.
(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.
(28)以下函數按每行8個輸出數組中的數據
#include <stdio.h>
void fun(int *w,int n)
{ int i;
for(i=0;i<n;i++)
{ ____________
printf("%d ",w[i]);
}
printf("\n");
}
下劃線出應填入的語句是
A)if(i/8==0) printf("\n");
B)if(i/8==0) continue;
C)if(i%8==0) printf("\n");
D)if(i%8==0) continue;
29.
(29)若有以下定義
int x[10],*pt=x;
則對數組元素的正確引用是
A)*&x[10]
B)*(x+3)
C)*(pt+10)
D)pt+3
30.
(30)設有定義:char s[81];int i=0;,以下不能將一行(不超過80個字元)帶有空格
的字元串正確讀入的語句或語句組是
A)gets(s);
B)while((s[i++]=getchar())!=~\n~);s[i]=~\0~;
C)scanf("%s",s);
D)do{scanf("%c",&s[i]);}while(s[i++]!=~\n~);s[i]=~\0~;
31.
(31)有以下程序
#include <stdio.h>
main()
{ char *a[]={"abcd","ef","gh","ijk"};int i;
for(i=0;i<4;i++) printf("%c",*a[i]);
}
程序運行後的輸出結果是
A)aegi
B)dfhk
C)dfhk
D)abcdefghijk
32.
(32)以下選項中正確的語句組是
A)char s[];s="BOOK!";
B)char *s;s={"BOOK!"};
C)char s[10];s="BOOK!";
D)char *s;s="BOOK!";
33.
(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.
(34)設函數中有整型變數n,為保證其在未賦初值的情況下初值為0,應該選擇的存儲類別是
A)auto
B)register
C)static
D)auto 或register
35.
(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[i])+b; printf("%d ",b);}
printf("\n");
}
程序運行後的輸出結果是
A)10 12
B)8 10
C)10 28
D)10 16
36.
(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.
(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.
(38)設有宏定義:#define 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整除是否餘1
D)判斷m被5和7整除是否都餘1
39.
(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.
(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
2009年3月二級C語言程序設答案
選擇題:
1-10: DACDC ABABC
11-20:CBDDA CDBCB
21-30:CDABA BACBC
31-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
2. 國家計算機二級c語言機試題庫
今年最新版的二級C題題庫 已經發給你了 注意查收啊 祝你考試順利通過! 題目的前一百題是題庫 後面的幾十題是補充的一些常見題型歸類。
3. 全國計算機等級考試二級C語言的考試題目都是從《C語言題庫》裡面抽取的題目嗎
全國計算機等級考試二級C語言的考試題目的小題不是從《C語言題庫》中抽取的,後面的大題即編程題全部是從最近的一年的《C語言題庫》中抽取的。考題大部分是C語言,少部分是演算法與數據結構裡面的東西。就算不是《C語言題庫》題庫里的題,但是題型都差不多的。
c語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程序設計中備受青睞。C語言編譯器普遍存在於各種不同的操作系統中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了眾多後來的編程語言,例如C++、Objective-C、Java、C#等。
4. 全國計算機二級c語言每年考試題庫都一樣嗎
題庫的變化不大,題型都是相同的。計算機二級考試包含:程序設計/辦公軟體高級應用,考核內容包括計算機語言與基礎程序設計能力,要求參試者掌握一門計算機語言,可選類別有高級語言程序設計類、資料庫程序設計類等;
辦公軟體高級應用能力,要求參試者具有計算機應用知識及MS Office辦公軟體的高級應用能力,能夠在實際辦公環境中開展具體應用。從2013年開始全國計算機等級考試已從傳統的筆試和上機考試改革成無紙化考試,二級Delphi科目從2013年上半年開始停考。
(4)全國計算機二級c語言題庫擴展閱讀
報考二級6個科目考試的新生,全部採用無紙化考試(即全部上機考試),取代傳統的考試模式(筆試加上機)。參加二級7個科目補考的老生,仍按照傳統模式參加補考。無紙化考試中,傳統考試的筆試部分被移植到計算機上完成,考核內容和要求不變。
無紙化考試時間為120分鍾,滿分100分,總分達到60分可以獲得合格證書。沒有獲得合格證書的考生,無補考,下一次需重新以新考生身份報名參加考試。
5. 急求!!!全國計算機等級考試二級C機考題庫 附答案的最好 !急!!!!
1: 第1題 m個人的成績存放在score數組中,請編寫函數fun,它的功能是:將低於平均分的人作為函數值返回,將低於平均分的分數放在below所指定的函數中。
答案:
int fun(int score[],int m,int below[])
{
int i,k=0,aver=0;
for(i=0;i<m;i++)
aver+=score[i];
aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver)
{
below[k]=score[i];
k++;
}
return k;
}
2: 第2題請編寫函數fun,它的功能是:求出1到100之內能北7或者11整除,但不能同時北7和11整除的所有證書,並將他們放在a所指的數組中,通過n返回這些數的個數。
答案:
void fun(int *a, int *n)
{
int i,j=0;
for(i=2;i<1000;i++)
if ((i%7==0 || i%11==0) && i%77!=0)
a[j++]=i;
*n=j;
}
3: 第3題 請編寫函數void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶數的各整數,並按從小到大的順序放在pp所指的數組中,這些除數的個數通過形參n返回。
答案:
void fun(int x, int pp[ ], int *n)
{
int i=1,j=0;k=0,*t=pp;
for(i=0;i<=x;i++)
if(i%2!=0)
{
t[j]=I;
j++;
}
for(i=0;i<j;i++)
if(x%t[i]==0)
{
pp[k]=t[i];
k++;
}
*n=k;
}
4: 第4題 請編寫一個函數void fun(char *tt,int pp[]),統計在tt字元中"a"到"z"26各字母各自出現的次數,並依次放在pp所指的數組中。
答案:
void fun(char *tt, int pp[])
{
int i;
for (i=0;i<26;i++)
pp[i]=0;
while (*tt)
{
switch (*tt)
{
case 『a』: pp[0]++;break;
case 『b』: pp[1]++;break;
case 『c』: pp[2]++;break;
case 『d』: pp[3]++;break;
case 『e』: pp[4]++;break;
case 『f』: pp[5]++;break;
case 『g』: pp[6]++;break;
case 『h』: pp[7]++;break;
case 『i』: pp[8]++;break;
case 『j』: pp[9]++;break;
case 『k』: pp[10]++;break;
case 『l』: pp[11]++;break;
case 『m』: pp[12]++;break;
case 『n』: pp[12]++;break;
case 『o』: pp[14]++;break;
case 『p』: pp[15]++;break;
case 『q』: pp[16]++;break;
case 『r』: pp[17]++;break;
case 『s』: pp[18]++;break;
case 『t』: pp[19]++;break;
case 『u』: pp[20]++;break;
case 『v』: pp[21]++;break;
case 『w』: pp[22]++;break;
case 『x』: pp[23]++;break;
case 『y』: pp[24]++;break;
case 『z』: pp[25]++;break;
}
tt++;
}
}
5: 第5題 請編寫一個函數void fun(int m,int k,int xx[]),該函數的功能是:將大於整數m且緊靠m的k各素數存入xx所指的數組中。
答案:
void fun(int m, int k, int xx[])
{
int g=0,I,j,flag=1;
for(i=m+1;i<m*m;i++)
{
for(j=0;j<I;j++)
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if (flag==1 && j>=i)
{
if (k>=0)
{
xx[g++]=i;
k--;
}
else
break;
}
}
}
6: 第6題 請編寫一個函數void fun(char a[],char[],int n),其功能是:刪除以各字元串中指定下標的字元。其中,a指向原字元串,刪除後的字元串存放在b所指的數組中,n中存放指定的下標。
答案:
void fun(char a[],char b[], int n)
{
int I,j=0;
for (i=0;i<LEN;i++)
if (i!=n)
{
b[j]=a[i];
j++;
}
b[j]=『\0』;
}
7: 第7題 請編寫一個函數int fun(int *s,int t,int *k),用來求除數組的最大元素在數組中的下標並存放在k所指的儲存單元中。
答案:
void fun (int *s, int t, int *k)
{
int I, max;
max=s[0];
for(i=0;i<t;i++)
if (s[i]>max)
{
max=s[i];
*k=I;
}
}
8: 第8題 編寫函數fun,功能是:根據以下攻勢計算s,計算結果作為函數值返回;n通過形參傳入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)
答案:
float fun (int n)
{
int i;
float s=1.0, t=1.0;
for(i=2;i<=n;i++)
{
t=t+i;
s=s+1/t;
}
return s;
}
9: 第9題 編寫一個函數fun,它的功能是:根據以下公式求p的值,結果由函數值帶回。M與n為兩個正整數,且要求m>n。 p=m!/n!(m-n)!
答案:
float fun(int m, int n)
{
float p,t=1.0;
int I;
for (i=1;i<=m;i++)
t=t*I;
p=t;
for(t=1.0,i=1;i<=n;i++)
t=t*I;
p=p/t;
for(t=1.0,i=1;i<=m-n;i++)
t=t*I;
p=p/t;
return p;
}
10: 第10題 編寫函數fun,它的功能是:利用以下的簡單迭代方法求方程cos(x)-x=0的一個實根。
迭代步驟如下:(1)取x1初值為0.0; (2)x0=x1,把x1的值賦各x0;
(3)x1=cos(x0),求出一個新的x1;
(4)若x0-x1的絕對值小於0.000001,則執行步驟(5),否則執行步驟(2);
(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數值返回。
程序將輸出root=0.739085。
答案:
float fun()
{
float x1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>1e-6);
return x1;
}
11: 第11題 下列程序定義了n×n的二維數組,並在主函數中自動賦值。請編寫函數 fun(int a[][n]),該函數的功能是:使數組左下半三角元素中的值全部置成0。
答案:
int fun(int a[][N])
{
int I,j;
for(i=0;i<N;i++)
for(j=0;j<=I;j++)
a[i][j]=0;
}
12: 第12題 下列程序定義了n×n的二維數組,並在主函數中賦值。請編寫函數fun,函數的功能使求出數組周邊元素的平均值並作為函數值返回給主函數中的s。
答案:
double fun(int w[][N])
{
int I,j,k=0;
double s=0.0;
for(j=0;j<N;j++)
{
s+=w[0][j];
k++;
}
for(j=0;j<N;j++)
{
s+=w[N-1][j];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][0];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][N-1];
k++;
}
return s/=k;
}
13: 第13題 請編寫一個函數void fun(int tt[m][n],int pp[n]),tt指向一個m行n列的二維函數組,求出二維函數組每列中最小元素,並依次放入pp所指定一維數組中。二維數組中的數已在主函數中賦予。
答案:
void fun(int tt[M][N], int pp[N])
{
int I,j,min;
for(j=0;j<N;j++)
{
min=tt[0][j];
for(i=0;i<M;i++)
{
if (tt[i][j]<min)
min=tt[i][j];
}
pp[j]=min;
}
}
14: 第14題 請別寫函數fun,函數的功能使求出二維數組周邊元素之和,作為函數值返回。二維數組中的值在主函數中賦予。
答案:
int fun(int a[M][N])
{
int I,j,s=0;
for(j=0;j<N;j++)
{
s+=a[0][j];
s+=a[M-1][j];
}
for(i=1;i<=M-2;i++)
{
s+=a[i][0];
s+=a[i][N-1];
}
return s;
}
15: 第15題 請編寫一個函數unsigned fun(unsigned w),w使一個大於10的無符號整數,若w使n(n≥2)位的整數,則函數求出w後n-1位的數作為函數值返回。
答案:
unsigned fun(unsigned w)
{
unsigned t,s=0,s1=1,p=0;
t=w;
while(t>10)
{
if(t/10)
p=t%10;
s=s+p*s1;
s1=s1*10;
t=t/10;
}
return s;
}
16: 第16題 請編寫一個函數float fun(double h),函數的功能使對變數h中的值保留2位小樹,並對第三位進行四捨五入(規定h中的值位正數)。
答案:
float fun(float h)
{
long t;
float s;
h=h*1000;
t=(h+5)/10;
s=(float)t/100.0;
return s;
}
17: 第17題 請編寫一個函數fun(char *s),該函數的功能使把字元串中的內容擬置。
答案:
void fun(char *s)
{
char ch;
int I,m,n;
i=0;
m=n=strlen(s)-1;
while(i<(n+1)/2)
{
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
}
}
18: 第18題 編寫程序,實現矩陣(3行3列)的轉置(即行列互換)。
答案:
void fun(int array[3][3])
{
int I,j,temp;
for(i=0;i<3;i++)
for(j=0;j<I,j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
19: 第19題 編寫函數fun,該函數的功能是:從字元中刪除指定的字元,同一字母的大、小寫按不同字元處理。
答案:
void fun(char s[],int c)
{
int i=0;
char *p;
p=s;
while(*p)
{
if(*p!=c)
{
s[i]=*p;
i++;
}
p++;
}
s[i]=『\0』;
}
20: 第20題 編寫函數int fun(int lim,int aa[max]),該函數的功能是求出小於或等於lim的所有素數並放在aa數組中,該函數返回所求的素數的個數。
答案:
int fun(int lim, int aa[MAX])
{
int k=0,I,j;
for(i=lim;i>1;i--)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
else
continue;
if(j>=i)
{
aa[k]=i;
k++;
}
}
return k++;
}
21: 第21題 請編寫函數fun,對長度位7個字元的字元串,除首尾字元外,將其餘5個字元按ascii碼降序排列。
答案:
void fun(char *s,int num)
{
char t;
int I,j;
for(i=1;i<num-2;i++)
for(j=i+1;j<num-1;j++)
if(s[i]<s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
22: 第22題 n名學生的成績已在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun,它的功能是:找出學生的最高分,由函數值返回。
答案:
double fun(STREC *h)
{
double max;
STREC *q=h;
max=h->s;
do
{
if(q->s>max)
max=q->s;
q=q->next;
}
while(q!=0);
return max;
}
23: 第23題 請編寫函數fun,該函數的功能是:判斷字元串是否為迴文?若是則函數返回1,主函數中輸出yes,否則返回0,主函數中輸出no。迴文是指順讀和倒讀都是一樣的字元串。
答案:
int fun(char *str)
{
int I,n=0;fg=1;
char *p=str;
while (*p)
{
n++;
p++;
}
for(i=0;i<n/2;i++)
if (str[i]==str[n-1-i]);
else
{
fg=0;
break;
}
return fg;
}
24: 第24題 請編寫一個函數fun,它的功能是:將一個字元串轉換為一個整數(不得調用c語言提供的將字元串轉換為整數的函數)。
答案:
long fun (char *p)
{
long s=0,t;
int i=0,j,n=strlen(p),k,s1;
if(p[0]==『-』)
i++;
for(j=I;j<=n-1;j++)
{
t=p[j]-『0』;
s1=10;
for(k=j;k<n-1;k++)
t*=s1;
s+=t;
}
if(p[0]==『-』)
return –s;
else
return s;
}
25: 第25題 請編寫一個函數fun,它的功能是:比較兩個字元串的長度,(不得調用c語言提供的求字元串長度的函數),函數返回較長的字元串。若兩個字元串長度相同,則返回第一個字元串。
答案:
char *fun(char *s,char *t)
{
char *p,*t1=t,*s1=s;
int n=0;m=0;
while (*s1)
{
n++;
s1++;
}
while(*t1)
{
m++;
t1++;
}
if(n>=m)
p=s;
else
p=t;
return p;
}
26: 第26題 請編寫一個函數fun,它的功能是:根據以下公式求x的值(要求滿足精度0.0005,即某項小於0.0005時停止迭代):
x/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+…+1×2×3×…×n/3×5×7×(2n+1)
程序運行後,如果輸入精度0.0005,則程序輸出為3.14…。
答案:
double fun(double eps)
{
double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))>=eps)
{
pi+=s;
t=n/(2*n+1);
s*=t;
n++;
}
pi=pi*2;
return pi;
}
27: 第27題 請編寫一個函數fun,它的功能是:求除1到m之內(含m)能北7或11整除的所有整數放在數組a中,通過n返回這些數的個數。
答案:
void fun(int m, int *a, int *n)
{
int I,j=0; *n=0;
for(i=1;i<=m;i++)
if (i%7==0 || i%11 ==0)
{
a[j]=I;
j++;
}
*n=j;
}
28: 第28題 請編寫一個函數fun,它的功能是:找出一維整型數組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數組元素中的值已在主函數中賦予。主函數中x是數組名,n 是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。
答案:
void fun (int a[],int n, int *max, int *d)
{
int I;
*max=a[0];
*d=0;
for(i=0;I<n;i++)
if(a[i]>*max)
{
*max=a[i];
*d=I;
}
}
29: 第29題 請編寫一個函數fun,它的功能是:將ss所指字元串中所有下標為奇數位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。
答案:
void fun(char *ss)
{
int I,n;
n=strlen(ss);
for(i=1;i<n;i+=2)
if(ss[i]>=『a』&& ss[i]<=『z』)
ss[i]=ss[i]-32;
}
30: 第30題 請編寫一個函數fun,它的功能是:求除一個2×m整型二維數組中最大元素的值,並將此值返回調用函數。
答案:
int fun(int a[][M])
{
int I,j,max;
max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(a[i][j]>max)
max=a[i][j];
return max;
}
31: 第31題 請編寫函數fun,其功能是:將s所指字元串中除了下標為偶數、同時ascii值也為偶數的字元外,其餘的全都刪除;串中剩餘字元所形成的一個新串放在t所指的一個數組中。
答案:
void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i++)
if(i%2==0&&s[i]%2==0)
{
t[j]=s[i];
j++;
}
t[j]=『\0』;
}
32: 第32題 請編寫函數fun,其功能是:將s所指字元串中除了下標為奇數、同時ascii值也為奇數的字元之外,其餘的所有字元都刪除,串中剩餘字元所形成的一個新串放在t所指的一個數組中。
答案:
void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i++)
if(i%2!=0&&s[i]%2!=0)
{
t[j]=s[i];
j++;
}
t[j]=『\0』;
}
33: 第33題 假定輸入的字元串中只包含字母和*號。請編寫函數fun,它的功能是:使字元串中尾部的*號不得多於n個;若多於n個,則刪除多於的*號;若少於或等於n個,則什麼也不做,字元串中間和前面的*號不刪除。
答案:
void fun(char *a,int n)
{
int i=0;k=0;
char *p, *t;
p=t=a;
while (*t)
t++;
t--;
while(*t==『*』)
{
k++;
t--;
}
t++;
if(k>n)
{
while (*p&&p<t+n)
{
a[i]=*p;
i++;
p++;
}
a[i]=『\0』;
}
}
34: 第34題 學生的記錄由學號和成績組成,n名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能使:把分數最高的學生數據放在h所指的數組中,注意:分數最高的學生可能不止一個,函數返回分數最高的學生的人數。
答案:
int fun (STREC *a, STREC *b)
{
int I,j=0,n=0, max;
max=a[0].s;
for(i=0;i<N;i++)
if(a[i].s>max)
max=a[i].s;
for(i=0;i<N;i++)
if(a[i].s==max)
{
*(b+j)=a[i];
j++;
n++;
}
return n;
}
35: 第35題 請編寫一個函數,用來刪除字元串中的所有空格。
答案:
void fun(char *str)
{
int i=0;
char *p=str;
while (*p)
{
if(*p!=『』)
{
str[i]=*p;
i++;
}
p++;
}
str[i]=『\0』;
}
36: 第36題 假定輸入的字元串中只包含字母和*號。請編寫函數fun,它的功能是:將字元串中的前導*號全部移到字元串的尾部。
答案:
void fun(char *a)
{
int i=0,n=0;
char *p;
p=a;
while (*p==『*』)
{
n++;
p++;
}
while (*p)
{
a[i]=*p;
i++;
p++;
}
while(n!=0)
{
a[i]=『*』;
i++;
n--;
}
a[i]=『\0』;
}
37: 第37題 某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數中給出。請編寫函數fun,它的功能是:求出該學生的平均分放在記錄的ave成員中。請自己定義正確的形參。
答案:
void fun(STREC *p)
{
double av=0.0;
int i:
for(i=0;i<N;i++)
av+=p->s[i];
av/=N;
p->ave=av;
}
38: 第38題 請編寫函數fun,它的功能是:求出ss所指字元串中指定字元的個數,並返回此值。
答案:
int fun(char *ss, char c)
{
int n=0;
while (*ss)
{
if(*ss==c)
n++;
ss++;
}
return n;
}
39: 第39題 請編寫函數fun,該函數的功能是:移動一維數組中的內容,若數組中由n個整數,要求把下標從0到p(p小於等於n-1)的數組元素平移到數組的最後。
答案:
void fun(int *w, int p, int n)
{
int b[N], i, j=0;
for(i=0;i<=p;i++)
{
b[i]=w[i];
j++;
}
for(i=0;i<=p;i++)
{
w[j]=b[i];
j++;
}
}
40: 第40題 請編寫函數fun,該函數的功能是移動字元串中內容,移動的規則如下:把第1到第m個字元,平移到字元串的最後,把第m+1到最後的字元移到字元串的前部。
答案:
void fun(char *w,int m)
{
char b[N];
int I,j=0;
for(i=0;i<m;i++)
{
b[j]=w[i];
j++;
}
for (i=0;i<strlen(w)-m;i++)
w[i]=w[i+m];
for(j=0;j<m;j++)
{
w[i]=b[j];
i++;
}
w[i]=『\0』;
}
41: 第41題 請編寫函數fun,該函數的功能是:將m行n列的二維數組中的字元數據,按列的順序依次放到一個字元串中。
答案:
void fun(char (*s)[n],char *b)
{int i,j,k=0;
for(j=0;j<n;j++)
for(i=0;i<m;i++)
{b[k]=*(*(s+i)+j)
k++;}
b[k]=『\0』;}
42: 第42題 下列程序定義了n×n的二維數組,並在主函數中自動賦值。請編寫函數fun(int a[][n],int n),該函數的功能是:將數組右上半三角元素中的值乘以m。
答案:
void fun(int a[][n],int m)
{int i,j;
for(j=0;j<n;j++)
for(i=0;i<=j;i++)
a[j]=a[j]*m;}
43: 第43題 編寫一個函數,從傳入的num個字元串中找出一個最長的一個字元串,並通過形參指針max傳回該串地址(用****作為結束輸入的標志)。
答案:
char *fun(char (*a)[81],int num)
{int i;
char *max;
max=a[0];
for(i=0;i<num;i++)
if(strlen(max)<strlen(a))
max=a;
return max;}
44: 第44題 編寫一個函數,該函數可以統計一個長度為2的字元串在另一個字元串中出現的次數。
答案:
int fun(char *str,char *substr)
{int n;
char *p,*r;
n=0;
while(*str)
{p=str;
r=substr;
while(*r)
if(*r==*p)
{r++;
p++;}
else
break;
if(*r==『\0』)
n++;
str++;}
return n;}
45: 第45題 假定輸入的字元串中只包含字母和*號。請編寫函數fun,它的功能是:只刪除字元串前導和尾部的*號,串中字母之間的*號都不刪除。形參n 給出了字元串的長度,形參h給出了字元串中前導*號的個數,形參e給出了字元串中最後的*個數。在編寫時不得使用c語言給提供得字元串函數。
答案:
void fun(char *a,int n,int h,int e)
{int i=0;
char *p;
for(p=a+h;p<a+n-e;p++)
{*(a+i)=*p;
i++;}
*(a+i)=『\0』;}
46: 第46題 學生得記錄由學號和成績組稱個,n名大學生得數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能時:按分數的高低排列學生的記錄,高分在前。
答案:
void fun(strec a[])
{int i,j;
strec t;
for(i=0;i<n-1;i++)
for(j=i;s<n;j++)
if(a.s<a[j].s)
{t=a;
a=a[j];
a[j]=t; }}
47: 第47題 請編寫一個函數void fun(char *ss),其功能時:將字元串ss中所有下標為奇數位置上的字母轉換為大寫(若位置上不是字母,則不轉換)。
答案:
void fun(char *ss)
{int i,n=0;
char *p=ss;
while(*p)
{n++;
p++;}
for (i=0;i<n;i++)
if ((ss=『a』&ss<=『z』)&i%2!=0)
ss=ss-32;
ss=『\0』;}
48: 第48題 請編寫函數fun,其功能是:將兩個兩位數的正整數a,b合並成一個整數放在c中。合並的方式是:將a數的十位和個位依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的百位和個位上。
答案:
void fun(int a,int b,long *c)
{*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}
49: 第49題 請編寫函數fun,其功能是:將s所指字元串中下標位偶數同時ascii值為奇數的字元刪除,s中剩餘的字元形成的新串放在t所指的數組中。
答案:
void fun(char *s,char t[])
{int i,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(i%2==0&s%2!=0)
else
{f[j]=s;
j++;}
t[j]=『\0』;}
50: 第50題 已知學生的記錄是由學號和學習成績構成,n名學生的數據已存入a機構體數組中。請編寫函數fun,該函數的功能是:找出成績最高的學生記錄,通過形參返回主函數(規定只有一個最高分)。
答案:
void fun(stu a[],stu *s)
{int i,max;
max=a[0].s;
for (i=0;i<n;i++)
if(a.s>max)
{max=a.s;
*s=a;}}
6. 全國計算機等級考試二級C語言歷年試題及答案
這里有一份最全的考研歷年真題資料分享給你
鏈接:
通過不斷研究和學習歷年真題,為考生沖刺階段復習提分指點迷津,做真題,做歷年真題集,對照考綱查缺補漏,提高實戰素養,制定做題策略,規劃方向;
若資源有問題歡迎追問!
7. 全國計算機等級考試二級c語言考的是題庫里的題嗎都是歷年的題庫嗎題庫在哪買,會考原題嗎
基本都是沒有原題也有類似題像這種題目練習幾遍基本也都會了都是歷年真題,題庫每年都會有更新的。淘寶有賣,未來教育和新思路不錯我都有用過
8. 准備考c語言計算機二級,用什麼軟體刷題好
計算機二級,用什麼軟體刷題好:
首先我們先看下軟體下圖1、2展示,最後是軟體!
1、全國計算機等級考試超級模擬軟體。
匯聚了多年開發全國計算機等級考試模擬軟體的豐富經驗,並綜合有經驗的命題專家、教授和全國各地考點一線教師的建議基礎上研製而成。本套軟體採用模擬考試形式,以大量的習題練習,強化考生的應考能力。
2、捷成全國計算機等級考試練習系統。
上機考試系統提供了歷屆考試題100套,並附有試題分析和參考答案,可以幫助考生熟悉考試模式,提高應試能力,測試實際操作和應變能力,自己評定成績,對正式考試時能否通過進行初步的估計。
3、未來教育2017二級msoffice模擬軟體
以其模式的高專業度,題庫權威度而聞名業界,它聚合歷年真題加以分析從而提出權威預測,效果非常不錯。