目录
多项式加法
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);
}
}
* 读入一个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);
}
}
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);
}
}
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+"枚五角硬币");
}
}
}
}
}
}
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
//判断是否能被已知的且
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);
}
}