Java入门----各周作业汇总

下面是自己在上完网易云课堂翁恺老师的课后,写作业的记录,用于以后复习用.



第一周:用程序来做计算

题目内容:写一个将华氏温度转换成摄氏温度的程序。程序的输入是一个整数,表示华氏温度。输出对应的摄氏温度,也是一个整数。

自己写的代码:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
           Scanner in=new Scanner(System.in);
           int Fa;
           int x;
           Fa=in.nextInt();
           x=(int)((Fa-32)/(9.0/5));
           System.out.println(x);
      	}

}

第二周:判断

题目内容①:你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。

自己写的代码:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Scanner in=new Scanner(System.in);
		    int BJT;
		    int UTC;
		    BJT = in.nextInt();
		    if(BJT<2359)
		    {
		    	if(BJT<800)
		    	{
		    		System.out.println(BJT-800+2400);
		    	}
		    	else
		    		System.out.println(BJT-800);
		    }
		    else
		    	System.out.println("输入格式错误!");
		    
	}
}

题目内容②:程序要读入一个信号报告的数字,然后输出对应的含义

自己写的代码:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Scanner in=new Scanner(System.in);
		    int Re;
		    int Str;
		    int RS;
		    RS=in.nextInt();
		    Str=RS%10;
		    Re=RS/10;
		    if(RS>=11&&RS<=59)
		    {
		    	switch(Str)
			    {
			    case 1:
			    	System.out.print("Faint signals, barely perceptible,");
			    	break;
			    case 2:
			    	System.out.print("Very weak signals,");
			    	break;
			    case 3:
			    	System.out.print("Weak signals,");
			    	break;
			    case 4:
			    	System.out.print("Fair signals,");
			    	break;
			    case 5:
			    	System.out.print("Fairly good signals,");
			    	break;
			    case 6:
			    	System.out.print("Good signals,");
			    	break;
			    case 7:
			    	System.out.print("Moderately strong signals,");
			    	break;
			    case 8:
			    	System.out.print("Strong signals,");
			    	break;
			    case 9:
			    	System.out.print("Extremely strong signals,");
			    	break;
			    }
		    	switch(Re)
			    {
			    case 1:
			    	System.out.println("unreadable.");
			    	break;
			    case 2:
			    	System.out.println("barely readable, occasional words distinguishable.");
			    	break;
			    case 3:
			    	System.out.println("readable with considerable difficulty.");
			    	break;
			    case 4:
			    	System.out.println("readable with practically no difficulty.");
			    	break;
			    case 5:
			    	System.out.println("perfectly readable.");
			    	break;
			    }
		    }
		    else
		    	System.out.println("输入无法识别!");
	}
}

第三周:循环

题目内容①:程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Scanner in=new Scanner(System.in);                    
int number;
		    int x=0;
		    int y=0;
		    number=in.nextInt();
		    while(number!=-1)
		    {
		    	
			    	if(number%2==0)
			    	{
			    		x++;
			    	}
			    	else
			    	{
			    		y++;
			    	}
			    	number=in.nextInt();
		    }
		    System.out.println("共有"+x+"个偶数,"+y+"个奇数");

题目内容②:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Scanner in=new Scanner(System.in);
		    int number;
		    int x=0;
		    int n=0;
		    int count=0;
		    int k=1;
		    number=in.nextInt();
		    while(number/10!=0)
		    {
		    	x=x+1;
		    	if(x==1)
		    	{
		    		k=1;
		    	}
		    	else
		    	{
		    		k=k*2;
		    	}
		    	n=number%10;		    			    	
		    	if((x+n)%2==0)
		    	{
		    		count=count+k;
		    	}
		    	number=number/10;
		    }
		    System.out.println(count);
	}
}

第四周:循环控制

题目内容①:现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Scanner in=new Scanner(System.in);
int n;
		   int m;
		   int k=0;
		   int num=1;
		   int sum=0;
		   int count=0;
		   n=in.nextInt();
		   m=in.nextInt();
		   while(count<=m)
		   {
			   num++;
			   k=0;
			   for(int i=1;i<=num;i++)
			   {
				   if(num%i==0)
				   {
					   k++;
				   }	   
			   }
			   if(k==2)
			   {
				   count++;
				   if(count>=n&&count<=m)
	               {
	            	   sum=sum+num;
	               }
			   }
               
		   }
		   System.out.println(sum);

题目内容②: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Scanner in=new Scanner(System.in);
                   int number;
		   int num;
		   int n;
		   int a=1;
		   int k;
		   number=in.nextInt();
//		   判断是否为负数
		   if(number<0)
		   {
			   System.out.print("fu ");
			   number=(-1)*number;
		   }
		   k=number;
//		   记录整数位数,如果number是五位数,则a为10000
		   while(k>10)
		   {
			   k=k/10;
			   a=a*10;
		   }
//		   根据每位上的数字输出拼音
		   while(a!=0)
		   {
			   n=number/a;
			   switch(n)
			   {
			   case 1:
			       System.out.print("yi");
			       break;
			   case 2:
				   System.out.print("er");break;
			   case 3:
				   System.out.print("san");break;
			   case 4:
				   System.out.print("si");break;
			   case 5:
				   System.out.print("wu");break;
			   case 6:
			       System.out.print("liu");break;
			   case 7:
				   System.out.print("qi");break;
			   case 8:
				   System.out.print("ba");break;
			   case 9:
				   System.out.print("jiu");break;
			   case 0:
				   System.out.print("ling");
			   }
			   number=number-a*n;
			   a=a/10;
//			   判断是否为尾数
			   if(number!=0)
			   {
				   System.out.print(" ");
			   }
				   
		   }


第五周:数组

题目内容①:你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 Scanner in=new Scanner(System.in);
//		       定义二维数组
		   final int SIZE1=100;
		   final int SIZE2=3;
		   int [][] isExpress=new int[SIZE2][SIZE1];
//         读入表达式1
    	   int i=in.nextInt();
	       int max1=i;
	       if(i!=0)
	       {
	    	   do
		       {
		    	   isExpress[0][i]=in.nextInt();  
		    	   i=in.nextInt();
		       }while(i!=0);
		       isExpress[0][i]=in.nextInt();
	       }
	       else
	       {
	    	   isExpress[0][i]=in.nextInt();
	       }
//         读入表达式2
	       int j=in.nextInt();
	       int max2=j;
	       if(j!=0)
	       {
		       do
		       {
		    	   isExpress[1][j]=in.nextInt();
		      	   j=in.nextInt();	
		       }while(j!=0);
		       isExpress[1][j]=in.nextInt();
	       }
	       else
	       {
	    	   isExpress[1][j]=in.nextInt();
	       }
//	                  取最高次幂max
	       int max=Math.max(max1,max2);
//	                  将数组前两行相加,结果放到第三行
	       for(int m=0;m<=max;m++)
	       {
	    	   isExpress[2][m]=isExpress[0][m]+isExpress[1][m];
	       }
//	                  输出数组第三行
	       for(int m=max;m>=0;m--)
	       {
	    	   if(isExpress[2][m]!=0&&m!=0&&m!=1)
	    	   {
	    		   System.out.print(isExpress[2][m]+"x"+m);
	    		   System.out.print("+");
	    	   }
	    	   if(m==1)
	    	   {
	    		   System.out.print(isExpress[2][m]+"x"+"+");
	    	   }
	    	   if(m==0)
	    	   {
	    		   System.out.print(isExpress[2][m]);
	    	   }
	       }
题目内容②:井字棋

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
//		读取棋盘长度n
		int n;
		boolean isRight=false;
		int sum1=0;
		int sum2=0;
		int sum3=0;
		int sum4=0;
		n=in.nextInt();
//		判断n值是否符合标准,n[3,100]
		while(true)
		{
			if(n<3||n>100)
			{
				System.out.println("输入值不符合条件!");
				System.out.println("请重新输入:");	
				n=in.nextInt();
			}
			else
			{
				break;
			}
		}
			final int SIZE=n;
	        int [][] XOXO=new int[SIZE][SIZE];
	//      读入棋盘内容
	        for(int i=0;i<SIZE;i++)
	        {
	     	   for(int j=0;j<SIZE;j++)
	     	   {
	     		   XOXO[i][j]=in.nextInt();
	     	   }
	        }
	        for(int i=0;i<SIZE;i++)
	        {
	     	   for(int j=0;j<SIZE;j++)
	     	   {
	//             情况一:左对角线相同
	     		   if(i==j)
	     	       {
	     	    	 sum1=sum1+ XOXO[i][j];
	     	       }
	//             情况二:右对角线相同
	     	       if(i+j==(n-1))
	     	       {
	     	    	  sum2=sum2+ XOXO[i][j];
	     	       }
	     	       sum3=sum3+XOXO[i][j];
	     	   }
	//         情况三:同行各列相同
	 	       if(sum3==SIZE)
	 	       {
	 	    	   break;
	 	       }
	 	       else if(sum3==0)
	 	       {
		    	   break;
	 	       }
	 	       else
	 	       {
	 	    	   sum3=(SIZE+1);
	 	       }
	        }
	        for(int j=0;j<SIZE;j++)
	        {
	     	   for(int i=0;i<SIZE;i++)
	     	   {
	     		  sum4=sum4+XOXO[i][j];
	     	   }
	//         情况四:同列各行相同
	     	   if(sum4==SIZE)
		       {
		    	   break;
		       }
		       else if(sum4==0)
		       {
		    	   break;
		       }
		       else
		       {
		    	   sum4=(SIZE+1);
		       }
	        }
	//     	输出胜负结果
	        if(sum1==0||sum2==0||sum3==0||sum3==0)
	        {
	        	System.out.println("O");
	        }
	        else if(sum1==SIZE||sum2==SIZE||sum3==SIZE||sum3==SIZE)
	        {
	 	        System.out.println("X");
	        }
	        else
	        {
	        	System.out.println("NIL");
	        }
	}
}
第六周:使用对象

题目内容①:你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
//	    初始化
		String str1=new String("");
	    int getLength=0;
	    int end=0;
	    int start=0;
//	    输入一组字符串
	    str1=in.nextLine();
//	    从左至右遍历字符串
	    for(int i=0;i<str1.length();i++)
	    {
	    	if(i!=0&&str1.charAt(i-1)==' '&&str1.charAt(i)!=' ')
	    	{
	    		start=i;
	    	}
	    	if((str1.charAt(i)==' '&&str1.charAt(i-1)!=' ')||str1.charAt(i)=='.')
	    	{
	    		end=i;
	    		System.out.print(str1.substring(start,end).length()+" ");
	    	}	
	    }
题目内容②: 你的程序要从中找出$GPRMC语句,计算校验和,找出其中校验正确并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条$GPRMC语句,以最后一条语句得到的北京时间作为结果输出。

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
//	          初始化
		String str2=new String("");
		String str=new String("");
		String str1=new String("");
		String isGPS=new String("");/*用户输入字符串*/
		int sum=0;/*校验和*/
		int sum1;/*字符串校验和*/
		char status;/*定位状态*/
		int i=0;/*游标*/
		int UTC=0;
		int BJT=0;
//		读入字符串
		isGPS=in.nextLine();
		while(!isGPS.equals("END"))
        {        	
			String ishead=isGPS.substring(0,isGPS.indexOf(","));
			if(ishead.equals("$GPRMC"))
			{
			        str=isGPS;
		//	    	判断是否定位
			    	str2=str.substring(i);
			    	i=str2.indexOf(",");
			    	i=i+1;
			    	str2=str.substring(i);
			    	int j=str2.indexOf(",");
			    	status=str.charAt(i+j+1);
		//	      判断是否校验和正确
			        i=str.indexOf("*");
			        sum=Integer.parseInt((str.substring(i+1)),16);/*将*号以后的字符转为16进制*/
			        str1=str.substring(1,i);
			        sum1=str1.charAt(0)^str1.charAt(1);
			        for(i=2;i<str1.length();i++)
			        {
			        	sum1=sum1^str1.charAt(i);
			        }
			        sum1=sum1%65536;
		//	      如果校验和正确且已定位,确定str为最终字符串
			        if(sum1==sum&&status=='A')
			        {
			        	i=str.indexOf(",");
			    		UTC=Integer.parseInt(str.substring(i+1,i+7));
			        }
            }
			isGPS=in.nextLine();
        }
//		BJT时间相当于UTC加上8		
		if((UTC/10000)<=16)
		{
			BJT=UTC+80000;
		}
		else
		{
			BJT=UTC+80000-240000;
		}
		i=1000000;
		do
		{
			i=i/100;
			System.out.print(BJT/i);
			if(i!=1)
			{
				System.out.print(":");
			}
			BJT=BJT%i;
		}while(i!=1);
        
	}
}
第七周:循环

题目内容①:分解质因数

import java.util.Scanner;
public class Main {
public static boolean isPrime(int m)
{
	int count=0;
	for(int i=2;i<m;i++)
	{
		if(m%i==0)
		{
			count=0;
			break;
		}
		count++;
	}
	if(count!=0||m==2)
	{
		return true;
	}
	else
	{
		return false;
	}
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int number;
		int isJudge;
		int j=0;
    	int k=0;
		int [] Prime=new int[100];
		number=in.nextInt();
		if(number<=100000&&number>=2)
		{
			for(int i=2;i<Prime.length;i++)
			{
				if(isPrime(i))
				{
					Prime[j]=i;
					j++;
				}
			}		
			if(isPrime(number))
			{
				System.out.println("n="+number);
			}
			else
			{
				System.out.print(number+"=");
				do
	            {
	            	isJudge=number%Prime[k];
	            	if(isJudge==0)
	            	{
	            		System.out.print(Prime[k]+"x");
	            		if(isPrime(number/Prime[k]))
	                    {
	                		System.out.print(number/Prime[k]);
	                		break;
	                    }
	                	else
	                	{
	                		number=number/Prime[k];
	            	    }
	            	}
	            	else
	            	{
	            		k++;
	            	}
	            }while(k<Prime.length);
		     }
		
		}		
	}
}
题目内容②: 你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。

import java.util.Scanner;
public class Main {
public static boolean isPerfect(int m)
{
	int sum=0;
	for(int i=1;i<m;i++)
	{
		if(m%i==0)
		{
		sum=sum+i;	
		}
	}
	if(sum==m)
	{
		return true;
	}
	else
	{
		return false;
	}
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int m;
		int n;
		int j=0;
		n=in.nextInt();
		m=in.nextInt();
		for(int i=n;i<=m;i++)
		{
			if(isPerfect(i))
			{
				if(j>0)
				{
					System.out.print(" "+i);
				}
				else
				{
					System.out.print(i);
				}
				j++;
			}
		}
	}
}









  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值