1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
import java.util.Scanner;
public class aufgabe26 {
private String day;
aufgabe26 (String day)
{
this.day=day.toUpperCase();
}
void judgement()
{
switch(this.day.charAt(0)){
case 'M':
System.out.println("today is Monday");break;
case 'T':
{
if(this.day.charAt(1)=='U')
System.out.println("today is Tuesday");
else if(this.day.charAt(1)=='H')
System.out.println("today is Thursday");
else
System.out.println("flase input");
}break;
case 'W':
System.out.println("today is Wednesday");break;
case 'F':
System.out.println("today is Friday");break;
case 'S':
{
if(this.day.charAt(1)=='A')
System.out.println("today is Saturday");
else if(this.day.charAt(1)=='U')
System.out.println("today is Sunday");
else
System.out.println("flase input");
}break;
default:
System.out.println("flase input");
}
}
public static void main(String[] args)
{
System.out.println("please input a weekday");
Scanner sc = new Scanner(System.in);
String i=sc.nextLine();
aufgabe26 test=new aufgabe26(i);
test.judgement();
sc.close();
}
}
结果吻合。
题目:求100之内的素数
public class aufgabe27 {
public static void main(String[] args)
{
int sum=0;
for(int i=1;i<=100;i++)
{
int count=0;
for(int j=1;j<=i;j++)
if(i%j==0)
count++;
if(count==2)
{
sum++;
System.out.println(i+" is prime.");
}
}
System.out.println("there are "+sum+" prime numbers in [1,100].");
}
}
结果吻合。
二个元素与后8个进行比较,并进行交换。
注:此处替换为使用快速排序算法实现。
public class aufgabe28 {
private int[] com;
aufgabe28(int[] com)
{
this.com=com;
}
void QuickSort(int start,int end)
{
if(start>=end)
return ;
int i=start;
int j=end;
int pivot=this.com[(start+end)/2];
System.out.println(" original index : "+i+" "+j+" "+pivot);
while(true)
{
while(this.com[i]pivot)
{
System.out.println("com["+j+"] ="+this.com[j]+" is bigger than pivot");
j--;
if(i==j)
break;
}
if(this.com[i]!=this.com[j])
swap(i,j);
else
i++;
if(i>=j) break;
System.out.println("swap "+this.com[i]+" "+this.com[j]);
}
System.out.println("the new partition is [ "+start+", "+(j-1)+" ] , ["+(j+1)+", "+end+" ]");
QuickSort(start,j-1);
QuickSort(j+1,end);
}
void swap(int old,int neu)
{
int temp=this.com[old];
this.com[old]=this.com[neu];
this.com[neu]=temp;
}
void show()
{
for(int i=0;i
结果吻合。
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
public class aufgabe29 {
public static void main(String[] args)
{
int[] input=new int[9];
Scanner scr=new Scanner(System.in);
System.out.println("please input 9 numbers:");
for(int i=0;i
结果吻合。
依次后移一个位置。
public class aufgabe30 {
private int[] arr;
private int neu;
private int[] sarr;
aufgabe30(int[] arr,int neu)
{
this.arr=arr;
this.neu=neu;
this.sarr=new int[arr.length+1];
}
void insert()
{
int flag=1;
for(int i=0,j=0;j
结果吻合。
1.程序分析:用第一个与最后一个交换。
public class aufgabe31 {
private int[] arr;
aufgabe31(int[] arr)
{
this.arr=arr;
}
void swap(int i,int j)
{
int temp=this.arr[i];
this.arr[i]=this.arr[j];
this.arr[j]=temp;
}
void ArraySwap()
{
for(int i=0,j=(this.arr.length-1);i<=j;)
{
swap(i,j);
i++;
j--;
}
}
void show()
{
for(int i=0;i
结果吻合。
(3)将上面二者进行&运算。
public class aufgabe32 {
private int a;
private int[] digit;
private int start;
private int end;
aufgabe32(int a,int start,int end)
{
this.a=a;
digit=new int[end-start+1];
this.start=start;
this.end=end;
}
void DigitExtract()
{
for(int i=start;i<=end;i++)
{
digit[i-start]=(a>>i) & 0x1;
}
}
void show()
{
for(int i=digit.length-1;i>=0;i--)
{
System.out.print(digit[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
int a=144;
int start=4;
int end=7;
System.out.println("original digits :");
aufgabe32 test1=new aufgabe32(a,0,32);
test1.DigitExtract();
test1.show();
System.out.println("digits von "+start+" to "+end+" is :");
aufgabe32 test=new aufgabe32(a,start,end);
test.DigitExtract();
test.show();
}
}
1 5 10 10 5 1
public class aufgabe33 {
private int row;
aufgabe33(int row)
{
this.row=row;
}
int factor(int n)
{
if(n==0)
return 1;
else
return n*factor(n-1);
}
int Binomial(int a,int b)
{
return factor(a)/(factor(b)*factor(a-b));
}
void show()
{
for(int i=0;i<=this.row;i++)
{
for(int j=0;j<=i;j++)
{
System.out.print(Binomial(i,j)+" ");
}
System.out.println();
}
}
public static void main(String[] args)
{
int row=5;
aufgabe33 test=new aufgabe33(row);
test.show();
}
}
结果吻合。
题目:输入3个数a,b,c,按大小顺序输出。
public class aufgabe34 {
private char[] com;
private int num;
private int pos;
aufgabe34(int num)
{
this.num=num;
com=new char[num+1];
this.pos=0;
}
void AddandSort(char ch)
{
for(int i=0;i<=this.pos;i++)
{
if(com[i]>ch)
{
for(int j=(this.pos);j>i;j--)
swap(j,j-1);
com[i]=ch;
break; //仅在第一个大于ch的位置插入即可。
}
else if(this.com[i]==0)
this.com[i]=ch;
}
this.pos++;
}
void swap(int i,int j)
{
char temp=this.com[i];
this.com[i]=this.com[j];
this.com[j]=temp;
}
void show()
{
System.out.println("the sorted characters are :");
for(int i=0;i<=this.pos;i++)
System.out.print(this.com[i]+" ");
System.out.println();
}
public static void main(String[] args)
{
System.out.println("please input the numbers of to be compared characters ");
Scanner scc=new Scanner(System.in);
int num=scc.nextInt();
Scanner sc=new Scanner(System.in);
aufgabe34 test=new aufgabe34(num);
System.out.println("please add the to be compared characters ");
while(sc.hasNext())
{
char ch=sc.nextLine().charAt(0);
test.AddandSort(ch);
test.show();
}
}
}
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
public class aufgabe35 {
private int[] arr;
private int[][] mm;
aufgabe35(int[] arr)
{
this.arr=arr;
this.mm=new int[2][2];
}
void swap(int i,int j)
{
int temp=this.arr[i];
this.arr[i]=this.arr[j];
this.arr[j]=temp;
}
void FindMM()
{
mm[0][0]=this.arr[0]; //比较之前要先赋一个需参与比较的值,以免初始化数值影响比较结果
mm[0][1]=0;
mm[1][0]=this.arr[0];
mm[1][1]=0;
for(int i=0;imm[1][0])
{
mm[1][0]=this.arr[i];
mm[1][1]=i;
}
}
}
void Exchange()
{
FindMM();
swap(0,mm[1][1]);
swap((this.arr.length-1),mm[0][1]);
}
void show()
{
for(int i=0;i
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
public class aufgabe36 {
private int[] arr;
private int offs;
private int[] temp;
private int flag;
aufgabe36(int[] arr,int offs)
{
this.arr=arr;
this.offs=offs;
temp=new int[this.arr.length];
flag=0;
}
void Cycle()
{
for(int i=0;i
的是原来第几号的那位。
public class aufgabe37 {
private int sum;
private int[] arr;
aufgabe37(int sum)
{
this.sum=sum;
arr=new int[sum];
}
void game()
{
int length=sum;
int count=0;
for(int i=0;length>1;i++)
{
if(this.arr[i%this.arr.length]!=1)
{
count++;
System.out.println("the "+(i%this.arr.length)+"th people count No."+count);
}
if(count==3)
{
this.arr[i%this.arr.length]=1;
length--;
count=0;
System.out.println("the "+(i%this.arr.length)+"th people out , "+"left "+length+" people.");
}
}
}
void show()
{
for(int i=0;i
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
public class aufgabe38 {
private String str;
aufgabe38(String str)
{
this.str=str;
}
int GetLength()
{
return str.length();
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("please input the String");
String str=sc.nextLine();
aufgabe38 test=new aufgabe38(str);
System.out.println("the length is "+test.GetLength());
sc.close();
}
}
1/1+1/3+...+1/n(利用指针函数)
public class aufgabe39 {
private int flag;
aufgabe39(double n)
{
flag=(int)n%2;
}
double SumAll(double n)
{
if(n==2 && flag==0)
{
System.out.println("1/"+n+"=");
return 1/2;
}
else if(n==1 && flag==1)
{
System.out.println("1/"+n+"=");
return 1;
}
else
{
System.out.print("1/"+n+"+");
return 1/n+SumAll(n-2);
}
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("please input the number");
double n=sc.nextDouble();
aufgabe39 test=new aufgabe39(n);
System.out.println("the sum is "+test.SumAll(n));
sc.close();
}
}
题目:字符串排序。
public class aufgabe40 {
private String s1;
private String s2;
aufgabe40(String s1,String s2)
{
this.s1=s1;
this.s2=s2;
}
String compare()
{
for(int i=0;is2.charAt(i))
return s2;
}
return s1+" == "+s2;
}
public static void main(String[] args)
{
String s1="abcde";
String s2="accde";
aufgabe40 test=new aufgabe40(s1,s2);
System.out.println("the smaller String is : ");
System.out.println(test.compare());
}
}
,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
public class aufgabe41 {
static int Divide(int a)
{
int sum=a;
int flag=0;
while((a-1)%5 == 0 && flag<5)
{
a=(a-1)/5*4;
flag++;
}
if(flag==5)
return sum;
else
return -1;
}
public static void main(String[] args)
{
for(int i=0;i<10000;i++)
{
if(aufgabe41.Divide(i)!=-1)
{
System.out.println("there are at least "+aufgabe41.Divide(i)+" peaches at first.");
break;
}
}
}
}
其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
public class aufgabe42 {
public static void main(String[] args)
{
for(int i=10;i<100;i++)
{
int a=800*i;
int b=9*i;
if(809*i == (a+b+1) && (a/100)>=10 && (a/100)<100 && b>=100 && b<1000 )
{
System.out.println(i);
break;
}
}
System.out.println("can't find it ");
}
}
题目:求0—7所能组成的奇数个数。
public class aufgabe43 {
static int factor(int n)
{
if(n==0)
return 1;
else
return n*factor(n-1);
}
static int A(int n,int m)
{
return factor(n)/factor(n-m);
}
static int BioSum(int n)
{
int sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+A(n,i)-A((n-1),(i-1));
}
return sum*4+4;
}
public static void main(String[] args)
{
int num=7;
System.out.println(aufgabe43.BioSum(num));
}
}
题目:一个偶数总能表示为两个素数之和。
public class aufgabe44 {
private int even;
aufgabe44(int even)
{
this.even=even;
}
boolean Prime(int a)
{
for(int i=2;i
结果吻合。
题目:判断一个素数能被几个9整除
public class aufgabe45 {
private int range;
private int sum;
aufgabe45(int range)
{
this.range=range;
sum=0;
}
boolean Prime(int a)
{
for(int i=2;i
题目:两个字符串连接程序
public class aufgabe46 {
public static void main(String[] args)
{
String s1="abv";
String s2="frg";
String s3=s1+s2;
System.out.println(s3);
}
}
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
public class aufgabe47 {
static void Draw(int n)
{
for(int i=0;i
都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
public class aufgabe48 {
private int code;
private int[] digit;
aufgabe48(int code)
{
this.code=code;
digit=new int[4];
}
void Encode()
{
for(int i=1;i<5;i++)
{
digit[(i-1)]=this.Translate( (int)(this.code/Math.pow(10,i-1) ) %10);
}
DigitSwap(1,4);
DigitSwap(2,3);
}
void DigitSwap(int i,int j)
{
int temp=this.digit[i-1];
this.digit[i-1]=this.digit[j-1];
this.digit[j-1]=temp;
}
int Translate(int n)
{
System.out.println("the input digit is "+n+",the encoded digit is "+((n+5)%10));
return (n+5)%10;
}
void show()
{
System.out.println("the original number is "+this.code);
System.out.print("the encoded number is ");
for(int i=0;i
结果吻合。
【程序49】