計算機二級C語言上機題庫(七)
編程題
一、?數(shù)字題
1、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位依次放在c個位和十位上,b的十位和個位依次放在c的百位和千位上。如當a=16,b=35,則c=5361
Void ?fun (int a,int b,long*c)
{*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;}
2、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個數(shù)依次放在c數(shù)的千位和十位上,b數(shù)的十位和個數(shù)依次放在c數(shù)的百位和個位上。例如:當a=45,b=12,調(diào)用該函數(shù)后,c=4152。
Void ?fun (int a,int b,long *c)
{*c=(a/10*1000+(b/10)*100+(a%10)*10+(b%10);}
3、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的千位和十位上。例如,當a=45,b=12,調(diào)用該函數(shù)后,c=1524
Void ?fun (int a,int b,long*c)
{*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);}
4、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上。例如,當a=45,b=12,調(diào)用該函數(shù)后,c=5241。
Void ?fun(int ?a,int b,long*c)
{*c=a%10*1000+b%10*100+a/10*10+b/10;}
5、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的千位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上。例如,當a=45,b=12,調(diào)用該函數(shù)后,c=4251。
Void ?fun (int a,int b,long *c)
{*c=a/10*1000+b%10*100+a%10*10+b/10;}
6、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上。例如,當a=45,b=12,調(diào)用該函數(shù)后,c=2514。
Void fun (int a,int b,long *c)
{*c=(b%10*1000+(a%10)*100+(b/10)*10+(a/10); }
7、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的千位和十位上。例如,當a=45,b=12,調(diào)用該函數(shù)后,c=1425。
Void ?fun (int a,int b,long*c)
{*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);}
8、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上。例如,當a=45,b=12,調(diào)用該函數(shù)后,c=2415.
Void ?fun(int a,int b,int*c)
{*c=(b%10)*1000+(a/10)*100+(b/10)*10+(a%10);}
9、?將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當a=45時,b=12,調(diào)用該函數(shù)后,c=5142。
Void ?fun(int a,int b,int*c)
{*c=a%10*1000+b/10*100+a/10*10+b%10;}
10、?求n以內(nèi)(不包括n)同時能被5與11整除的所有自然數(shù)之和的平方根s并作為函數(shù)值返回。如:n為1000時,函數(shù)值應為s=96.979379。
double fun(int ?n)
{double ?s=0.0;int i;
for(i=0;i<n;i++)
If(i%5 = =0&&i%11= =0)s=s+i;
s=sqrt(s);return ?s;}
11、?計算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。如:n的值為56,則輸出為sum=1113。
long fun(int n)
{int i;long s=0;
for(i=2;i<=n-1;i++)
if(n%i= =0)s+=i*i;return ?s;}
12、?求n以內(nèi)(不包括n)同時能被3與7整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。若n為1000時,s=153.909064
double ?fun(int n)
{double s=0;int i;
for(i=0;i<n;i+ +)
if (i%3= = 0&&i%7= = 0)s+=1;s=sqrt(s); ??return s;}
13、?計算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。如,若給n輸入20后,則輸出為s=0.583333.
double ?fun(int n)
{int i;double sum=0;
for(i=1;i<=n;i+ +)
If(i%5= = 0||i%9= =0)sum+=1.0/i; ???return ?sum;}
14、?計算并輸出3到n之間所有素數(shù)的平方根之和。如,若給n輸入100后,則輸出為sum=148.874270
double ?fun (int n)
{int m,k,i;double s=0;
for(m=3;m<=n;m++){k=aqrt(m);
for(i=2;i<=k;i+ +)
If(m%i= =0)break;
If(i>=k+1)s+=sqrt(m);}return s:}
15、?判斷整數(shù)X是否是同構數(shù)。若是同構數(shù),函數(shù)返回1;否則返回0。
int fun(int x)
(if(x<10)return (! ((x*x-x)%10));
else return (! ((x*x-x)%100));}
106、用篩選法求出100之內(nèi)的素數(shù)
Void fun (int *pt)
{int i,j,flag;*pt=2;*pt++;
for(i=3;i<100;i++){flag=1;
for(j=2;j<i;j+ +)
If(i%j= =0)flag=0;
If(flag){*pt=i;*pt++;}}*pt=0;}
16、?返回小蠶需要多少天才能爬到樹頂(樹高k厘米,小蠶每天白天向上爬m(xù)厘米,每天晚上因睡覺向下滑n厘米,爬到頂后不再下滑)(n<m<k)。例如,若分別輸入253、71、29給k、m、n,則輸出結果為:6。
int day(int k,int m,int n)
{int days,height=0;
for(days=1;;days++){height+=m;if(height>=k)return days;height-=n;}}
17、?求Fibonacci數(shù)列中小于t的最大的一個數(shù),結果由函數(shù)返回。其中數(shù)列F(n)的定義為F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)例如:t=1000時,函數(shù)值為987。
int fun(int t)
{int a=1,b=1,c=0,i;
do{c=a+b;a=b;b=c;}while(c<t);
c=a;return?c;}
18、?求Fibonacci數(shù)列中大于T的最小的一個數(shù),結果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為:F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2 ) 例如,當t=1000時,函數(shù)值為1597。
int fun(int t)
{int a=1,b=1,c=0,i;
for(i=4;i<=t;i+ +)
{if(c<t) {c=a+b;a=b;b=c; }
else break;}return c;}
19、?W是一個大于10的無符號整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。
unsigned fun(unsigned w)
{if(w>=10000) return w%10000;
If(w>=1000) return w%1000;
If(w>=100) return w%100;
If(w>=10)return w%10;}
20、?對變量h中的值保留兩位小數(shù),并對第三位進行四舍五入(規(guī)定h中的值為正數(shù))。例如:若h值為8.32433,則函數(shù)返回8.32;若h值為8.32533,則函數(shù)返回8.33。
float fun (float h)
{long t;t=(h*1000+5)/10;
Return (float)t/100;}
21、?利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。Xn-1=cos(xn)迭代步驟如下:(1)取x1初值為0.0;(2)x0=x1,把x1的值賦給x0;(3)x1=cos(x0),求出一新的x1;(4)若x0-x1的絕對值小于0.000001,則招待步驟(5),否則執(zhí)行步驟(2);(5)所求z1就是方程cos(x)-x=0的一個實根作為函數(shù)值返回。輸出結果Root=0.739085
Root=0.739085.
float fun0
{float x1=0.0,x0; ??do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=le-6);
Return x1;}
22、?根據(jù)以下公式計算s,計算結果通過形指針sn傳回;s通過形參傳入。SN=1/1-1/3+1/5-1/7+……(-1)^n/(2n-1)例如:若n的值為11時,S=0.764601
void fun(float*sn,int n)
{int i;float s=1;*sn=0;
for(i=0;i<=n;i++)
{*sn=*sn+s*(1.0/(2*i+1));s=-s;}}
23、?S=(1+1/2)+(1/3+1/4)+……+(1 (2n-1)+1/2n)如:若給n輸入12后 ?則輸出為S=3.775958。n的值要求大于1但不大于100。
double fun(int n)
{int i;double s=0.0;
for(i=1;i<=n;i++)
s=s+(1.0/(2*i-1)+1.0/(2*1));return s;}
24、?計算:s=(1-1n(1)-1n(2)- (3)-…1n(m))2s作為函數(shù)值返回。在C語言中可調(diào)用log(n)函數(shù) ??求ln(n)。log函數(shù)的引用說明是double ?log( double ?x).如,若 ?的值為15,則函數(shù)值為723。57080 ?
double fun(int m)
{int i;double s=1.0;
for(i=1;i<=m;i++)s=s-log(i);
return(s*s);}
25、?計算下列級數(shù),和值由函數(shù)值返回。S=1-x+x2/2!-x2/3!+……+(-1* ?n/n!.如當n=15,x=0.5時,值為 0.606531.
Double fun(double x,int n)
{int i,j=1;double s=1.0,s1=1.0;
For(i=1;i<=n;i++){j=-1*j;s1=s1*i;
S=s+j*pow(x,i)/s1;}return s;}
26、?根據(jù)以下公式計算s,計算結果作為函數(shù)值返回;n通過形參傳入。
S=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+……+n)。若n的值為11時,值為1.833333。
float fun(int n)
{int i,s1=0;float s=0.0;
for (i=1;i<=n;i++){s1=s1+i;
s=s+1.0/s1;}return s;}
27、?根據(jù)以下公式求P的值,結果由函數(shù)值帶回。m與n為兩個正數(shù)且要求m>n。P=m!/(n!(m-n)!) 例如:m=12,n=8時,運行結果為495.000000。
float fun (int m int n)
{int i;double p=1.0;
for(i=1;i<=m;i++) p=p*i;
for(i=1;i<=n;i++) p=p/i;
for(i=1;i<=m-n;i++)p=p/i;
return p;}
28、?求p的值(要求滿足精度0.005,即某項小于0.005時停止迭代)。
??????p/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.140578。
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;}
29、?S=1/(1×2)+1/(2×3)+……+1/(n×(n+1))例如,當n=10時,函數(shù)值為0.909091。
double fun(int n)
{int i;double s=0.0;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));return s;}
30、?計算并輸出給定10個數(shù)的方差。
S=[ ∑(xk-x2) ?]0.5
?
其中x2= ????????????
??????????????K=1
例如,給定的10個數(shù)為95.0,89.0,76.0,95.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。
Double fun(double ?x[10])
{double x1=0.0,s=0.0;int i;
for(i=0;i<10;i++)x1=x1+x[i];
x1=x1/10;
for(i=0;i<10;i++)
s+=(x[i]-x1)*(x[i]-x1);
return sqrt(s/10);}
31、?S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)。例如,若給n輸入8后,則輸入為S=0.662872。
double fun(int n)
{int i;double s=0.0;
for(i=1;i<=n;i++)
s=s+(1.0/(2*i-1)-1.0/(2*i));
Return s;}
32、?計算s=(1n(1)+1n(2)+1n(3)+…+1n(m))0.5.可調(diào)用log(n)函數(shù)求ln(n)。若m的值為20,則函數(shù)值為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);}
33、?計算下列和值由函數(shù)值返回。S=1+x+x2/2!+x3/3!+…+xn/n!例如,當n=10,x=0.3時,函數(shù)值為1.349859。
S=1+x+x2/2!+x3/3!+……xn/n!例如,當n=10,x=0.3時,函數(shù)值為1.349859。
double fun(double x,int n)
{int i;double s=1.0,s1=1.0;
for(i=1;i<=n;i++){s1=s1*i;
s=s+pow(x,i)/s1;}return s;}
34、?S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)如,若給n輸入20后,則輸出為S=534.188884。
double fun(int n)
{int i;double s=0.0,s1=0.0;
for(i=1;i<=n;i++)
{s1=s1+pow(i,0.5);s=s+s1;}
return s;}
35、?Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!如,若給n輸入15,則輸出為s=2.718282.
double fun(int n)
{double t,sn=1.0;int i,j;
for(i=1;i<=n;i++)
t=1.0;for(j=1;j<=i;j++)t*=j;
sn+=1.0/t;}return sn;}
36、?計算并輸出當x<0.97時下列多項 ??式的值,直到[Sn-Sn-1]<0.000001為止。
Sn=1+0.5x+(0.5*(0.5-1))/2!*x3(0.5*(0.5-1)*(0.5-2))/3!*x3+…+(0.5*(0.5-1)*(0.5-2))*…(0.5-n+1))/n!*xn.若給x輸入0.21后,則輸出為s=1.100000。
double fun(double x)
{double
S1=1.0,p=1.0,sum=0,s0,t=1;
int n=1;do{s0=s1;sum+=s0;t*=n;p*=(0.5-n+1)*x;s1=p/t;n++;}while(fabs(s1-s0)>=le-6);return sum;}
數(shù)組題
37、?求出一個2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。
fun (int a[][M])
{int i,j,max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(max<a[i][j])max=a[i][j];
return max;}
38、?求出一個4×M整型二維數(shù)組中最小元素的值,并將此值返回調(diào)用函數(shù)。
fun (int a[][M])
{int i,j,min=a[0][0];
for(i=0;i<4;i++)
for(j=0;j<M;j++)
If(min>a[i][j])min=a[i][j];
Return min;}
39、?求出二維數(shù)組每列中最大元素,并依次放入PP所指的一維數(shù)組中。
void fun(int tt[M][N],int pp[N])
{int i,j,max;
for(j=0;j<N;j++){max=tt[0][j];
for(i=0;i<M;i++)
If(tt[i][j]>max)max=tt[i][j];pp[j]=max;}}
40、?程序定義了N×N的二維數(shù)組,給數(shù)組周邊元素置0值。
fun (int w[][N])
{int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i= =0︳︳i= =N-1︳︳j= =0︳︳j==N-1)
W[i][j]=0;}
41、?程序定義了N×N的二維數(shù)組,使數(shù)組中第一行元素中的值與倒數(shù)第一行元素中的值對調(diào)、第二行元素中的值與倒數(shù)第二行元素中的值對調(diào)、……、其他依次類推。
例如:a數(shù)組中的值為
0 11 12 7 9
1 9 7 4 5
20 13 18 3 1
14 5 6 8 2
15 9 17 4 1
則返回主程序后a數(shù)組中的值應為
15 9 17 4 1
14 5 6 8 2
20 13 18 3 1
1 9 7 4 5
0 11 12 7 9
int fun(int a[][N])
{int i,j,k;
for(i=0;i<N/2;i++)
for(j=0;j<N;j++)
{k=a[i][j];a[i][j]=a[N-i-1][j];a[N-i-1][j]=k;}}
42、程序定義了N×N的二維數(shù)組,使數(shù)組中第一行元素中的值與最后一列元素中的值對調(diào)、第二列元素中的值與倒數(shù)第二列元素中的值對調(diào)、……、其他依次類推。例如:a數(shù)組中的值為
0 11 12 7 9
1 9 7 4 5
20 13 18 3 1
14 5 6 8 2
15 9 17 4 1
則返回主程序后a數(shù)組中的值應為
9 7 12 11 0
5 4 7 9 1
1 3 18 13 20
2 8 6 5 14
1 4 17 9 15
Int fun(int a[][N])
{int i,j,k;
For(i=0;i<N/2;i++)
For(j=0;j<N;j++)
{k=a[j][i];a[j][i]=a[j][N-i-1];a[j][N-i-1]=k;}}
43、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。編寫函數(shù):使數(shù)字右上半三角元素中的值乘m。例如,若m的值為2,a數(shù)組中的值為
?a=1 9
???2 7
則返回主程序后a數(shù)組的值應為
2?18
2?14
int fun(int a[][N],int m)
{int i,j;
for(i=0;i<N;i++)
for(j=I;j<N;j++)a[i][j]*=m;}
44、程序定義了N×N的二維數(shù)組,使數(shù)組左下半三角元素中的值加上n。如:若n的值為3,a數(shù)組中值為
a= 2 5 4
1 6 9
5 3 7
則返回主程序后a數(shù)組中的值應為
5 5 4
4 9 9
8 6 10
fun (int a[][N],int n)
{int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]=a[i][j]+n;}
45、下列程序N×N的二維數(shù)組 ,并在主函數(shù)中賦值。編寫函數(shù):求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的s。例如:若a數(shù)組中的值為
a=0 1 2 7 9
1 11 21 5 5
2 21 6 11 1
9 7 9 10 2
5 4 1 4 1
則返回主程序后的s值310.
int fun (int w[][N])
{int i,j,k=0;int s=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i= =0||i==N-1||j= =0||j= =N-1)
s=s+w[i][j]*w[i][j];return s;}
46、下列程序N×N的二維數(shù)組 ,并在主函數(shù)中賦值。求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給主函數(shù)中的s。若a數(shù)組中的值為
?a =0 1 2 7 9
1 9 7 4 5
2 3 8 3 1
4 5 6 8 2
5 9 1 4 1
則返回主程序后的s值應為3.375。
double fun (int w[][N])
{int i,j,k=0;double av=0.0;
for(i=0;i<N;i++)
for(i=0;i<N;j++)
if(i= =0||i= =N-1||j= =0||j= =N-1)
{av=av+w[i][j];k++;}return av/k;}
47、求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如:若二維數(shù)組中的值為
1 3 5 7 9
2 9 9 9 4
6 9 9 9 8
1 3 5 7 0
則函數(shù)值為61。
int fun(int a [M][N])
{int i,j,sum=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(i= =0||i= =M-1||j= =0||j= =N-1)
sum=sum+a[i][j];return sum;}
48、實現(xiàn)矩陣(3行3列)的轉置(即行列互換)。例如,若輸入下面的矩陣:
100 ?200 ?300
400 ?500 ?600
700 ?800 ?900
則程序輸出:
100 ?400 ?700
200 ?500 ?800
300 ?600 ?900
int fun (int array[3][3])
{int i,j,t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++){t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;}}
49、實現(xiàn)B=A+A’,即把矩陣加上A的轉置,存放在矩陣B中。
輸入下面矩陣: 1 2 3
4 5 6
7 8 9
?
其轉置矩陣為: 1 4 7
2 5 8
3 6 9
則程序輸出:2 6 10
6 10 14
10 14 18
Void fun(int a[3][3],int b[3][3])
{int i,j;
for(i=0;i<3;i++)
for(j=0;i<3;j++)
b[i][j]=a[i][j]+a[j][i];}
50、將M行N列的二維數(shù)組中的數(shù)據(jù)按列的順序依次放到一維數(shù)組中,例如,二維數(shù)組中的數(shù)據(jù)為:
33 33 33 33
44 44 44 44
55 55 55 55
則一維數(shù)組中的內(nèi)容應該是
33,44,55,33,44,55,33,44,55,33,44,55。
Void fun(int (*s)[10],int *b,int *n,int ㎜ int m)
{int x,y;
For(x=0;x<nn;x++)
For(y=0,y<mm;y++)
{b[x*mm+y]=*(s[y]+x);(*n)++;}}
51、將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。若二維數(shù)組中的數(shù)據(jù)為:
33 33 33 33
44 44 44 44
55 55 55 55
則一維數(shù)組中的內(nèi)容應該是
33,33,33,33,44,44,44,44,55,55,55,55.
Void fin (int (*s)[10],int*b, int*n, int mm, int m)
{int i,j,k=0;
for(i=0;i<mm;i++)
for(j=0;j<nn;j++)b[k++]=s[i][j];
*n=k;}
52、求出一個M×N二維數(shù)組每行元素的和數(shù),并依次放入一個一維數(shù)組中傳回主函數(shù)。例如,若有以下二維數(shù)組:
6 10 2 10 16
17 15 15 8 6
4 18 11 19 12
0 12 1 3 7
則輸出:44,61,64,23
fun (int a[][N],int b[])
{int i,j,sum=0,n=0,
for(i=0;i<M;i++)
{for(j=0;j<N;j++)sum+=a[i][j];
b[n++]=sum;sum=0;}}
53輸出一個如下的n階方陣。變量n文件c9670503.In中。例如若讀入4或5,則分別輸出1 ?2 ??3 ??4
8 ?7 ??6 ??5
9 ?10 ?11 ?12
16 ?15 ?14 ?13
或
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
25 24 23 22 21
Void Mtrx(int)
{int a[M]={0},d=0,I,j,k;} *fp;
Fp=fopen(“dat52.dat”,”w”);
For(i=1;i<=n;i++)
{for(j=0;j<n;j++){d+;a[j] if(i%2) ?for(k=0;k<n;k++)
{printf(“%3d”??,
a[k]);fprintf(fp,”%3d”,a[k]);}
else for(k=n-1;k>=0;k--)
{print(“\n”);fprintf(fp,”\n)
Fclose(fp);}
54、求數(shù)組的最小元素在數(shù)組中下標存放在k所指的存儲單元中。如輸 ?234,345,753,134,436,458,100, 5,760則輸出結果為6,100。
int fun(int *s,int t,int )
{inti;*k=0;for(i=0;i<t;i++)if(s[*k]>s[i])*k=i;}
55、找出一維數(shù)組元素中最大的值和它所在的下標,最大值和它所在的下標通過形參傳回。數(shù)組元素中的值已居主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),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 (*max<a[i]){*max=a[i];*d=i;}}
56、把20個隨機數(shù)存入一個數(shù)組,然后輸出該數(shù)組中的最小值。
int fun(int list[],int size)
{int x,i;x=0;
for(i=1;i<size;i++)
if(list[x]>list[i])x=i;return x;}
57、將數(shù)組xx(有n個元素)的前k個元素(k<n)移到數(shù)組的尾部,變?yōu)楹髃個元素,但是數(shù)組的這兩段(原前k個元素為一段、另外的n-k個元素為一段)中元素的順序不得改變。例如,若輸入:7和 1 2 3 4 5 6 7,再輸入:5,則輸出應為:6 7 1 2 3 4 5。
Void Move(int n,int xx[],int k)
{int i,j,t;
for(i=0;i<k;i++){t=xx[0];
for(j=1;j<n;j++)
xx[j-1]=xx[j];xx[n-1]=t;}}
58、移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面,一維數(shù)組中的原始內(nèi)容為
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動后,一維數(shù)組中的內(nèi)容應為7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。
void fun(int *w,int p,int n)
{int i,j,t;
for(i=p;i<=n-1;i++){t=w[n-1];
for(j=n-2;j>=0;j- -)
W[j+1]=w[j];w[0]=t;}}
59、移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標從0到P(P≤n-1)的數(shù)組元素平移到數(shù)組的最后,如一維數(shù)組中的原始內(nèi)容應為1,2,3,4,5,6,7,8,9,10,10,11,12,13,14,15,P為3移動后一維數(shù)組中的內(nèi)容應為5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。
Void fun(int *w,int p,int n)
{int i,j,t;
For(i=0;i<=p;i++){t=w[0];
For(j=1;j<n;j++)
w[j-1]=w[j];w[j-1]=t;}}
60、刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。若一維數(shù)組中的數(shù)據(jù)是:
2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10刪除后,數(shù)組中的內(nèi)容應該是:2,3,4,5,6,7,8,9,10。
Int fun(int a[],int n)
{int i,j=1;
for(i=1;i<n;i++)
if(a[j-1]!=a[i])a[j++]=a[i];return j;}
61、求出能整除X且不是奇數(shù)的各整數(shù),并按從小到大的順序放在PP所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。若X中的值為24,則有6個數(shù)符合要求,它們是2,4,6,8,12,24。
void fun(int x,int pp[],int*n)
{int i,j=0;
For(i=2;i<=x;i=i+2)
If(x%i= =0)pp[j++]=i;*n=j;}
62、求出能整除X且不是偶數(shù)的各整數(shù),并按從小到大的順序放在PP所指的數(shù)組中,這些除數(shù)個數(shù)通過形參n返回。若X中的值為30,則有4個數(shù)符合要求,它們是1,3,5,15。
void fun (int x,int pp[],int*n)
{int i,j=0;
for(i=1;i<x;i=i+2)
if(x%i= =0)pp[j++]=i;*n=j;}
63、將大于整數(shù)m且緊靠m的k個非素數(shù)存入所指的數(shù)組中。如,若輸入15,5,則應輸出16,18,20,21,22。
void fun(int m,int k,int xx[])
{int i,j,n;
for(i=m+1,n=0;n<k;i++)
for(j=2;j<i;j++)
if(i%j= =0){xx[n++]=i;break;}}
64、求出1到1000之內(nèi)能被5或13整除、但不能同時被5和13整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。
void fun(int *a,int *n)
{int i,j=0;
for(i=1;i<=1000;i++)
if((i%5= =0||i%13= =0)&& i %65 !=0)
a[j++]=i;*n=j}
65、求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。若傳給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;}
66、求出1到1000之內(nèi)能被7或11整除的所有整數(shù),但不能同時被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過a返回這些數(shù)的個數(shù)。
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;}
67、將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入17,5則應輸出19,23,29,31,37。
void fun(int m,int k,int xx[])
{int i,j,n;
for(i=m+1,n=0;n<k;i++)
{for(j=2;j<I;j++)if(i%j==0)break;
If(j>=i)xx[n++]=i;}}
68、求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素數(shù)的個數(shù)。
int fun(int lim,int aa[MAX])
{int i,j,k=0;
for(i=2;i<=lim;i++)
{for(j=2;j<i;j++)if(i%j= =0)break;
if(j>=i)aa[k++]=i;}return k;}
69、將所有大于1小于整數(shù)m的非素數(shù)存入XX所指數(shù)組,非素數(shù)的個數(shù)通過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<m;i++)
{for(j=2;j<i;j++)if(i%j= =0)break;
if(j<i)xx[n++]=i;}*k=n;}
70、將所有大于1小于整數(shù)m的素數(shù)存入XX所指數(shù)組中,系數(shù)的個數(shù)通過k傳回。輸入25,則應輸出2,3,5,7,11,13,17,19,23.
void fun(int m,int*k,int xx[])
{int i,j,t,n=0;
for(i=2;i<m;i++)
{t=1;for(j=2;j<1;j++)
if(i%j= =0){t=0;break;}
if(t= =1)xx[n++]=i;}*k=n;}
71、m個人的成績存放在score數(shù)組中,編寫函數(shù);將高于平均分的分數(shù)作為函數(shù)值返回,將高于平均分的分數(shù)放在up所指的數(shù)組中。如,當score數(shù)組中的數(shù)據(jù)為
24,35,88,76,90,54,59,66,96時,函數(shù)返回的人數(shù)應該是5,up中的數(shù)據(jù)應為88,76,90,66,96。
int fun(int score[],int m,int up[])
{int i,j=0;float av=0.0;
for(i=0;i<m;i++)av=av+score[i]/m;
for(i=0;i<m;i++)
if(score[i]>av)up[j++]=score[i];
return j;}
72、m個人的成績存放在score數(shù)組中,編寫函數(shù);將低于平均分的分數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中,當score數(shù)組中的數(shù)據(jù)為
10,20,30,40,50,60,70,80,90時,函數(shù)返回的人數(shù)應該是4,below中的數(shù)據(jù)應為10,20,30,40.
int fun(int score[],int m,int below[])
{int i,j=0;float av=0.0;
for(i=0;i<m;i++)
av+= score[i]
av=av/m;
for(i=0;i<m;i++)?
if(score[i]<av)below[j++]=score[i];
return j;}
73、計算n門課程的平均分,計算結果作為函數(shù)值返回。若有5門課程的成績是90.5,72,80,61.5,55則函數(shù)的值為71.80
float fun(float *a,int n)
{float av=0.0;int i;
for(i=0;i<n;i++)av=av+a[i];
Return (av/n);}
74、統(tǒng)計各年齡段的人數(shù)。N個齡通過調(diào)用隨機函數(shù)獲得,并放在主函數(shù)的age數(shù)組中。要求函數(shù)把0至9歲年齡段的人數(shù)在d[0]中,把10至19歲年齡段的人數(shù)放在d(1)中,把20至29歲年齡段的人數(shù)放在d[2]中,依次類推,把100歲(含100)以上年齡的人數(shù)都放在d[10]中。結果在主函數(shù)中輸出。
void fun(int *a,int*b)
{int i,j;
for(j=0;j<M;j++)b[j]=0;
for(i=0;i<N;i++)
if(a[i]>=100)b[10]++;
else b[a[i]/10]++;}
75、分別求出數(shù)組中所奇數(shù)之和以及所有偶數(shù)之和。形參n給出數(shù)組中數(shù)據(jù)的個數(shù);利用指針odd返回奇數(shù)之和,利用指針even返回偶數(shù)之和。例如,數(shù)組中的值依次為:1,9,2,3,11,6;則利用用指針odd返回奇數(shù)之和24;利用指針even返回偶數(shù)之和8。
fun(int*a,int n,int*odd,int*even)
{int i;*odd=*even=0;
for(i=0;i<n;i++)
if(a[i]%2==1)*odd+=a[i];
else*even+=a[i];}
76、刪除bb數(shù)組中所有值為Y的元素。
void fun(int bb[],int *n,int y)
{int i,pos=*n-1;
for(;pos>=0;pos--)
if(bb[pos]= =y)
{for(i=os;i<*n-1;i++)
bb[i]=bb[i+1];(*n)- -;}}
77、求出數(shù)組dd中前k個數(shù)的小數(shù)的部分的和,并返回此值。若輸入4和101.91、213.87、345.79、420.83,則輸出3.4。
double Acc(int k,double dd[])
{int i,a;double b,sum=0;
for(i=0;i<k;i++){a=dd[i];
b=dd[i]-a;result+=b;}return sum;}
78、求出數(shù)組PP中n個數(shù)的整數(shù)部分的和,并返回此值。若輸入4和11.91、23.87、35.79、40.83,則輸出109.0,整數(shù)部分的值應小于10的16次方。
Double Pbt(int n,double pp[])
{int i,a;double sum=0;
for(i=0;i<n;i++){a=pp[i];sum+=a;}
return sum;}
79、計算并輸出給定數(shù)組(長度為9)中每相鄰兩個元素之平均值的平方根之和。例如,給定數(shù)組中的9個元素依次為12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,輸出應為:S=35.951014。
double fun(double x[9])
{int i;double avg=0.0,sum=0.0;
for(i=0;i<8;i++){avg=(x[i]+x[i+1])/2;
sum+=sqrt(avg);}return sum;}