您的位置:首页 > 编程语言 > Java开发

关于一些java基础语法的练习题代码

2014-05-15 14:31 405 查看
/**
*
* @author 鹿丸君
*
*/
class HomeWork1
{
public static void main(String[] args) {
exer1();
num();
leapYear(1900,2100);
chart();
Age();
calAandB();
prime();
shuiXianHua();
System.out.println("<2.8> calE(15):e="+calE(15)+",calE(35):e="+calE(35));
num1(24);
num2(21,36);num2(48,36);num2(21,23);
person();
count1();
count2();
countNum();
money();
}

/**练习1
设
int a=3,b=-4,c=5;
double x=2.5,y=4.7;
double z;
计算以下各式中z的结果:
1. z=x+a%2*(int)(x=y)%3/2f;
2. z=(float)(a+b)/2+(int)x%(int)y;
3. z=32+'A'-2/3*5;
4. z=a=b=c+2/5;
5. z=18+(b=4)*3;
6. z=(a>b)?a:b;
7. z=a++-c+b++;
8. z=++a-c+(++b);
9. z=++a-c+++b;
10.z=a+=a-=a*=a;
*/
private static void exer1(){
System.out.println("\n练习一:");
for(int i=1;i<=10;i++){
int a=3,b=-4,c=5;
double x=2.5,y=4.7;
double z = 0;
switch(i){
case 1:z=x+a%2*(int)(x=y)%3/2f;break;
case 2:z=(float)(a+b)/2+(int)x%(int)y;break;
case 3:z=32+'A'-2/3*5;break;
case 4:z=a=b=c+2/5;break;
case 5:z=18+(b=4)*3;break;
case 6:z=(a>b)?a:b;break;
case 7:z=a++-c+b++;break;
case 8:z=++a-c+(++b);break;
case 9:z=++a-c+++b;break;
case 10:z=a+=a-=a*=a;break;
default:break;
}
System.out.println("第"+i+"个式子的值是"+z);
}
}

/**练习二*/
/**
1,屏幕输出1~100之间能被3整除且个位是6的数。
*/
private static void num(){
System.out.print("\n练习二:\n<2.1> 1~100之间能被3整除且个位是6的数有:");
for(int i=1;i<=100;i++){
if((i%3==0)&&(i%10==6))
System.out.print(i+" ");
}
}
/**
2,自定义方法,该方法能够输出1900年到2100年之间的闰年,一行输出4个,用逗号分隔。
(能被4整除且不能被100整除的为闰年;能被400整除的是闰年。)
*/
private static void leapYear(int start,int end) {
System.out.println("\n<2.2> 1900年~2100年之间的闰年有:");
int num=0;
for(int i=start;i<=end;i++){
if(((i%4==0)&&(i%100!=0))||(i%400==0)){
System.out.print(i+",");
num++;
if(num%4==0)
System.out.println();
}
}
}
/**
3,自定义方法,该方法能够输出九九乘法表。
*/
private static void chart(){
System.out.println("\n<2.3> 九九乘法表:");
int i,j;
for(i=1;i<=9;i++){
for(j=1;j<=i;j++)
System.out.print(i+"x"+j+"="+i*j+"\t");
System.out.println();
}
}
/**
4,李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他的岁数之和是873,
计算李先生及其夫人的岁数各是多少。
*/
private static void Age() {
int i=0,j;
do{
for(j=0;j<100;j++){
if((i*i+j==1053)&&(j*j+i==873))
System.out.println("<2.4> 李先生的年龄是"+i+",李夫人的年龄是"+j);
}
i++;
}while(i!=100);
}
/**
5,有两个正整数a和b,已知a*b=2048,求a、b各为何值时,a+b的值最小。
*/
private static void calAandB(){
int b=0;
int sum=9999999;
int min=0;
for(int a=1;a<2048;a++){
b=2048/a;
if(a*b==2048){
if(a+b<sum){
sum=a+b;
min=a;
}
}
}
System.out.println("<2.5> a="+min+",b="+(2048/min)+",sum="+sum);
}
/**
6,自定义方法,该方法能够输出10~100之间的全部素数。(素数是指只能被1和自身整除的数)。
*/
private static void prime(){
System.out.print("<2.6> 10~100之间的素数:");
int i,j;
for(i=10;i<100;i++){
for(j=2;j<Math.sqrt(i);j++){
if(i%j==0) break;
}
if(j>Math.sqrt(i)) System.out.print(i+" ");
}
}
/**
7,自定义方法,该方法能够输出所有的水仙花数。水仙花数是一个三位数,
其各位数字的立方和等于该数本身,如153 =1^3 + 5^3 + 3^3
*/
private static void shuiXianHua(){
System.out.print("\n<2.7> 水仙花数有:");
for(int i=100;i<1000;i++){
int h=i/100;
int t=i/10%10;
int u=i%10;
if(i==h*h*h+t*t*t+u*u*u){
System.out.print(i+" ");
}
}
System.out.println();
}
/**
8,编写程序计算e的近似值。e=1+1/1!+1/2!+1/3!...+1/n! (n值可变)
*/
private static double calE(int n){
double e=1;
for(int i=1;i<=n;i++){
e+=(1/jieCheng(i));
}
return e;
}
private static double jieCheng(int v){
double r=1;
for(int i=2;i<=v;i++){
r*=i;
}
return r;
}

/**练习3*/
/**
1,编写一个方法,该方法接收一个整型参数,并实现如下功能:从参数开始往后找,找到第4个能被7整除的数并返回。
*/
private static void num1(int i){
System.out.print("\n练习三:\n<3.1> "+i+"之后的第4个能被7整除的数是:");
int num=0;
do{
i++;
if(i%7==0) num++;
}while(num!=4);
System.out.println(i);
}
/**
2,编写一个方法,接收两个整型参数a和b,并实现如下功能:
如果a<=b,那么在[a,b]范围内查找第一个能被5整除的数并返回,如果未找到,则返回-1。
如果a>b,则查找范围变为[b,a]。
*/
private static void num2(int a,int b){
System.out.print("<3.2> ");
boolean flag=false;
if(a>b){
int t=b;b=a;a=t;
}
for(int i=a;i<=b;i++){
if(i%5==0){
flag=true;
System.out.println(a+"到"+b+"中第一个能被5整除的数是"+i);break;
}
}if(!flag){
System.out.println(a+"到"+b+"中没有能被5整除的数:"+-1);
}
}
/**
3,某数学竞赛中,参赛人数大约在380~450人之间。比赛结果,全体考生的总平均分为76分,
男生的平均分为75分,女生的平均分为80.1分,求男女生各有多少人?
*/
private static void person(){
int x,i;
for(i=380;i<=450;i++){
for(x=1;x<i;x++){
if((76*i)==(75*x+80.1*(i-x)))
System.out.println("<3.3> 男生有"+x+"人,女生有"+(i-x)+"人。");
}
}
}
/**
4,一个四位数,恰好等于去掉它的首位数字之后所剩的三位数的3倍,这个四位数是多少?
*/
private static void count1(){
for(int i=1000;i<=9999;i++){
if(i==3*(i%1000)) System.out.println("<3.4> 这个四位数是"+i);
}
}
/**
5,有一个两位数,如果在它的前面添一个3,可得到一个三位数;把3添在它的后面,
也可以得到一个三位数;两次得到的三位数相差468,求原来的两位数。
*/
private static void count2(){
for(int i=10;i<99;i++){
if(i*10+3-(300+i)==468)
System.out.println("<3.5> 这个两位数是"+i);
}
}
/**
6,输出四位自然数中各位数字之和为6并且各位数字互不相同的数,并统计个数。
*/
private static void countNum(){
System.out.println("<3.6> 四位自然数中各位数字之和为6并且各位数字互不相同的数有:");
int count=0;
for(int i=1000;i<10000;i++){
if(check(i)){
System.out.print("  "+i);
count++;
}
}
System.out.println("\n       一共有"+count+"个。");
}
private static boolean check(int v){
int t1=v/1000;
int h=v/100%10;
int t2=v/10%10;
int u=v%10;
if(t1==t2||t1==h||t1==u||h==t2||h==u||t2==u){
return false;
}
if(t1+h+t2+u==6){
return true;
}
return false;
}
/**
7,将100元纸币兑换成10元、5元和1元纸币共20张,输出各种兑换法,并统计个数。
*/
private static void money(){
System.out.println("<3.7> 兑换方式如下:");
int a,b,c,count=0;
for(a=0;a<=10;a++)
for(b=0;b<=20;b++)
for(c=0;c<=100;c++)
if(((a+b+c)==20)&&(10*a+5*b+c==100)){
System.out.println("10元张数:"+a+", 5元张数"+b+", 1元张数:"+c);
count++;
}
System.out.println("一共有"+count+"种兑换方法。");
}
}


$(".MathJax").remove();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java