资源描述
一、简单问题:
1. 编程求下列式子的值,
y=1-1/2+1/3-1/4+…+1/99-1/100
并将结果输出,格式为: 1-1/2+1/3-1/4+…+1/99-1/100 = 表达式的值
public class Porg {
public static void main(String[] args) {
double sum=0;
for(double i=1;i<=100;i++)
{
sum=sum+Math.pow(-1, i-1)*(1/i);
}
System.out.print(" 1-1/2+1/3-1/4+…+1/99-1/100="+sum);
}
}
2. 请编程实现:由键盘输入的任意一组字符,统计其中大写字母的个数m和小写字母的个数n,并输出m、n中的较大者。
import java.util.Scanner;
public class Prog2 {
public static void main(String[] args) {
int m=0,n=0;
Scanner cin=new Scanner(System.in);
String str=cin.nextLine();
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)>'A'&&str.charAt(i)<='Z')
m++;
else
n++;
}
if(m>n)
{
System.out.println(m);
}
else
System.out.println(n);
}
}
3. 编程,求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如:153 = 13 + 53+ 33。
public class Prog3 {
public static void main(String[] args) {
int a,b,c;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
System.out.println(a*100+b*10+c);
}
}
}
}
4. 请编制程序判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。
import java.util.Scanner;
public class Prog4 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int i=cin.nextInt();
if( i%5==0&&i%7==0)
System.out.print("yes");
else
System.out.print("no");
}
}
5. 请编程实现:对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80—89分为‘B’,70—79分为‘C’,60—69分为‘D’,60分以下为‘E’ 。
import java.util.Scanner;
public class Prog5 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int m=cin.nextInt();
if(m>=60&&m<=69)
System.out.print("D");
else
if(m>=70&&m<=79)
System.out.print("C");
else
if(m>=80&&m<=89)
System.out.print("B");
else
if(m>=90)
System.out.print("A");
else
System.out.print("E");
}
}
6. 输入一行字符,将其中的字母变成其后续的第3个字母,输出。例:a→d,x → a;y → b;编程实现。
import java.util.Scanner;
public class Prog6 {
public static void main(String[] args) {
char[] zimu=new char[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c'};
Scanner cin=new Scanner(System.in);
String str=cin.nextLine();
for(int j=0;j<str.length();j++)
{
for(int i=0;i<29;i++)
{
if(str.charAt(j)==zimu[i])
{
System.out.println(zimu[i+3]);
break;
}
}
}
7. 编写程序,输入任意一个1~7之间的整数,将他们转换成对应的英文单词. 例如:1转换成Monday,7转换成Sunday.
import java.util.Scanner;
public class Prog7 {
public static void main(String[] args) {
System.out.print("请输入任意一个1~7之间的整数\n");
Scanner cin=new Scanner(System.in);
int m=cin.nextInt();
if(m==1)
System.out.print("Monday");
else
if(m==2)
System.out.print("Tuesday");
else
if(m==3)
System.out.print("Wensday");
else
if(m==4)
System.out.print("Thuesday");
else
if(m==5)
System.out.print("Friday");
else
if(m==6)
System.out.print("Saturday");
else
System.out.print("Sunday");
}
}
8. 输入三角形的三边a, b, c,判断能否构成三角形. 若能,计算面积.
import java.util.Scanner;
public class Prog8 {
public static void main(String[] args) {
System.out.print("请输入三个整数\n");
Scanner cin=new Scanner(System.in);
int a=cin.nextInt();
int b=cin.nextInt();
int c=cin.nextInt();
if(a+b<c||a+c<b||c+b<a)
{
System.out.print("不能构成三角形\n");
}
else
{
int l=a+b+c;
System.out.print(l);
}
}
}
9. 编程序,输入a,b,c,求方程 ax2+bx+c=0 的解。
import java.util.Scanner;
public class Prog9 {
public static void main(String[] args) {
System.out.print("请输入三个整数\n");
Scanner cin=new Scanner(System.in);
int a=cin.nextInt();
int b=cin.nextInt();
int c=cin.nextInt();
if(a==0)
{
System.out.println(-c/b);
}
else if(b*b-4*a*c>=0)
{
double x1=(-b+Math.pow(1/2, b*b-4*a*c))/(2*a);
double x2=(-b-Math.pow(1/2, b*b-4*a*c))/(2*a);
System.out.println(x1);
System.out.print(x2);
}
else System.out.print("无解");
}
}
10.计算出前20项 fibonacci 数列, 要求一行打印5个数.
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔总数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
……
依次类推可以列出下表:
经过月数
0
1
2
3
4
5
6
7
8
9
10
11
12
幼仔对数
0
1
1
2
3
5
8
13
21
34
55
89
144
成兔对数
1
1
2
3
5
8
13
21
34
55
89
144
233
总体对数
1
2
3
5
8
13
21
34
55
89
144
233
377
import java.util.Scanner;
public class Prog10 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
int a=0,b=1,c=1;
if(n==1){System.out.println(a );
System.out.println(b );
System.out.println(c );}
else
{
for(int i=2;i<=n;i++)
{
a=b;
b=c;
c=a+b;
}
System.out.println("幼崽数"+a+"成年兔子书"+ b+"总数"+ c);
}
}
}
11.输出100~10000之间个位数为3的所有素数。
public class Prog11 {
public static void main(String[] args) {
for(int i=103;i<10000;i=i+10)
{
boolean flag=true;
for(int j=2;j<i/2;j++)
{
if(i%j==0)
{flag=false;break;}
}
if(flag==true){System.out.println(i);}
}
}
}
12. 百钱买百鸡问题:公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只一元,问一百元买一百只鸡有几种买法.
public class Prog12 {
public static void main(String[] args) {
int m=0;
for(int a=0;a<100;a++)
{
for(int b=0;b<100;b++)
{
for(int c=0;c<100;c++)
if(5*a+3*b+1/3*c==100&&a+b+c==100)
m++;
}
}
System.out.print("一百元买一百只鸡有"+m+"种买法");
}
}
13. 请编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。
import java.util.Scanner;
public class Prog13 {
public static void main(String[] args) {
System.out.print("请输入两个整数\n");
Scanner cin=new Scanner(System.in);
int a=cin.nextInt();
int b=cin.nextInt();
if(a*a+b*b>100)
{
System.out.print(a*a+b*b);
}
else
System.out.print(a+b);
}
}
14. 编程实现:对键盘输入的任意一个四位正整数,计算各位数字平方和。
如:2345 ,则:计算22+32+42+52
import java.util.Scanner;
public class Prog14 {
public static void main(String[] args) {
System.out.print("请输入任意一个四位正整数\n");
int sum=0;
Scanner cin=new Scanner(System.in);
int a=cin.nextInt();
sum=(a/1000*a/1000)+((a/100)%10*(a/100)%10)+((a/10%100%10)*(a/10%100%10))+((a%10)*(a%10));
System.out.print(sum);
}
}
15. 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完,请编程.
public class Prog15 {
public static void main(String[] args) {
int m=0,sum=1020;
do{
sum=sum/2-2;
m++;
}while(sum>=0);
System.out.print(m+"天以后能卖完");
}
}
16. 编程,输出200以内所有完全平方数C(满足C2=A2+B2)及其个数.
public class Prog16 {
public static void main(String[] args) {
int m=0;
for(int C=1;C<200;C++)
{
for(int A=1;A<=200;A++)
{
for(int B=1;B<=200;B++)
{
if(A*A+B*B==C*C)
{System.out.println(C);
A=201;
B=201;
m++;}
}
}
}
System.out.println("个数为:"+m);
}
}
17. 设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),编程,输出所有满足条件的N。
package easy;
public class The17 {
static long s,M;
public static void main(String[] args) {
for(long N=1009;N<=1109;N=N+10){
M=9*N;
s=0;
while(M>0){
s=s*10+M%10;
M=M/10;
}
if(N==s)
System.out.println(s);
}
}
}
18. 编程,输出555555的约数中最大的三位数。
package easy;
public class The18th {
public static void main(String[] args) {
double a=555555;
long b=0;
//long[] yueShu=new long[555555];
for(long i=1;i<=555555;i++){
if(a%i==0&&i>99&&i<1000){
while(i>b){
b=i;
}
}
}
System.out.println(b);
}
}
19. 编程,输出所有个位数为6且能被31整除的五位数及其个数。
package easy;
public class The19th {
public static void main(String[] args) {
for(long i=10006;i<=99996;i=i+10){
if(i%31==0){
System.out.println(i);
}
}
}
}
20. 编写程序,输入两个整数,和+、-、*、/ 、%之中的任意一个运算符,输出计算结果.
package easy;
//import java.util.InputMismatchException;
import java.util.Scanner;
public class The20th {
static Scanner cin=new Scanner(System.in);
public static void main(String[] args) {
Scanner cin1=new Scanner(System.in);
int d1,d2;
String str=new String("");
d1=cin.nextInt();
d2=cin.nextInt();
//System.out.println(d1);
//System.out.println(d2);
str=cin1.nextLine();
//System.out.println(str);
//System.out.println(str.charAt(0));
switch(str.charAt(0)){
case '+':{
System.out.println(d1+d2);
break;
}
case '-':{
System.out.println(d1-d2);
break;
}
case '*':{
System.out.println(d1*d2);
break;
}
case '/':{
System.out.println(d1/d2);
break;
}
}
}
/*static int add(int a,int b){
return a+b;
}
static int sub(int a,int b){
return a-b;
}
static int multiply(int a,int b){
return a*b;
}
static int divide(int a,int b){
return (int)(a/b);
}*/
}
21. 计算:1+1/(1+2)+1/(1+2+3)+…+ 1/(1+2+…+n), n由键盘输入。
package easy;
import java.util.Scanner;
public class The21th {
public static void main(String[] args) {
double sum=0,div=0;
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
for(int i=1;i<=n;i++){
div=div+i;
System.out.println("1/"+div);
sum=sum+1/div;
}
System.out.println(sum);
}
}
22. 编程计算: 1*2*3+3*4*5+…+99*100*101 的值.
package easy;
public class The22th {
public static void main(String[] args) {
long sum=0;
for(int i=1;i+2<=101;i=i+2){
sum=sum+i*(i+1)*(i+2);
}
System.out.println(sum);
}
}
二、比较简单问题:
1. 编一个函数GCD,求两个无符号整数的最大公约数。主函数输入两个正整数m 和 n, 调用GCD,求出m和n的最大公约数和最小公倍数.并输出。
package moreEasy;
import java.util.Scanner;
public class The1th {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int m=cin.nextInt();
int n=cin.nextInt();
System.out.println(m+"和"+n+"的最大公约数为:"+GCD(m,n));
System.out.println(m+"和"+n+"的最小公倍数为:"+m*n/GCD(m,n));
}
public static int GCD(int a,int b){
int r=0;
for(int i=1;i<=a&&i<=b;i++){
if(a%i==0&&b%i==0&&r<i){
r=i;
}
}
//System.out.println(r);
return r;
}
}
2. 请编程实现:建立一个4*4的二维整型数组,求对角线元素的和。
package moreEasy;
import java.util.Scanner;
public class The2th {
public static void main(String[] args) {
int ewsz[][]=new int[4][4];
Scanner cin=new Scanner(System.in);
for(int i=0;i<ewsz.length;i++){
for(int j=0;j<ewsz[i].length;j++){
ewsz[i][j]=cin.nextInt();
}
}
/*for(int i=0;i<ewsz.length;i++){
for(int j=0;j<ewsz[i].length;j++){
System.out.print(ewsz[i][j]);
if(j==3){
System.out.println("");
}
}
}*/
int sum=0;
for(int i=0;i<ewsz.length;i++){
sum=sum+ewsz[i][i];
}
System.out.println(sum);
}
}
3. 写一个判断素数的函数prime,在主函数中输入10个整数,调用prime,输出这10个整数中的素数的累加和。
package moreEasy;
import java.util.Scanner;
public class The3th {
public static void main(String[] args) {
int[] shu=new int[10];
int sum=0;
Scanner cin=new Scanner(System.in);
for(int i=0;i<shu.length;i++){
shu[i]=cin.nextInt();
}
for(int i=0;i<shu.length;i++){
if(prime(shu[i]))
sum=sum+shu[i];
}
System.out.println(sum);
}
public static boolean prime(int a){
//double b=Math.pow(a, 0.5);
for(int i=2;i<a;i++){
if(a%i==0||a==1){
return false;
}
}
return true;
}
}
4.从键盘上输入若干学生的一门课成绩,存入一个数组中,当输入负数时结束输入. 输出最高成绩和最低成绩及相应的序号。
package moreEasy;
import java.util.Scanner;
public class The4th {
public static void main(String[] args) {
int n,n1=0,max,min;
Scanner cin=new Scanner(System.in);
System.out.print("学生人数");
n=cin.nextInt();
int[] chengJi=new int[n];
for(int i=0;i<n;i++){
chengJi[i]=cin.nextInt();
}
max=chengJi[0];
min=chengJi[0];
for(int j=0;j<chengJi.length;j++){
if(max<chengJi[j]){
max=chengJi[j];
n=j;
}
if(min>chengJi[j]){
min=chengJi[j];
n1=j;
}
}
System.out.println("max="+max+" "+n);
System.out.println("min="+min+" "+n1);
}
}
5. 编程计算: 1!+2!+3!+…+20!,并将结果输出.输出格式:
1!+2!+3!+…+20!= 表达式的值
package moreEasy;
public class The5th {
public static void main(String[] args) {
long sum=0;
for(int i=1;i<=20;i++){
long r=1;
for(int j=1;j<=i;j++){
r*=j;
}
sum=sum+r;
//System.out.print(" r="+r);
if(i<20)
System.out.print(i+"!+");
else
System.out.print(i+"!="+sum);
}
}
}
6. 有一个 3 * 4 的矩阵,编程实现: 找出该矩阵中每行元素的最大值,存入一个一维数组中。输出原始矩阵和结果矩阵。
7. 将若干个整数放到一维数组中,找出该数组中的最大值和它的下标。然后将它和数组中的最前面的元素对换。不明白
package moreEasy;
import java.util.Scanner;
public class The7th {
public static void main(String[] args) {
int[] array=new int[10];
Scanner cin=new Scanner(System.in);
System.out.print("数组长度:");
int n=cin.nextInt();
for(int i=0;i<n;i++){
array[i]=cin.nextInt();
}
int min=array[0];
int max=array[0];
//System.out.println(min);
//System.out.println(max);
for(int i=0;i<array.length;i++){
if(array[i]<min)
min=array[i];
if(max<array[i])
max=array[i];
}
System.out.println(min);
System.out.println(max);
}
}
8. 编写一个函数converse,将一维数组中的数逆序存放,不允许使用辅助数组。主函数输入原始数据,调用converse,实现逆置。并将原数组和逆置后的数组输出
package moreEasy;
import java.util.Scanner;
public class The8th {
public static void main(String[] args) {
converse();
}
public static void converse(){
int[] ar=new int[10];
Scanner cin=new Scanner(System.in);
for(int i=0;i<ar.length;i++){
ar[i]=cin.nextInt();
//if(ar[i]==-1)
//break;
}
for(int j=0;j<ar.length;j++){
System.out.print(ar[j]);
}
System.out.println("");
for(int i=0;i<ar.length/2;i++){
int a=ar[ar.length-i-1];
ar[ar.length-i-1]=ar[i];
ar[i]=a;
}
for(int j=0;j<ar.length;j++){
System.out.print(ar[j]);
}
}
}
9. 编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。主函数输入一个字符串,调用该函数对其进行转换,分别输出原串和转换之后的串。
package moreEasy;
import java.util.Scanner;
public class The9th {
static String str="";
public static void main(String[] args) {
String str="";
Scanner cin=new Scanner(System.in);
str=cin.nextLine();
zhuanHuan(str);
}
public static void zhuanHuan(String str1){
str=str1;
str=str.toLowerCase();
System.out.println(str);
}
}
10. 编写一个函数,将字符数组a中的全部字符复制到字符数组b中. 不要使用strcpy函数. 主函数输入任意一个字符串,调该函数,复制出另一个字符串。将两个串输出。
package moreEasy;
import java.util.Scanner;
public class The10th {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
String str=cin.nextLine();
char[] aa=new char[str.length()];
char[] bb=new char[str.length()];
for(int i=0;i<aa.length;i++){
展开阅读全文