【做道题冷静一下】习题

目录

多项式加法

tic -tac - toe游戏

求最大公约数

求f(n)=1-1/1+1/2-1/3+.....+1/n

求f(n)=1+1/1+1/2+1/3+.....+1/n

凑硬币

输出前50个素数

输出100以内的素数

判断一个数是否是素数

念整数

素数和


                                                              


单词长度

题目内容:
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。
输入格式:
输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4

 

import java.util.Scanner;
public class Main{

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int loc=0;
		String result="";
		String str=in.nextLine().trim();
		if(str.endsWith(".")){
			do{ 
				loc=str.indexOf(' ');  //空格的位置
				if(loc!=-1){
					String subString=str.substring(0,loc); //截取的空格前的短串
					result+=subString.trim().length()+" ";  //长度
					str=str.substring(loc).trim();  //去掉短串后的剩余字符串
				}else if(str.endsWith(".")&&!str.startsWith(".")){
					result+=str.length()-1;
				}
				
			}while(loc!=-1);
		}
		 System.out.println(result.trim());

	}

}

 


                                                                  数组


多项式加法

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:

2x6+3x5+12x3+6x+20

现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。

程序要处理的幂最大为100。

输入格式:

总共要输入两个多项式,每个多项式的输入格式如下:

每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。

注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

从最高幂开始依次降到0幂,如:

2x6+3x5+12x3-6x+20

注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

输入样例:

6 2

5 3

3 12

1 6

0 20

6 2

5 3

2 12

1 6

0 20

输出样例:

4x6+6x5+12x3+12x2+12x+40

import java.util.Scanner;

/**
  写的有点啰嗦了,忙完最近再改。

 * 需要考虑: 正负号 
          0次幂,系数为0时
          系数为正负1时
          结果为0时
          1次幂时,幂上的1要省略
 * @author kylin
 *
 */
public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int[] numbers1=new int[101];
		int exponentiation; //幂
		int coefficient;  //系数
		do{
			exponentiation=in.nextInt();
			coefficient=in.nextInt();
			if(exponentiation=0;i--){
			//幂大于1且系数不等于0时
			if(i>1&&numbers2[i]!=0){
				if("".equals(result)){
					//系数为1时
					if(numbers2[i]==1){
						result="x"+i;
					}else if(numbers2[i]==-1){ //系数为-1时
						result="-x"+i;
					}else{
						result=numbers2[i]+"x"+i;
					}
					
				}else if(numbers2[i]<0){
					if(numbers2[i]==-1){  //系数等于-1
						result+="-x"+i;
					}else{
						result+=numbers2[i]+"x"+i;
					}
					
				}else{
					if(numbers2[i]==1){
						result+="+x"+i;
					}else{
						result+="+"+numbers2[i]+"x"+i;
					}
				}
			}
			//幂等于1且系数不等于0时
			if(i==1&&numbers2[i]!=0){
				if("".equals(result)){  //前面为空时
					if(numbers2[i]==1){   //系数为1
						 result+="x";
					}else if(numbers2[i]==-1){  //系数为-1
						 result+="-x";
					}else{
						result+=numbers2[i]+"x";
					}
				}else if(numbers2[i]<0){
					if(numbers2[i]==-1){  //系数为-1
						result+="x";
					}else{
						result+=numbers2[i]+"x";
					}
				}else{
					if(numbers2[i]==1){   //系数为1
						result+="+x";
					}else{
						result+="+"+numbers2[i]+"x";
					}
				}
				
			}
			//幂等于0且系数不等于0时
			if(i==0&&numbers2[i]!=0){
				if(numbers2[i]<0){
					result+=numbers2[i];
				}else if("".equals(result)){
					result+=numbers2[i];
				}else{
					result+="+"+numbers2[i];
				}
			}
			//结果为0时
			if("".equals(result)&&i==0&&numbers2[i]==0){
				result="0";
			}
		}
		System.out.println(result);
	}

}

 

  • tic -tac - toe游戏

* 读入一个3X3的矩阵,矩阵中的数字为1表示该位置上有一个X,为0表示为O

* 程序判断这个矩阵中是否有获胜的一方,输出表示获胜一方的字符X或O,或输出无人获胜

 

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		final int SIZE=3;
		int[][]board=new int[SIZE][SIZE];
		boolean gotResult=false;
		int numOfX=0;
		int numOfO=0;
		//读入矩阵
		for(int i=0;i

 

 


                                                                  循环


  • 求最大公约数

import java.util.Scanner;
public class Main11 {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int a=in.nextInt();
		int b=in.nextInt();
          //第一种方法:穷举
		int gcd=1;
		for(int i=2;i<=a&&i<=b;i++){
			if(a%i==0&&b%i==0){
				gcd=i;
			}
		}
		
		//第二种方法:辗转相除法
		int oa=a;
		int ob=b;
		while(b!=0){
		    int r=a%b;
		    System.out.println(a+","+b+","+r);
			a=b;
			b=r;
		}
		System.out.println(oa+"和"+ob+"的最大公约数为:"+a);


	}

}

 

  • 求f(n)=1-1/1+1/2-1/3+.....+1/n

import java.util.Scanner;
public class Main10 {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		double sum=0;
		//第一种
//		for(int i=1;i<=n;i++){
//			if(i%2==1){    //奇数位
//				sum+=1.0/i;
//			}else{
//				sum-=1.0/i;  //偶数位
//			}
//			
//		}
		
		//第二种
		int sign=1;
		for(int i=1;i<=n;i++,sign=-sign;){
			sum+=sign*1.0/i;	
		}
		System.out.println("f(n)=1-1/1+1/2-1/3+.....+1/n="+sum);
		System.out.printf("%.2f",sum);

	}

}

 

  • 求f(n)=1+1/1+1/2+1/3+.....+1/n

import java.util.Scanner;
public class Main9 {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		double result=0;
		System.out.println();
		for(int i=1;i<=n;i++){
			result+=1.0/i;
		}
		System.out.println("f(n)=1+1/1+1/2+1/3+.....+1/n="+result);
		System.out.printf("%.2f",result);  //按格式输出 取两位小数

	}

}

 

  • 凑硬币

用1角,2角,5角的硬币凑出用户输入的10元以下的金额

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入您要换的钱数/元:");
		int money=in.nextInt(); //输入元
		money*=10; //元换成角
		for(int one=0;one<=money;one++){
			for(int two=0;two<=money;two++){
				for(int five=0;five<=money;five++){
					if(one+two*2+five*5==money){
						System.out.println("凑出"+one+"枚一角硬币,"+two+"枚两角硬币,"+five+"枚五角硬币");
					}
				}
				
			}
		}
	}
}

 

  • 输出前50个素数

public class Main {
	public static void main(String[] args) {
		int i=2;
		int count=0; //计数器变量
		while(count<50){
			int isPrime=1;
			for(int j=2;j
//判断是否能被已知的且
  • 输出100以内的素数

 

public class Main {

	public static void main(String[] args) {
		for(int i=2;i<100;i++){
			int isPrime=1;
			for(int j=2;j
//构造素数表
	/**
	 * 素数的倍数一定不是素数
	 * 欲构造n以内的素数
	 * 1.令x为2
	 * 2.将2x/3x/4x甚至ax
  • 判断一个数是否是素数

 

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        boolean isPrime=true;
        
        //第一种方法 n-1遍 约等于 n遍
        for(int i=2;i

 

  • 念整数

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

如输入1234,则输出:

yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

fu er san si yi

输入格式:

一个整数,范围是[-100000,100000]。

输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例:

-30

输出样例:

fu san ling

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int number=in.nextInt();  //存储读入的数字
		String result=""; //存储结果
		boolean isMinus=false;  //是否为负数
		if(number<0){
			isMinus=true;  
			number=-number;  //转换为正数
		}
//		if(number==0){  //  用while循环需要判断数字为0时
//			result="ling";
//		}
		do{
			int units=number%10;
			switch(units){
			case 0:
				result="ling "+result;
				break;
			case 1:
				result="yi "+result;
				break;
			case 2:
				result="er "+result;
				break;
			case 3:
				result="san "+result;
				break;
			case 4:
				result="si "+result;
				break;
			case 5:
				result="wu "+result;
				break;
			case 6:
				result="liu "+result;
				break;
			case 7:
				result="qi "+result;
				break;
			case 8:
				result="ba "+result;
				break;
			case 9:
				result="jiu "+result;
				break;
			}
			number/=10;
		}while(number>0);
		if(isMinus){
			result="fu "+result;
		}
		System.out.println(result.trim());

	}
}

 

  • 素数和

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0

注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。

输入格式:

两个整数,第一个表示n,第二个表示m。

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入样例:

2 4

输出样例:

15

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入素数个数区间[n,m]");
		int n=in.nextInt();
		int m=in.nextInt();
		int count=0;
		int i=2;
		int result=0;
		while(count<=m){
			boolean isPrime=true;
			for(int j=2;j=n&&count<=m){
					result+=i;
				}
			}
			
			i++;
		}
		System.out.println(result);
	}

}

 

你可能感兴趣的:(●Java,习题)