最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

計算機(jī)二級C語言上機(jī)題庫(四)

2021-03-01 08:07 作者:朝顏晚扶桑  | 我要投稿

二、數(shù)組題:

50、刪除w數(shù)組中下標(biāo)為k的元素中的值。

arrout(int *w,int m)

{int k;for(k=0;k<m;k++)printf(%d,w[k]);prntf(----);}

arrdel(int *w,int n,int k)

{int i;for(i=k;i<n-1;i++)w[i]= w[i+1];n--;return n;}

getindex(int n)

{int i;do{printf(\nenter the index[0<=i<%d]:,n);scanf(%d,&i);}while(i<0||i>n-1);return i;}

51、從數(shù)組xx中找出個位和百位的數(shù)字相等的所有無符號整數(shù),結(jié)果保存在數(shù)組yy中,其個數(shù)由函數(shù)fun返回。當(dāng)xx[8]={135,78,72,32,222,424,333,141,541}時,bb[6]={787,232,222,424,333,141}.

int fun(int xx[],int bb[],int num)

{int i,n=0;int g,b;for(i=0;i<num;i++){g=xx[i]%10;b=xx[i]/100;if(g= =b)bb[n++]=xx[i];}return n;}

52、從鍵盤輸入一組無符號整數(shù)并保存在數(shù)組xx[N]中,以整數(shù)0結(jié)束輸入,要求這些數(shù)的最大位數(shù)不超過4位,編寫函數(shù)從數(shù)組xx中找出個位和十位的數(shù)字之和大于5的所有無符號整數(shù),結(jié)果保存在數(shù)組yy中,個數(shù)由函數(shù)fun返回。當(dāng)xx[8]={123,11,25,222,42,333,14,5451}時,bb[4]={25,42,333,5451}.

Int fun(int xx[],int bb[],int num)

{int I,n=0;int g,s;for(i=0;i<num;i++){g=xx[i]%10;s=xx[i]/10%10;if((g+s)>5)bb[n++]=xx[i];}return n;}

53、求一維數(shù)組x[N]的平均值,并對所得結(jié)果進(jìn)行四舍五入(保留兩位小數(shù))。例如:當(dāng)x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0},結(jié)果為:avg=15.030000.

Double fun(double x[10])

{int i;long t;double avg=0.0;double sum=0.0;for(i=0;i<10;i++)sum+=x[i];avg=sum/10;avg=avg*1000;t=(avg+5)/10;

avg=(double)t/100;return avg;}

54、求出能夠整除x且不是偶數(shù)的各整數(shù),并放在數(shù)組pp中,這些除數(shù)的個數(shù)由n返回。例如,若x的值為30,則有四個數(shù)符合要求,它們是1,3,5,15.

Void fun(int x,int pp[],int *n)

{inti,j=0;for(i=1;i<=x;i+=2)if((x%i)= =0)pp[j++]=i;

*n=j;}

Main()

{int x,aa[1000];n,i;printf(---);scanf(%d,&x);fun(x,aa,&n);for(i=0i<n;i++)printf(%d,aa[i]);printf(\n);}

55、求能夠整除x且是偶數(shù)的數(shù),把這些數(shù)保存在數(shù)組bb中,并按從大到小的數(shù)序輸出。當(dāng)x=20時,依次輸出20,10,4,2.

Void fun(int k,int bb[])

{int i;int j=0;for(i=1;i<=k;i++){if(k%i= =0&&i%2= =0)bb[j++]=i;}printf(\n\n);for(i=--j;i>=0;i--)printf(%d,bb[i]);}

56、在主函數(shù)中,從鍵盤輸入若干個數(shù)放入數(shù)組x中,用0結(jié)束輸入但不計入數(shù)組。編寫函數(shù):輸出數(shù)組元素中小于平均值的元素。例如:數(shù)組中的值依次1,2,2,12,5,15則程序的運(yùn)行結(jié)果為1,2,2,5

Void fun(int x[],int n)

{double sum=0.0;double average=0.0;int i=0;for(i=0;i<n;i++)sum+=x[i];average=sum/n; for(i=0;i<n;i++)if(x[i]<average)

{if(i%5= =0)printf(\n;printf(%d,x[i]);}}

57、將n個人員的考試成績進(jìn)行分段統(tǒng)計,考試成績放在a數(shù)組中,各分段的人數(shù)存放b數(shù)組中:成績?yōu)?0到69的人數(shù)

存放到b[0]中,成績?yōu)?0到79的人數(shù)存放到b[1]中,------,成績?yōu)?0分以下的人數(shù)存到b[5]中,當(dāng)a數(shù)組中的數(shù)據(jù)

為:93,85,77,68,59,43,94,75,98。調(diào)用函數(shù)后,b數(shù)組中存放的數(shù)據(jù)是:1,2,1,3,0,2

void fun(int a[],int b[],int n)

{int i;for(i=0;i<6;i++)

b[i]=0; for(i=0;i<n;i++)

if(a[i]<60)b[5]++;else b[(a[i]-60)/10]++;}

main()

{inti,a[100]={---},b[6];fun(a,b,9);printf(----);for(i=0;i<6;i++)printf(%d,b[i]);printf(\n);}

58、對a數(shù)組中n個人員的工資進(jìn)行分到統(tǒng)計,各段的人數(shù)存到b數(shù)組中:工資為1000以下的人數(shù)存到b[0]中,工資為1000到1999的人數(shù)存到b[1]中,-----。

Void fun(int a[],int b[],int n)

{inti;for(i=0;i<6;i++)b[i]=0;for(i=0;i<n;i++)if(a[i]>=5000)b[5]++;else?b[a[i]/100]++;}

Main()

{inti,a[100]={---},b[6];fun(a,b,9);printf(the result is:); for(i=0;i<6;i++)printf(%d,b[i]);printf(\n);}

59、從鍵盤輸入學(xué)生的成績,統(tǒng)計各分?jǐn)?shù)段學(xué)生的人數(shù),A類為90~100分,B類為80~90,------,當(dāng)成績?yōu)?時結(jié)束成績輸入,例如:輸入89,99,45,64,56,78,88,74,66,55,0是結(jié)果為A:1,B:2,C:2,D:2,E:3

Main()

{float score[N];int bb[5];int grade,i=-1,n=0;char ch=A;printf(---);do{i++;n++;printf(score[%d]=,i);scanf(%f,&score[i]);}

While(score[i]!=0);for(i=0;i<5;i++)bb[i]=0; for(i=0;i<n-1;i++){grade=score[i]/10;switch(grade){case 10:case 9:bb[0]++;

Break; case 8:bb[1]++;break; case 7:bb[2]++;break; case 6:bb[3]++;break;default :bb[4]++;}}

for(i=0;i<5;i++)printf(\n%c:%d,ch+i,b[i]);}

60、刪去一維數(shù)組所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù),例如:若一維數(shù)組中的數(shù)據(jù)是:1,1,1,2,2,2,3,4,4,5,5,6,6,7,7,8,9,9,10,10,刪除后的內(nèi)容應(yīng)該是:1,2,3,4,5,6,7,8,9,10

Int fun(int a[],int n)

{int i,t,j=0,t=a[0];for(i=1;i<n;i++)if(t= =a[i]);else {a[j++]=t;t=a[i];}a[j++]=t;return j;}

61、將形參a所指數(shù)組中的前半部分元素中的值和后半部分元素中的值對換,形參n中存放數(shù)組中數(shù)據(jù)的個數(shù),若n為

奇數(shù),則中間的元素不動,例如:1,2,3,4,5,6,7,8,9,則調(diào)換后為:6,7,8,9,5,1,2,3,4

Void fun(int a[],int n)

{int i,t,p;p=(n%2= =0)?n/2:n/2+1;for(i=0;i<n/2;i++){t=a[i];a[i]=a[p+i]; a[p+i]=t;}}

62、從鍵盤輸入一組整數(shù),使用條件表達(dá)式找出最大的整數(shù),例如:1,2,3,5,4,0時,最大的數(shù)為:5.

Main()

{int num[N];int i=-1;int max=0;printf(---);do{i++;printf(num[%d]=,i);scanf(%d,&num[i]);max=max<num[i]?num[i]:max}

While(num[i]!=0);printf(max=%d\n,max);}

63、把a(bǔ)數(shù)組中的n個數(shù),和b數(shù)組中逆序的n個數(shù)一一對應(yīng)相乘、求平方,結(jié)果保存在c數(shù)組中。例如:當(dāng)a數(shù)組中的值是:1,3,5,7,8,b數(shù)組中的值是:2,3,4,5,8,調(diào)用該函數(shù)后,c中存放的數(shù)據(jù)是:64、225、400、441、256.

Void fun(int a[],int b[],int c[],int n)

{inti;for(i=0;i<n;i++)c[i]=(a[i]*b[n-1-i]*(a[i]*b[n-1-i]));}

main()

{inti;a[100]={1,3,5,7,8},b[100]={2,3,4,5,8},c[100];fun(a,b,c,5);printf(----);for(i=0;i<5;i++)

Printf(%d,c[i]);printf(\n);}

64、在x數(shù)組中放入n個采樣值,計算并輸出方差值。例如n=8,輸入:193.199,195.673,195.757-----,結(jié)果為1.135901。

Float fun(float x[],int n)

{int j;float xa=0.0,s;for(j=0;j<n;j++)xa+=x[j]/n;s=0; for(j=0;j<n;j++)s+=(x[j]-xa)*(x[j]-xa)/n;return s;}

65、計算并輸出給定10個數(shù)的方差(公式省略),給定的10個數(shù)為:15.0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0輸出為

S=2.758623

double fun(double x[10])

{int i;doble avg=0.0;double sum=0.0;double abs=0.0;double sd;for(i=0;i<10;i++)sum+=x[i];avg=sum/10; for(i=0;i<10;i++)

abs+=(x[i]-avg)* (x[i]-avg);sd=sqrt(abs/10);return sd;}

66、從鍵盤輸入一個下標(biāo)n,把數(shù)組aa中比元素aa[n]小的元素 放在它的左邊,比它大的元素放在它的右邊,排列成新的數(shù)組仍然保存在原數(shù)組中。如數(shù)組aa={33,67,42,58,25,76,85,16,41,56},若輸入3,則結(jié)果輸出為33,42,25,16,41,56,58,67,76,85.

Void fun(int a[],int n)

{int i,j=0,k=0,t;int bb[N];t=aa[n];for(i=0;i<N;i++){if(aa[i]>t)bb[j++]=aa[i]; if(aa[i]<t)aa[k++]=aa[i];}aa[k++]=t;for(i=0;i<j;i++

K++)aa[k]=bb[i];}

67、交換數(shù)組aa中最大和最小兩個元素的位置,結(jié)果依然保存在原數(shù)組中,其它元素位置不變。例如,輸入33,67,42,58,25,76,85,16,41,56,則輸出33,67,42,58,25,76,16,85,41,56

void fun(int aa[])

{int i,j,t;int max=0,min=0;for(i=0;i<N;i++){if(aa[max]<aa[i])max=i ;if(aa[min]>aa[i])min=i;}t=aa[max];aa[max]=aa[min];

aa[min]=t;}

68、把一維數(shù)組中的元素逆置,結(jié)果仍然保存在原數(shù)組中。

main()

{int i,j,t;int bb[N];for(i=0;i<N;i++)bb[i]=i;printf(---);for(i=0;i<N;i++)printf(%d,bb[i]);for(j=0,--i;j<=i;j++,i--){t=bb[j];

bb[j]=bb[i]; bb[i]=t;}printf(---);for(i=0;i<N;i++)printf(%4d,bb[i]);}

69、把形參a所指數(shù)組中的奇數(shù)按原順序一次存放到a[0],a[1],a[2]……中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個數(shù)通過函數(shù)值返回。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,1,4,2,3,6,5,8,7,刪除偶數(shù)后a所指數(shù)組中的數(shù)據(jù)為:9,1,3,5,7,返回值為5.

void fun(int a[],int n)

{int i,j;j=0;for(i=0;i<n;i++)if(a[i]%2= = 1){a[j]=a[i];++j;return j;}}

70、把數(shù)組aa中的奇數(shù)元素按原來的先后順序放在原數(shù)組后面。例如:輸入33,67,42,58,25,76,85,16,41,56,則輸出42,58,76,16,56,33,67,25,85,41.

void fun(int aa[])

{int i,j=0,k=0;int bb[N]; for(i=0;i<N;i++){if(aa[i]%2! = 0)bb[k++]=aa[i];else aa[j++]=aa[i];for(i=0;i<k;i++,j++)aa[j]=bb[i];}

71、把數(shù)組aa中元素下標(biāo)為奇數(shù)的元素按從大到小的順序重新保存在原數(shù)組中其他元素位置不變。例如:若輸入33,67,42,58,25,76,85,16,41,56。則輸出結(jié)果為:33,76,42,67,25,58,85,56,41,16.

void fun(int aa[])

{int i,j,t;for(i=1;i<N;i=i+2){for(j=i;j<N;j=j+2)if(aa[i]<aa[j]){t=aa[j];aa[j]= aa[i]; aa[i]=t;}}}

72、把數(shù)組aa中下標(biāo)為偶數(shù)的元素按從小到大的順序重新保存在原數(shù)組中,其它元素位置不變。例如輸入:33,67,42,58,25,76,85,16,41,56,則輸出結(jié)果為;25,67,33,58,41,76,42,16,85,56

void fun(int aa[])

{inti,j,t;for(i=0;i<N;i=i+2){ for(j=i;j<N;j=j+2) if(aa[i]>aa[j]){t=aa[j];aa[j]= aa[i]; aa[i]=t;}}}

73、把數(shù)組aa中的偶數(shù)元素按原來的先后順序放在原數(shù)組后面,例如:輸入33,67,42,58,25,76,85,16,41,56。則輸出結(jié)果為:33,67,25,85,41,42,58,76,16,56

void fun(int aa[])

{int i,j=0,k=0;int bb[N]; for(i=0;i<N;i++){if(aa[i]%2= = 0)bb[k++]=aa[i];else aa[j++]=aa[i];for(i=0;i<k;i++,j++)aa[j]=bb[i];}

74、逆置數(shù)組元素中的值,若a所指數(shù)組中的的數(shù)據(jù)一次為1,2,3,4,5,6,7,8,9,則逆置后一次為:9,8,7,6,5,4,3,2,1.

void fun(int aa[],int n)

{int i,j;for(i=0;i<n/2;i++)

{t=a[i]; a[i]= a[n-1-i]; a[n-1-i]=t;}}

75、求100(不包括100)以內(nèi)能被2或5整除,但不能同時被2或5整除的自然數(shù)。結(jié)果保存在數(shù)組bb中,函數(shù)fun返回數(shù)組bb元素的個數(shù)。

Int fun(int bb[])

{int i,j;for(i=1,j=0;i<100;i++)if((i%2!=0&&i%5= =0)||( i%2= =0&&i%5! =0))bb[j++]=i;return j}

76、如果數(shù)組aa的前一個元素比后一個元素小,則把它保存在數(shù)組,bb中并輸出,若輸入40,51,62,33,35,52,48,95,66,73,則結(jié)果輸出40,51,33,35,48,66。

Main()

{int I,n=0;int aa[N]={----};int bb[N];for(i=0;i<N-1;i++)if(aa[i]<aa[i+1])bb[n++]=aa[i];printf(---);for(i=0;i<n;i++)

printf(bb[%d]=%2d,i,bb[i]);}

77、1100間的所有素數(shù)保存在數(shù)組aa中,輸出這些素數(shù)并計算它們的和。

main()

{int n,i,j,k,flag,sum;int aa[50];sum=0;k=0;for(i=2;i<100;i++){flag=1;for(j=2;j<i&&flag;j++)if(i%j= =0){flag=0;}if(flag){

Sum=+i;aa[k++]=i;}}printf(---);for(i=0;i<k;i++){if(i%10= =0)printf(\n);printf(%4d,aa[i]);}printf(\nsum=%d,sum);}

78、把一個整數(shù)插入到一個已經(jīng)按從小到大排序的數(shù)組中,插入后數(shù)組仍然有序。例如:在數(shù)組bb[N]={12,23,31,44,51,63,71,79,85,95}中插入93,結(jié)果為:bb[N](11,21,31,41,51,61,71,79,81,93,95)

main()

{int i,j;int n;int bb[N+1]={----};printf(---);scanf(%d,&n);prinf(\n%d,n);printf(---);for(i=0;i<N;i++){if(n<=bb[i])

{for(j=N;j>i;j--)bb[j]=bb[j-1];bb[j]=n;break;}}if(i= =N)bb[i]=n;printf(---);for(i=0;i<N+1;i++)prinf(%4d,bb[i]);}

79計算x所指數(shù)組中N個數(shù)的平均值,平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出,例如:有10個正數(shù):46,30,32,40,617,4515,48,26,平均值為30.5主函數(shù)中輸出:m=30.0

double fun(double x[],double *av)

{int i,j;double d,s;s=0;for(i=0;i<N;i++)s=s+x[i];*av=s/ N;d=32767;for(i=0;i<N;i++)if(x[i]<*av&&*av-x[i]<=d)

{d=*av-x[i];j=i;}return?x[j];}

80計算形參x所指數(shù)組中N個數(shù)的平均值作為函數(shù)返回;并將大于平均值的數(shù)放在形參y所指數(shù)組中,在主函數(shù)中輸出。例如:有10個正數(shù):4630,32,40,6,17,45,15,48,26,平均值為30.5,主函數(shù)中輸出:46,3240,45,48

double fun(double x[],double *y)

{ int i,j;double av;av=0; for(i=0;i<N;i++)av=av+x[i]/N; for(i=j=0;i<N;i++)if(x[i]>av)y[j++]=x[i] ;y[j]= -1;return av;}

81計算形參x所指數(shù)組中N個數(shù)的平均值,將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。例如有10個整數(shù):4630,3240,6,17,45,15,4826,平均值為30.5,移動后的輸出為46,32,4045,4830,6,7,15,26.

double fun(double *x)

{ int i,j;double s, av,y[N];s=0; for(i=0;i<N;i++)s=s+x[i];av=s/N; for(i=j=0;i<N;i++)if(x[i]>av){y[j++]=x[i];x[i]= -1;}

for(i=0;i<N;i++)if(x[i]!= -1) y[j++]=x[i]; for(i=0;i<N;i++)x[i]=y[i];return av;}

82、計算形參x所指數(shù)組中N個數(shù)的平均值作為函數(shù)返回;將小于平均值的數(shù)放在數(shù)組的前部,平均值作為函數(shù)返回,例如有10個整數(shù):46,30,32,40,6,1745,15,48,26,平均值為30.5,主函數(shù)輸出為:30,6,17,15,2646,3240,45,48

double fun(double *x)

{ int i,j;double av,y[N];av=0; for(i=0;i<N;i++) av+=x[i]/N; for(i=j=0;i<N;i++)if(x[i]<av){y[j]=x[i];x[i]= -1;j++;}j=0;

While(i<N){if(x[i]!= -1) y[j++]=x[i];i++;} for(i=0;i<N;i++)x[i]=y[i];return av;}

83、計算scroem個人的平均成績aver,將低于aver的成績放在below中,通過函數(shù)名返回人數(shù)。當(dāng)scroe=10,20,30,40,50,6070,8090},m=9時,函數(shù)返回的人數(shù)應(yīng)該是4below=10,20,30,40}。

Int fun(int score[],int m,int below[])

{int i,j=0;float aver=0.0;for(i=0;i<m;i++)aver+=score[i];aver/=(float)m; for(i=0;i<m;i++)if(score[i]<aver)below[j++]=score[i];

return j;}

main()

{int i,b,below[9];int score[9]={----};n=fun(score,9,below);printf(----);for(i=0;i<n;i++)printf(%d,below[i]);}

84、計算每個學(xué)生成績的平均分,例如當(dāng)scroe[N][M]=83.5,82,86,65,67,{80,91.5,84,99,95},{90.5,95,86,95,97}時,三個學(xué)生的平均分為:76.7,89.992.7

main()

{int i,j;static float score[N][M]={---};float bb[N];clrscr();for(i=0;i<N;i++)bb[i]=0; for(i=0;i<N;i++){ for(j=0;j<M;j++)

bb[i]+=score[i][j];bb[i]/=M;} for(i=0;i<N;i++)printf(\nstudent%d\taverage=%5.1f,i+1,bb[i]);}

85、把形參a所指數(shù)組中的最小值放在元素a[0]中,接著把形參a所指數(shù)組中的最大值放在a[1]元素中;再把a所指數(shù)組中的次小值放在a[2]中,把a所指數(shù)組中的次大值放在a[3];其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,14,23,65,8,7;則按規(guī)則移動后數(shù)據(jù)排列為:1,92,8,3,74,65.

void fun(int a[],int n)

{inti,j,max,min,px,pn,t;for(i=0;i<n-1;i+=2){max=min=a[i];px=pn=i;for(j=i+1;j<n-1;j++){if(max<a[j]){max=a[j];px=j;} if(min>a[j]){min=a[j];pn=j;}}if(pn!=i){t=a[i];a[i]=min;a[pn]=t;if(px= =i)px=pn;}if(px!=i+1){t=a[i+1]; a[i+1]=max;a[px]=t;}}}

86、把數(shù)組bb中的數(shù)按從小到大的排列,若輸入2,3,5,4,1,則結(jié)果為:1,2,3,4,5.

Void fun(int bb[],int n)

{int i,j,t;for(i=0;i<n;i++)f

or(j=0;j<n-1;j++)if(bb[j]>bb[j+1]){t=bb[j]; bb[j]= bb[j+1]; bb[j+1]=t;}}

87、從數(shù)組xx中找出個位和百位的數(shù)字相等的所有無符號整數(shù),結(jié)果保存在數(shù)組yy中,其個數(shù)由函數(shù)fun返回。例如:當(dāng)xx[8]={1111,2413,2321,2222,4245,3333,1414,5335}時,bb[6]={1111,2321,2222,4245,3333,1414}。

int fun(int xx[],int bb[],int num)

{int i,n=0;int g,b;for(i=0;i<num,i++){g=xx[i]%10;b=xx[i]/100%10;if(g= =b)bb[n++]=x[i];}return n;}

88、調(diào)用隨機(jī)函數(shù)產(chǎn)生20個互不相同的整數(shù),放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)

Void fun(int *a)

{int i,x,n=0;x=rand()%20;

while(n<N){for(j=0;j<n;j++)if(x= =a[i])break;if(i= = n){a[n]=x;

n++;}x=rand()%20;}}

89、計算NXN維矩陣元素的方差,結(jié)果由函數(shù)返回。例如:A= ---,S= ---的計算結(jié)果是14.414 -----

double fun(int a[][N],int n)

{int i,j;int k;double s=0.0;double sd=0.0;for(i=0;i<n;i++) for(j=0;j<n;j++)s+=a[i][j];aver=s/(n*n); for(i=0;i<n;i++)

for(j=0;j<n;j++)f+=(a[i][j]-aver)* (a[i][j]-aver);f/=(n*n);sd=sqrt(f);return sd;}

90、按行統(tǒng)計NXN維矩陣元素中的最大值,并把這些值按從小到大的順序保存在數(shù)組b中。

Void fun(int a[][N],int b[],int n)

{ int i,j;int t;

for(i=0;i<n;i++) for(j=0;j<n;j++)if(b[i]<a[i][j]) b[i]=a[i][j]; for(i=0;i<n;i++) for(j=0;j<n;j++)if(b[i]<b[j])

{t=b[i];b[i]=b[j];b[j]=t;}}}

91、計算一個NXN矩陣的周邊元素平均值。當(dāng)N=4時:平均值為3.917。a= -----

double fun(int a[][N],int n)

{ int i,j;int k;double s=0.0;double aver=0.0;printf(---);for(i=0;i<n;i++) {for(j=0;j<n;j++){a[i][j]=rand()%10;printf(%d,a[i][j]);

if(i= = 0 || i= =n-1|| j= =0 || j= =n-1)s+=a[i][j];

}printf(\n);}k=4*n-4;aver=s/k;return aver;

92、輸出一個NXN矩陣,對非對角線上 的元素賦值為0,對角線元素賦值為1.

Main()

{int bb[N][N],int i,j,n;printf(---);scanf(%d,&n); for(i=0;i<n;i++) for(j=0;j<n;j++){b[i][j]=0;if(i= =j) b[i][j]=1; if(j= =n-1-i)

b[i][j]=1;------}}

93、計算3名學(xué)生的平均成績。例如:當(dāng)scroe[N][M] ={83.5,82,86,65,67},{80,91.5,84,99,95},{90.5,95,86,95,97}時,五門學(xué)科的平均分為84.5,89.5,85.3,86.3,86.3.

main()

{int i,j;static float score[N][M]={---};bb[N];clrscr();for(i=0;i<M;i++)

bb[i]=0.0; for(i=0;i<N;i++){ for(j=0;j<M;j++)

bb[j]+=score[i][j]; } for(i=0;i<M;i++)printf(\nstudent%d\taverage=%5.1f,i+1,bb[i]/N);return 0;}

94、輸出一個NXN矩陣,要求非周邊元素賦值0,周邊元素賦值1.

main()

{int bb[N][N];int i,j,n;clrscr();printf(----);scanf(%d,&n); for(i=0;i<n;i++) for(j=0;j<n;j++){if(i= =0 ||i= =n-1||j= =0|| i= =n-1)

bb[i][j]=1;else bb[i][j]=0;} for(i=0;i<n;i++){----} for(j=0;j<n;j++)printf(%4d,bb[i][j]);}}

95、輸出一個3X3的矩陣,要求必須使用行指針表示輸出變量。

main()

{static int array[3][3]={----};int (*p)[3],j,i;p=array;for(i=0;i<3;i++){printf(\n\n) ; for(j=0;j<3;j++) printf(%4d,*(*(p+i)+j);}}

96、根據(jù)形參m(2≤m≤9),在二維數(shù)組中存放一張m行m列的表格。例如輸入2則輸出為:---,若輸入4:----

fun(int a[][M],int m)

{int j,k;for(j=0;j<m;j++) for(k=0;k<m;k++)a[j][k]=(k+1)*(j+1);}

Main()

{int i,j,n;printf(---);scanf(%d,&n);fun(a,n)?for(i=0;i<n;i++);?for(j=0;j<n;j++) printf(%4d,a[i][j]);printf(\n);}

97、實現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。例如輸入下面的矩陣: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;

int arr[3][3]={--};?memcpy(arr,array,9*sizeof(int))?for(i=0;i<3;i++) for(j=0;j<3;j++)array[i][j]=arr[j][i];}

?Main()

{int i,j;int array[3][3]={---};?for(i=0;i<3;i++) {for(j=0;j<3;j++)printf(%7d, array[i][j]);printf(\n);}

fun(array);printf(---);for(i=0;i<3;i++) {for(j=0;j<3;j++)printf(%7d, array[i][j]);printf(\n;)}}

98、有NXN矩陣,根據(jù)給定的m(m<=N)值,將每行元素中的值均右移m個位置,左邊置為0.例如,N=3,m=2,有下列矩陣

???

??????1 ??2 ???3

??????4 ??5 ???6

??????7 ??8 ???9

程序執(zhí)行結(jié)果為:

??????0 ??0 ???1

??????0 ??0 ???4

??????0 ??0 ???7

Void fun(int (*t)[N],int m)

{int i,j;for(i=0;i<N;i++){ for(j= N-1-m;j>=0;j--)

t[i][j+m]= t[i][j];for

(j=0;j<m;j++) t[i][j]=0;}}

99、將a所指4*3的矩陣中第k行的元素與第0行的元素交換。例如有如下矩陣: ?1 ?2 ?3

??????????????????????????????????????????????????????????????????????????4 ?5 ?6

??????????????????????????????????????????????????????????????????????????7 ?8 ?9

??????????????????????????????????????????????????????????????????????????10 11 12

若k為2,程序執(zhí)行結(jié)果為:7 ?8 ?9

????????????????????????????????4 ?5 ??6

????????????????????????????????1 ?2 ??3

????????????????????????????????10 11 ?12

Void fun(int (*a)[N],int k)

{int i,temp; for(i=0;i<N;i++)temp=a[0][i]; a[0][i]= a[k][i]; a[k][i]=temp;}}

100、將NXN矩陣中元素的值按列右移1個位置,右邊被移出矩陣的元素繞回左邊。例如,N=3,有下列矩陣:

??????????????????????????????????????????????????????????????????????????1 ?2 ?3

??????????????????????????????????????????????????????????????????????????4 ?5 ?6

??????????????????????????????????????????????????????????????????????????7 ?8 ?9

計算結(jié)果為: ????3 ?1 ?2

4 ?5 ?6

9 ??7 ?8

Void fun(int (*t)[N])

{int i,j,x; for(i=0;i<N;i++){x=t[i][N-1];for(j=N-1;j>0;j++) t[i][j]= t[i][j-1]; t[i][0]=x;}}

101、有NXN矩陣,將矩陣的外圍元素順時針逆轉(zhuǎn)。操作順序是:首先將第一行元素的值存入臨時數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為第一行,臨時數(shù)組中的元素成為最后一列。例如,若N=3,有下列矩陣:

??????????????????????????????????????????????????????????????????????????1 ?2 ?3

??????????????????????????????????????????????????????????????????????????4 ?5 ?6

??????????????????????????????????????????????????????????????????????????7 ?8 ?9

計算結(jié)果為: 7 ?4 ?1

8 ?5 ?2

9 ?6 ?3

Void fun(int (*t)[N])

{int j,r[N]; for(j=0;j<N;j++) r[j]= t[0][j]; for(j=0;j<N;j++) t [0] [N-j-1] =?t[j][0]; for(j=0;j<N;j++)t[j][0]=t[N-1][j];

for(j=N-1;j>=0;j--) t[N-1][ N-1-j]= t[j][ N-1]; for(j=N-1;j>=0;j--) t[j][ N-1]=r[j];}

102、將NXN矩陣主對角線元素中的值與反向?qū)蔷€對應(yīng)位置上元素中的值進(jìn)行交換。例如,若N=3,有下列矩陣:

1 ?2 ?3

??????????????????????????????????????????????????????????????????????????4 ?5 ?6

??????????????????????????????????????????????????????????????????????????7 ?8 ?9

交換后為:3 ?2 ?1

5 ?6 ?4

8 ?7 ?9

Void fun(int?t[][N],int n)

{int i,s; for(i=0;i<n;i++){s=t[i][i]; t[i][i]= t[i][n-i-1]; t[i][n-i-1]=s;}}

103、計算NXN矩陣主對角線元素和反向?qū)蔷€元素之和,并作為函數(shù)值返回。例如:若N=3,有下列矩陣:

1 ?2 ?3

??????????????????????????????????????????????????????????????????????????4 ?5 ?6

??????????????????????????????????????????????????????????????????????????7 ?8 ?9

函數(shù)首先累加1、5、9,然后累加3、5、7函數(shù)的返回值為30.

Void fun(int t[][N],int n)

{int i,sum;sum=0;for(i=0;i<n;i++)sum+=t[i][i]; for(i=0;i<n;i++)sum+=t[i][n-i-1];return sum;}

104、建立一個NXN矩陣,矩陣元素的構(gòu)成規(guī)律是:最外層元素的值全部為1,從外向內(nèi)第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

Void fun(int (*a)[N])

{int i,j,k,m;if(N%2==0)m=N/2;else m=N/2+1;for(i=0;i<m;i++){for(j=i;j<N-1;j++)a[i][j]= a[N-i-1][j]=i+1;

For(i=i+1;k<N-I;k++)a[k][i]= a[k][N-i-1]=i+1;}}

105、在3X4的矩陣中找出在行上最大、在列上最小的那個元素,若沒有符合條件的元素則輸出相應(yīng)信息。例如:

????????????????????????????????????????????????????????????????????1 ?2 ?13 ?4

????????????????????????????????????????????????????????????????????7 ?8 ?10 ?6

????????????????????????????????????????????????????????????????????3 ?5 ?9 ??7

程序執(zhí)行結(jié)果為:9

Void fun(int (*a)[N])

{int i=0,j,find=0,rmax,c,k;while((i<M)&&(!find)){rmax=a[i][0];c=0; for(j=1;i<N;j++)if(rmax<a[i][j]){ rmax=a[i][j];c=j;}

Find=1;k=0; while((k<M)&& find){if(k!=i&&a[k][c]<=rmax)find=0;k++;}if(find)printf(--,i,c,a[i][c]);i++;}if(!find)-----}

106、有NXN矩陣,以主對角線為對稱線,對稱元素相加并將結(jié)果存放在左下三角元素中,右上三角元素為0. 例如:若N=3,有下列矩陣:

1 ?2 ?3

??????????????????????????????????????????????????????????????????????????4 ?5 ?6

??????????????????????????????????????????????????????????????????????????7 ?8 ?9

計算結(jié)果為:1 ?0 ?0

6?5 ?0

8?14 ?9

Void fun(int (*t)[N])

{int i,j;for(i=1;i<N;i++){for(j=0;j<i;j++){t[i][j]= t[i][j]+ t[j][i]; t[j][i]=0;}}}

107、找出NXN矩陣中每列元素中的最大值,并按順序存放于形參B所指的一維數(shù)組中。

Void fun(int (*a)[N],int *b)

{int i,j; for(i=0;i<N;i++){b[i]=a[0][i];for(j=0;j<i;j++)if(b[i]<a[j][i]) b[i]=a[j][i];}

main()

{int ?x[N][ N] ={----};y[N];I,j;printf(---);for(i=0;i<N;i++) {for(j=0;j<N;j++)printf(%4d, x[i][j]); printf(\n);}fun(x,y);

Printf(---);for(j=0;j<N;j++) printf(%3d, y[j]); printf(\n);}

108、判定形參a所指的NXN(規(guī)定N為奇數(shù))的矩陣是否是“幻方”,若是函數(shù)返回值為1,不是函數(shù)值返回為0. “幻方”的判定條件是:矩陣每行每列主對角線及反對角線上元素之和都相等。例如一下3X3的矩陣就是一個“幻方”。

??????????????????????????????????????????????????????????????????????????4 ?9 ?2

??????????????????????????????????????????????????????????????????????????3 ?5 ?7

??????????????????????????????????????????????????????????????????????????8 ?1 ?6

int fun(int (*a)[N])

{int I,j,m1,m2,row,colum;m1=m2=0; for(i=0;i<N;i++){j=N-i-1;m1+=a[i][i]; m2+=a[i][j];}if(m1!=m2)return 0;

for(i=0;i<N;i++){row=colum=0; for(j=0;j<N;j++){ row+= a[i][j]; colum+= a[j][i];}if(row!=colum)||(row!=m1)}return 0;}

return 1;}

109、將a所指3X5矩陣中第K列的元素左移到第0列、第K列以后的每列元素一次繞到右邊。例如有一下矩陣:

?????????????????????????????????????????????????????????????????????????1 ?2 ?3 ?4 ?5

?????????????????????????????????????????????????????????????????????????1 ?2 ?3 ?4 ?5

?????????????????????????????????????????????????????????????????????????1 ?2 ?3 ?4 ?5

若K為2,順序執(zhí)行結(jié)果為:3 ?4 ?5 ?1 ?2

?????????????????????????3 ?4 ?5 ?1 ?2

3 ?4 ?5 ?1 ?2

void fun(int (*a)[N],int k)

{int i,j,p,temp;for(p=1;p<=k;p++) for(i=0;i<M;i++){temp= a[i][0]; for(j=0;j<N-1;j++) a[i][j]= a[i][j+1];?a[i][N-1]=temp;}}


計算機(jī)二級C語言上機(jī)題庫(四)的評論 (共 條)

分享到微博請遵守國家法律
云安县| 博客| 峨眉山市| 布拖县| 彩票| 孟津县| 卓资县| 宁安市| 河北省| 清流县| 宝坻区| 鄢陵县| 沙田区| 济阳县| 织金县| 中超| 海宁市| 育儿| 县级市| 出国| 方山县| 军事| 保亭| 育儿| 南平市| 渭源县| 南川市| 南昌县| 洪洞县| 陵川县| 美姑县| 利辛县| 盖州市| 平果县| 会泽县| 内黄县| 婺源县| 五大连池市| 铅山县| 聂荣县| 文水县|