本想27天学完再来做题, 可自己耐不信性子, 刚才在地库鼓捣半个多小时,明知道粗糙不堪,还是给第9题写了段代码。先记下, 明天百度下,看对不对。
//2016年1月28日23时38分21秒
/*
从100中排除14, 直到不够14,输出剩余.
利用循环结构,
第一次从1开始, 每到14就作标记为0,
计数器到达100就停止, 记下本次最后一个序数,
以这个序数为第1个数,继续下一轮循环,
直到剩余数不到14.
*/
//import java.util.Scanner;
class ExcepF{
public static void main(String[] args) {
//System.out.println("Hello World!");
int arr[] = new int[ 101 ]; //使用数组标记100个数, 其第一个元素不使用
initial( arr );
output( arr );
excepFourteen( arr );
output( arr );
}
//初始化数组
public static void initial( int[] a ){
for( int i = 0; 101 > i; i ++ ){
a[ i ] = i;
}
}
//输出原始数组
public static void output( int[] a ){
for (int i = 1; 101 > i ; i ++ ){
System.out.print( a + " ");
if ( 0 == i % 10 ){
System.out.println();
}
}
System.out.println("*************************");
/*
Scanner sc = new Scanner( System.in );
sc.nextInt();
*/
}
//主功能函数
public static void excepFourteen( int[] a){
int sequence = 0; //序数计数器
int count = 0; //未被排除元素个数
while( true ){ //在内层循环中,序数计数器是轮回使用的,元素个数计数器每个轮回都清零.
count = 0;
for( int i = 1; 101 > i ; i ++ ){
if( !isZero( a) ){ //没有作过标记
count ++;
sequence ++; //序数增一
if( 14 == sequence ){ //符合要求作标记
a = 0;
sequence = 0;
}
}
}
//output( a );
if( 14 >= count ){
break;
}
}
}
//判断是否打过标记
public static boolean isZero( int a ){
return 0 == a;
}
}
|