- 相關推薦
2017年計算機二級考試C語言編程題練習題及答案
計算機二級考試是全國計算機等級考試(National Computer Rank Examination,簡稱NCRE)四個等級中的一個等級,考核計算機基礎知識和使用一種高級計算機語言編寫程序以及上機調試的基本技能。下面是2017年計算機二級考試C語言編程題練習題及答案。歡迎閱讀。
2017年計算機二級考試C語言編程題練習題及答案
1.3程序編程題
請編寫函數fun,其功能是:找出2×M整型二維數組中最大元素的值,并將此值返回調用函數。
【參考答案】
int fun (int a[][M])
{int i,j,max=a[0][0];
for(i=0;i<2;i++)
fr(j=0;j
if(max
max=a[i][j];
return max;
}
2.3程序編程題
編寫函數fun,其功能是:根據以下公式求π的值(要求精度0.0005,即某項小于0.0005時停止迭代)。
程序運行后,若輸入精度0.0005,則程序應輸出為3.14…。
【參考答案】
double fun ( double eps)
{double s=1.0,s1=1.0;
int n=1;
while(s1>=eps)
{s1=s1*n/(2*n+1);
s=s+s1;
n++;
}
return 2*s;}
3.3程序編程題
編寫函數fun,其功能是:求出1~1000之間能被7或11整除,但不能同時被7和11整除的所有整數,并將其放在a所指的數組中,通過n返回這些數的個數。
【參考答案】
void fun (int *a, int *n)
{
int i,j=0;
for(i=1;i<=1000;i++)
if((i%7==0||i%11==0)&&i%77!=0)
a[j++]=i;
*n=j;
}
4.3程序設計題
規(guī)定輸入的字符串中只包含字母和*號。編寫函數fun,其功能是:刪除字符串中所有的*號。編寫函數時,不得使用C語言提供的字符串函數。
例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后字符串中的內容應當是:ABCDEFG。
【參考答案】
void fun( char *a )
{int i,j=0;
for(i=0;a[i]!='\0';i++)
if(a[i]!='*')
a[j++]=a[i];
a[j]='\0';
}
5.3程序設計題
編寫函數fun,其功能是:實現兩個字符串的連接(不要使用庫函數strcat),即把p2所指的字符串連接到p1所指的字符串的后面。
例如,分別輸入下面兩個字符串:
FirstString--
SecondString
程序輸出:
FirstString--SecondString
【參考答案】
void fun(char p1[], char p2[])
{int i,j;
for(i=0;p1[i]!='\0';i++) ;
for(j=0;p2[j]!='\0';j++)
p1[i++]=p2[j];
p1[i]='\0';}
6.3程序設計題
某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數中給出,請編寫函數fun,其功能是:求出該學生的平均分,并放入記錄的ave成員中。例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。
【參考答案】
void fun(STREC *a)
{int i;
a->ave=0.0;
for(i=0;i
a->ave=a->ave+a->s[i];
a->ave/=N;
}
7.3程序設計題
N名學生的成績已在主函數中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數fun,其功能是:求出平均分,并由函數值返回。例如,若學生的成績是:85 76 69 85 91 72 64 87,則平均分應當是:78.625。
【參考答案】
double fun( STREC *h )
{double ave=0.0;
STREC *p=h->next;
while(p!=NULL)
{ ave=ave+p->s;
p=p->next;}
return ave/N;}
8.3程序設計題
編寫函數fun,其功能是:將所有大于1小于整數m的非素數存入xx所指數組中,非素數的個數通過k返回。
例如,若輸入17,則應輸出:4 6 8 9 10 12 14 15 16。
【參考答案】
void fun( int m, int *k, int xx[] )
{int i,j,n=0;
for(i=4;i
{ for(j=2;j
if(i%j==0) break;
if(j
}
*k=n;
}
9.3程序設計題
編寫函數fun,其功能是:求ss所指字符串中指定字符的個數,并返回此值。
例如,若輸入字符串123412132,輸入字符為1,則輸出3。
【參考答案】
int fun(char *ss, char c)
{int i=0;
for(;*ss!='\0';ss++)
if(*ss==c)
i++;
return i;}
10.3程序設計題
編寫函數fun,其功能是:計算n門課程的平均分,結果作為函數值返回。例如:若有5門課程的成績是:90.5,72,80,61.5,55,則函數的值為:71.80。
【參考答案】
float fun ( float *a , int n )
{
int i;
float av=0.0;
for(i=0; i
av=av+a[i];
return(av/n); /*返回平均值*/
}
11.3程序設計題
學生的記錄由學號和成績組成,N名學生的數據已放入主函數中的結構體數組s中,請編寫函數fun,其功能是:把分數最高的學生數據放在b所指的數組中。注意:分數最高的學生可能不止一個,函數返回分數最高的學生的人數。
【參考答案】
int fun( STREC *a, STREC *b )
{int i,j=0,max=a[0].s;
for(i=0;i
if(max
for(i=0;i
if(max==a[i].s)
b[j++]=a[i];
return j;
}
12.3程序設計題
規(guī)定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:除了字符串前導的*號之外,將串中其它*號全部刪除。在編寫函數時,不得使用C語言提供的字符串函數。
例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:****ABCDEFG。
【參考答案】
void fun( char *a )
{
int i=0;
char *p=a;
while(*p&&*p=='*')
{a[i]=*p;
i++;
p++;}
while(*p)
{if(*p!='*')
{a[i]=*p;i++;}
p++;}
a[i]='\0';
}
13.3程序設計題
編寫函數void fun(char *tt,int pp[]),統(tǒng)計在tt所指的字符串中'a'到'z'26個小寫字母各自出現的次數,并依次放在pp所指的數組中。例如,當輸入字符串abcdefgabcdeabc后,程序的輸出結果應該是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
【參考答案】
void fun(char *tt, int pp[])
{int i;
for(i=0;i<26;i++)
pp[i]=0;
for(;*tt!='\0';tt++)
if(*tt>='a'&&*tt<='z')
pp[*tt-'a']++;
}
14.3程序設計題
規(guī)定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:將字符串尾部的*號全部刪除,前面和中間的*號不動。例如,字符串中的內容為:"****A*BC*DEF*G*******",刪除后,字符串中的內容應當是:"****A*BC*DEF*G"。在編寫函數時,不得使用C語言提供的字符串函數。
【參考答案】
void fun( char *a )
{while(*a!='\0')
a++;
a--;
while(*a=='*')
a--;
*(a+1)='\0';
}
15.3程序設計題
編寫函數fun,其功能是:比較字符串的長度,(不得使用C語言提供的求字符串長度的函數),函數返回較長的字符串。若兩個字符長度相同,則返回第一個字符串。例如,輸入beijingshanghai(為回車鍵),函數將返回shanghai。
【參考答案】
char *fun ( char *s, char *t)
{int i,j;
for(i=0;s[i]!= '\0';i++);
for(j=0;t[j]!= '\0';j++);
if(i<=j) return t;
else return s;
}
16.3程序設計題
學生的記錄由學號成績組成,N名學生的數據已放入主函數中的結構體數組s中,請編寫函數fun,其功能是:函數返回該學號的學生數據,指定的學號在主函數中輸入。若沒找到指定學號,在結構體變量中給學號置空串,給成績置-1,作為函數值返回。(用于字符串比較的函數是strcmp)。
【參考答案】
STREC fun( STREC *a, char *b )
{int i;
STREC str={"\0",-1};
for(i=0;i
if(strcmp(a[i].num,b)==0)
str=a[i];
return str;
}
17.3程序設計題
函數fun的功能是:將s所指字符串中除下標為偶數同時ASCII碼值也為偶數的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數組中。例如,若s所指字符串中的內容為"ABCDEFG123456",其中字符A的ASCII碼值為奇數,因此應當刪除;字符B的ASCII碼值為偶數,但在數組中的下標為奇數,因此也應當刪除;字符2的ASCII碼值為偶數,在數組中
的下標也為偶數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是"246"。
【參考答案】
void fun(char *s, char t[])
{int i,j=0;
for(i=0;s[i]!='\0';i++)
if(i%2==0 && s[i]%2==0)
t[j++]=s[i];
t[j]='\0'; }
18.3程序設計題
編寫函數fun,其功能是:利用下面的簡單迭代方法求方程cos(x)-x=0的一個實根。
迭代步驟如下:
(1)取x1初值為0.0;
(2)x0=x1,將x1的值賦給x0;
(3)x1=cos(x0),求出一個新的x1;
(4)若x0-x1的.絕對值小于0.000001,
執(zhí)行步聚(5),否則執(zhí)行步聚(2);
(5)所求x1就是方程cos(x)-x=0的一
個實根,作為函數值返回。
程序將輸出結果Root=0.739086。
【參考答案】
double fun()
{ double x0,x1;
x1=0.0;
do{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=1e-6);
return x1;}
19.3程序設計題[所屬年份:2010.9;2011.3;]
規(guī)定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:將字符串中的前導*號全部移到字符串的尾部。例如,字符串中的內容為:"*******A*BC*DEF*G****",移動后,字符串中的內容應當是:"A*BC*DEF*G***********"。在編寫函數時,不得使用C語言提供的字符串函數。
【參考答案】
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';
}
20.3程序設計題
學生記錄由學號和成績組成,N名學生的數據已放入主函數中的結構體數組中,請編寫函數fun,其功能是:把分數最低的學生數據放入b所指的數組中,注意:分數最低的學生可能不止一個,函數返回分數最低的學生人數。
【參考答案】
int fun( STREC *a, STREC *b )
{int i,j=0,min=a[0].s;
for(i=0;i
if(min>a[i].s)
min=a[i].s;
for(i=0;i
if(min==a[i].s)
b[j++]=a[i];
return j;
}
21.3程序設計題
編寫函數fun,其功能是計算:
s作為函數值返回。在C語言中可調用log(n)函數求ln(n)。log函數的引用說明為:double log(double x)。例如,若m的值為20,則fun函數值為6.506583。
【參考答案】
double fun( int m )
{int i;
double s=0.0;
for(i=1;i<=m;i++)
s=s+log(i);
return sqrt(s);
}
22.3程序設計題[所屬年份:2010.9;2011.3;]
規(guī)定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:只刪除字符前導和尾部的*號,串中字母間的*號都不刪除。形參n給出了字符串的長度,形參h給出了字符串中前導*號的個數,形參e給出了字符串中尾部*號的個數。在編寫函數時,不得使用C語言提供的字符串函數。例如,字符串中的內容為:"****A*BC*DEF*G*******",刪除后,字符串中
的內容應當是:"A*BC*DEF*G"。
【參考答案】
void fun( char *a, int n,int h,int e )
{int i,j=0;
for(i=h;i
a[j++]=a[i];
a[j]='\0'; }
23.3程序設計題
函數fun的功能是:將s所指字符串中下標為偶數的字符刪除,剩余字符形成的新串放在t所指數組中。例如,當s所指字符串中的內容為"ABCDEFGHIJK"時,在t所指數組中的內容應是:"BDFHJ"。
【參考答案】
void fun(char *s, char t[])
{int i,j=0,k=strlen(s);
for(i=1;i
t[j++]=s[i];
t[j]='\0';}
24.3程序設計題
編寫函數fun,其功能是:將a、b中的兩個兩位正整數合并成一個新的整數放在c中。合并的方式是:將a中的十位和個位數依次放在變量c的百位和個位上,b中的十位和個位數依次放在變量c的十位和千位上。
例如,當a=45,b=12,調用該函數后c=2415。
【參考答案】
void fun(int a, int b, long *c)
{*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;
}
25.3程序設計題
假定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:除了尾部的*號之外,將字符中的其它的*號全部刪除。形參p已指向字符串中最后的一個字母。在編寫函數時,不得使用C語言提供的字符串函數。
例如,字符串中的內容為****A*BC*DEF*G*******,刪除后,字符串中的內容應當是ABCDEFG*******。
【參考答案】
void fun( char *a, char *p )
{char *t=a;
for(;t<=p;t++)
if(*t!='*')
*(a++)=*t;
for(;*t!='\0';t++)
*(a++)=*t;
*a='\0';}
26.3程序設計題
學生的記錄由學號和成績組成,N名學生的數據已放入主函數中的結構體數組s中,請編寫函數fun,其功能是:按分數降序排列學生的記錄,高分在前,低分在后。
【參考答案】
void fun( STREC a[] )
{int i,j;
STREC t;
for(i=1;i
for(j=0;j
if(a[j].s
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
27.3程序設計題
學生的記錄由學號和成績組成。N名學生的數據已放入主函數中的結構體數組s中,請編寫函數fun,其功能是:把高于等于平均分的學生數據放在b所指的數組中,高于等于平均分的學生人數通過形參n傳回,平均分通過函數值返回。
【參考答案】
double fun( STREC *a, STREC *b, int *n )
{int i;
double av=0.0;
*n=0;
for(i=0;i
av=av+a[i].s;
av=av/N;
for(i=0;i
if(av<=a[i].s)
{ b[*n]=a[i];*n=*n+1;}
return av; }
28.3程序設計題
編寫函數fun,其功能是:將1到m之間(含m)能被7或11整除的所有整數放在數組a中,并通過n返回這些數的個數。例如,若傳給m的值為50,則程序輸出:
7 11 14 21 22 28 33 35 42 44 49
【參考答案】
void fun ( int m, int *a , int *n )
{int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;
}
29.3程序設計題
規(guī)定輸入的字符串中只包含字母和*號。編寫函數fun,其功能是:將字符串中的前導*號全部刪除,中間和尾部的*號不刪除。
例如,字符串中的內容為:"*******A*BC*DEF*G****",刪除后字符串中的內容應當是:"A*BC*DEF*G****"。編寫函數時,不得使用C語言提供的字符串函數。
【參考答案】
void fun( char *a )
{char *p=a;
while(*p=='*') p++;
for(;*p!='\0';p++,a++)
*a=*p;
*a='\0';
}
30.3程序設計題
N名學生的成績已在主函數中放入一個帶有頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數fun,其功能是:找出學生的最高分,并由函數值返回。
【參考答案】
double fun( STREC *h )
{double max=h->s;
while(h!=NULL)
{if(maxs) max=h->s;
h=h->next;}
return max;
}
【計算機二級考試C語言編程題練習題及答案】相關文章:
2017計算機二級考試C語言練習題及答案08-30
計算機二級C語言真題及答案06-20
計算機二級考試C語言歷年真題及答案解析08-30
2016年計算機二級C語言考試真題及答案08-22
2017年計算機二級c語言考試真題及答案08-27
2017計算機二級考試C語言習題及答案08-30
2017計算機二級考試C語言沖刺題08-30
計算機二級C語言筆試歷年真題及答案08-22