女人梦见手指割破流血:下面五张卡片分别写有数字00123可以用它们组成许多不同的五位数,求所有这些五位数的平均数

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 22:26:34

共有60个不同的五位数,最小00123,最大32100
总和799992
平均13333.2
程序如下.

#include <stdlib.h>
#include <stdio.h>

main()
{
int sz[32100];
long int sum;
int i,j,nn;
int a[5];
char str[6];
int b0,b1,b2,b3;

nn = 0;
for (i=123;i<=32100;i++){
sprintf(&str[0],"%05d",i);
sscanf(str,"%1d%1d%1d%1d%1d",&a[0],&a[1],&a[2],&a[3],&a[4]);
for (j=0;j<5;j++){
if (a[j] > 3) goto Lab1;
};
b0=b1=b2=b3=0;
for (j=0;j<5;j++){
if (a[j] == 0) b0 = b0 + 1;
if (a[j] == 1) b1 = b1 + 1;
if (a[j] == 2) b2 = b2 + 1;
if (a[j] == 3) b3 = b3 + 1;
}; // end j
if (b0 == 2 && b1==1 && b2==1 && b3==1){
sz[nn] = a[0]*10000 + a[1]*1000 + a[2]*100 + a[3]*10 + a[4];
printf("%d\n",sz[nn]);
nn = nn + 1;

}; // end if
Lab1:;
} // end i
sum = 0;
for (i=0;i<nn;i++) sum = sum + sz[i];
printf("sum = %d nn=%d mean=%lf\n",sum,nn,(double)sum/(double)nn);

}

程序未经优化,只为算出结果.

public class Numbers
{
public static void main(String[] args)
{
int value = 0;
int sum = 0;
int number = 0;
for (int i = 1; i <= 3; i ++)
{
for (int n = 0; n<= 3; n ++)
{
for ( int m = 0; m <= 3;m ++)
{
for ( int o = 0; o <= 3; o++)
{
if ( m != i && m != n && n != i && o != m && o != n && o != i)
{
value = i * 1000+ m * 10 + n * 100 + o;
for ( int a = 1000; a >= 1; a = a/10)
{
int value1 = (value /a) * 10 * a + value % a;
if( value1 < 33000)
{value = value1;
System.out.println(value);

sum = sum + value;
number++;
}
}
}
}
}
}
}
System.out.println(sum/number);
}
}

00123, ??! 不同的?!,这似乎需要一个IF语句,用以判断是否有重复,,,因为有两个0