【数组练习】
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;
}

浙公网安备 33010602011771号