【数组练习】
1、计算数据的方差
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; int n; double a[10023],ave,sq; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf",&a[i]); ave+=a[i]; } ave/=n; for(int i=1;i<=n;i++) sq+=(a[i]-ave)*(a[i]-ave); sq/=n; printf("%.5lf %.5lf",ave,sq); return 0; }
2、年龄与疾病
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; /* 1-18: 20.00% 19-35: 20.00% 36-60: 20.00% Over60: 40.00% */ int main() { int n; double a=0,b=0,c=0,d=0; scanf("%d",&n); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(x<=18) a+=1; else if(x<=35) b+=1; else if(x<=60) c+=1; else d+=1; } a/=n; b/=n; c/=n; d/=n; printf("1-18: %.2lf%%\n",a*100); printf("19-35: %.2lf%%\n",b*100); printf("36-60: %.2lf%%\n",c*100); printf("Over60: %.2lf%%",d*100); return 0; }
3、人民币支付
#include <stdio.h> #include <math.h> int S; int main() { scanf("%d",&S); printf("%d\n",S/100); S%=100; printf("%d\n",S/50); S%=50; printf("%d\n",S/20); S%=20; printf("%d\n",S/10); S%=10; printf("%d\n",S/5); S%=5; printf("%d",S); return 0; }
#include <stdio.h> #include <math.h> int n,m; int a[101][101]; int main() { int i,j; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); i=1,j=1; int kk=2,fl=0; while(1) { printf("%d\n",a[i][j]); if(i==n && j==m) break; if(j==1 || i==n) { if(kk<=m && !fl) { i=1; j=kk; kk++; } else if(!fl) kk=2,i=2,j=m,fl=1; else { kk++; i=kk; j=m; } } else i++,j--; } return 0; }
5、二维数组回形遍历
#include <stdio.h> #include <math.h> int n,m; int a[101][101],map[300][300]; int dirx[]={0,0,1,0,-1}; int diry[]={0,1,0,-1,0}; int main() { int i,j; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); i=1,j=1; int fl=1,ans=0; while(1) { map[i][j]=1; ans++; printf("%d\n",a[i][j]); if(ans==n*m) break; i+=dirx[fl],j+=diry[fl]; if(map[i][j] || i<1 || i>n || j<1 || j>m) { i-=dirx[fl],j-=diry[fl]; fl++; if(fl>4) fl%=4; i+=dirx[fl],j+=diry[fl]; } } return 0; }
6、矩阵转置
#include <stdio.h> #include <math.h> int n,m; int a[101][101],map[300][300]; int main() { int i,j; scanf("%d",&n); m=n; for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); for(j=1;j<=m;j++) { for(i=1;i<=n;i++) { printf("%d",a[i][j]); if(i!=n) printf("\t"); } printf("\n"); } return 0; }
7、矩阵交换行
#include <stdio.h> #include <math.h> int n,m; int a[23][23]; int main() { int i,j; for(i=1;i<=5;i++) for(j=1;j<=5;j++) scanf("%d",&a[i][j]); scanf("%d%d",&n,&m); n++,m++; if(n<1 || n>5 || m<1 || m>5) { printf("error"); return 0; } int tmp=0; for(j=1;j<=5;j++) tmp=a[n][j],a[n][j]=a[m][j],a[m][j]=tmp; for(i=1;i<=5;i++) { for(j=1;j<=5;j++) { printf("%d",a[i][j]); if(j!=5) printf(" "); } printf("\n"); } return 0; }