求s= a + aa + aaa + … + aa…a 的值(最后一个数中 a 的个数为 n ),# 其中 a 是一个1~9的数字,例如: 2 + 22 + 222 + 2222 + 22

# 5. 求s= a + aa + aaa + … + aa…a 的值(最后一个数中 a 的个数为 n ),
# 其中 a 是一个1~9的数字,例如: 2 + 22 + 222 + 2222 + 22222
a = int(input("请输入数字a:"))
n = int(input("请输入数字n:"))
s = 0
for i in range(1, n + 1):
    s += int(str(a) * i)
    # print(s)
print(s)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一些经典的习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总为多少? 1.程序分析: 兔子的规律为列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素,并输出所有素。 1.程序分析:判断素的方法:用一个分别去除2到sqrt(这个数),如果能被整除, 则表明此不是素,反之是素。 【程序3】 题目:打印出所有的"水仙花",所谓"水仙花"是指一个三位,其各位数字立方和等于该本身。例如:153是一个"水仙花",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整分解质因。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因,应先找到一个最小的质k,然后按下述步骤完成: (1)如果这个质恰等于n,则说明分解质因的过程已经结束,打印出即可。 (2)如果nk,但n能被k整除,则应打印出k的,并用n除以k的商,作为新的正整你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整m和n,其最大公约和最小公倍。 1.程序分析:利用辗除法。 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 【程序8】 题目:s=a+aa+aaa+aaaa+aa...a的,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的。 【程序9】 题目:一个如果恰好等于它的因子之和,这个数就称为"完"。例如6=1+2+3.编程 找出1000以内的所有完。 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,它在 第10次落地时,共经过多少米?第10次反弹多高? 【程序11】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 【程序12】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%, 高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,应发放奖金总? 1.程序分析:请利用轴来分界,定位。注意定义时需把奖金定义成长整型。 【程序13】 题目:一个,它加上100后是一个完全平方,再加上168又是一个完全平方,请问该是多少? 1.程序分析:在10万以内判断,先将该加上100后再开方,再将该加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析: public class FullSquare { public static void main(String[] args) { int t = 0; for (int i = 1; i <= 100; i++) { t = i + 100; for (int j = 1; j <= 100; j++) { if (t == j * j) { t = t + 168; for (int p = 1; p <= 100; p++) { if (t == p * p) System.out.println(i); } } } } } } 【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 import java.util.Scanner; //题目:输入某年某月某日,判断这一天是这一年的第几天 public class ThisDayIs { public static void main(String[] args) { System.out.println("请输入年份,如:2008"); Scanner YMD = new Scanner(System.in); int year = YMD.nextInt(); System.out.println("请输入月份1~12,如8"); int month = YMD.nextInt(); System.out.println("请输入天1~31,如8"); int day = YMD.nextInt(); if (LeapYear(year)) { switch (month) { case 1: { System.out.println("这是" + year + "的第" + day + "天"); break; } case 2: { day = day + 31; System.out.println("这是" + year + "的第" + day + "天"); break; } case 3: { day = day + 29 + 31; System.out.println("这是" + year + "的第" + day + "天"); break; } case 4: { day = day + 29 + 31 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 5: { day = day + 29 + 31 * 2 + 30; System.out.println("这是" + year + "的第" + day + "天"); break; } case 6: { day = day + 29 + 31 * 3 + 30; System.out.println("这是" + year + "的第" + day + "天"); break; } case 7: { day = day + 29 + 31 * 3 + 30 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 8: { day = day + 29 + 31 * 4 + 30 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 9: { day = day + 29 + 31 * 5 + 30 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 10: { day = day + 29 + 31 * 5 + 30 * 3; System.out.println("这是" + year + "的第" + day + "天"); break; } case 11: { day = day + 29 + 31 * 6 + 30 * 3; System.out.println("这是" + year + "的第" + day + "天"); break; } case 12: { day = day + 29 + 31 * 6 + 30 * 4; System.out.println("这是" + year + "的第" + day + "天"); break; } } } else switch (month) { case 1: { System.out.println("这是" + year + "的第" + day + "天"); break; } case 2: { day = day + 31; System.out.println("这是" + year + "的第" + day + "天"); break; } case 3: { day = day + 28 + 31; System.out.println("这是" + year + "的第" + day + "天"); break; } case 4: { day = day + 28 + 31 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 5: { day = day + 28 + 31 * 2 + 30; System.out.println("这是" + year + "的第" + day + "天"); break; } case 6: { day = day + 28 + 31 * 3 + 30; System.out.println("这是" + year + "的第" + day + "天"); break; } case 7: { day = day + 28 + 31 * 3 + 30 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 8: { day = day + 28 + 31 * 4 + 30 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 9: { day = day + 28 + 31 * 5 + 30 * 2; System.out.println("这是" + year + "的第" + day + "天"); break; } case 10: { day = day + 28 + 31 * 5 + 30 * 3; System.out.println("这是" + year + "的第" + day + "天"); break; } case 11: { day = day + 28 + 31 * 6 + 30 * 3; System.out.println("这是" + year + "的第" + day + "天"); break; } case 12: { day = day + 28 + 31 * 6 + 30 * 4; System.out.println("这是" + year + "的第" + day + "天"); break; } } } private static boolean LeapYear(int year) { if (year % 4 == 0 || year % 100 == 0){ System.out.print(year+"是闰年"); return true; } else return false; } } import java.util.Scanner; //题目:输入某年某月某日,判断这一天是这一年的第几天 public class ThisDayIs { public static void main(String[] args) { System.out.println("请输入年份,如:2008"); Scanner YMD = new Scanner(System.in); int year = YMD.nextInt(); System.out.println("请输入月份1~12,如8"); int month = YMD.nextInt(); System.out.println("请输入天1~31,如8"); int day = YMD.nextInt(); int[] temp = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (LeapYear(year)) { temp[2] = temp[2] + 1; for (int i = 0; i < month; i++) { day += temp[i]; } System.out.println("这是" + year + "的第" + day + "天"); } else { for (int i = 0; i y则将x与y的进行交换,然后再用x与z进行比较,如果x>z则将x与z的进行交换,这样能使x最小。 import java.util.Scanner; //题目:输入三个整x,y,z,请把这三个数由小到大输出。 public class CompareThreeNumber { public static void main(String[] args) { System.out.println("请输入三个数"); Scanner Three = new Scanner(System.in); int xThree = Three.nextInt(); int yThree = Three.nextInt(); int zThree = Three.nextInt(); int temp; if (xThree >= yThree) { temp = xThree; xThree = yThree; yThree = temp; if (yThree >= zThree) { temp = yThree; yThree = zThree; zThree = temp; if (xThree >= yThree) temp = xThree; xThree = yThree; yThree = temp; } } else if (yThree >= zThree) { temp = yThree; yThree = zThree; zThree = temp; if (xThree >= yThree) { temp = xThree; xThree = yThree; yThree = temp; } } System.out.println(xThree + "<" + yThree + "<" + zThree); } } 【程序16】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 //题目:输出9*9口诀。 public class Formula99 { public static void main(String[] args) { for (int row = 1; row <= 9; row++) { for (int line = 1; line = 1;day--){ sum = (sum + 1) *2; System.out.println("第"+(day)+"天一共有"+sum+"个桃子"); } } } 【程序18】 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。 a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 1.程序分析:判断素的方法:用一个分别去除2到sqrt(这个数),如果能被整除, 则表明此不是素,反之是素。 【程序19】 题目:打印出如下图案(菱形) * *** ****** ******** ****** *** * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。 【程序20】 题目:有一分序列:2/1,3/2,5/3,8/5,13/8,21/13...出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。 //题目:有一分序列:2/1,3/2,5/3,8/5,13/8,21/13...出这个数列的前20项之和。 public class FractionSum { public FractionSum() { double sum = 0; for (double i = 2; i <= 20; i++) sum += F(i) / F(i - 1); System.out.println("这20项的结果是:" + sum); } public double F(double j) { if (j == 1) return 1; else if (j == 2) return 2; else return F(j - 1) + F(j - 2); } public static void main(String[] args) { new FractionSum(); } } 【程序21】 题目:1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。 //题目:1+2!+3!+...+20!的和 public class Factorial { public Factorial() { int sum = 0; for (int i = 1; i <= 20; i++) { int temp = 1; for (int j = 1; j <= i; j++) { temp *= j; } sum += temp; } System.out.println("前20个数的阶乘和为" + sum); } public static void main(String[] args) { new Factorial(); } } //题目:1+2!+3!+...+20!的和 public class Factorial { public Factorial() { int sum = 0; for (int i = 1; i <= 4; i++) { sum += F(i); } System.out.println("前20个数的阶乘和为" + sum); } public int F(int n) { if (n == 1) return 1; else return n * F(n - 1); } public static void main(String[] args) { new Factorial(); } } 【程序22】 题目:利用递归方法5!。 1.程序分析:递归公式:fn=fn_1*4! public class Recursion { public Recursion(int number) { System.out.println(number+"的阶乘是:"+F(number)); } public int F(int n) { if (n == 1) return 1; else return n * F(n - 1); } public static void main(String[] args){ new Recursion(5); } } 【程序23】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁,需知道第四人的岁,依次类推,推到第一人(10岁),再往回推。 【程序24】 题目:给一个不多于5位的正整,要:一、它是几位,二、逆序打印出各位数字。 【程序25】 题目:一个5位,判断它是不是回文。即12321是回文,个位与万位相同,十位与千位相同。 【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 【程序27】 题目:100之内的素 【程序28】 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 【程序29】 题目:一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维组,再将a[ i ][ i ]累加后输出。 【程序30】 题目:有一个已经排好序的组。现输入一个,要按原来的规律将它插入组中。 1. 程序分析:首先判断此是否大于最后一个,然后再考虑插入中间的的情况,插入后此元素之后的,依次后移一个位置。 【程序31】 题目:将一个组逆序输出。 1.程序分析:用第一个最后一个交换。 import java.util.Scanner; //题目:将一个组逆序输出。 public class ArrayReverse { public ArrayReverse() { System.out.println("输入一个指明组长度"); Scanner number = new Scanner(System.in); int n = number.nextInt(); System.out.println("输入一个组"); int[] Array = new int[n]; Reverse(Array); } public void Reverse(int[] Array) { Scanner array = new Scanner(System.in); for (int i = 0; i = 0; i++, j--) { int x, y; x = Array[i]; y = Array[j]; Array[j] = x; Array[i] = y; if (i >= j) break; } for (int i = 0; i < Array.length; i++) System.out.print(Array[i] + " "); } public static void main(String[] args) { new ArrayReverse(); } } 【程序32】 题目:取一个a从右端开始的4~7位。 程序分析:可以这样考虑: (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的。可用~(~0<<4) (3)将上面二者进行&运算。 【程序33】 题目:打印出杨辉三角形(要打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 【程序34】 题目:输入3个数a,b,c,按大小顺序输出。 1.程序分析:利用指针方法。 【程序35】 题目:输入组,最大的与第一个元素交换,最小的与最后一个元素交换,输出组。 【程序36】 题目:有n个整,使其前面各顺序向后移m个位置,最后m个数变成最前面的m个数 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报(从1到3报),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位。 【程序38】 题目:写一个一个字符串的长度,在main函数中输入字符串,并输出其长度。 【程序39】 题目:编写一个,输入n为偶时,调用函1/2+1/4+...+1/n,当输入n为奇时, 调用函1/1+1/3+...+1/n(利用指针函) 【程序40】 题目:字符串排序。 【程序41】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 【程序42】 题目:809*??=800*??+9*??+1 其中??代表的两位,8*??的结果为两位,9*??的结果为3位??代表的两位,及809*??后的结果。 【程序43】 题目:0—7所能组成的奇个数。 【程序44】 题目:一个总能表示为两个素之和。 【程序45】 题目:判断一个能被几个9整除 【程序46】 题目:两个字符串连接程序 【程序47】 题目:读取7个数(1—50)的整,每读取一个,程序打印出该个数的*。 【程序48】 题目:某个公司采用公用电话传递据,据是四位的整,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余代替该数字,再将第一位和第四位交换,第二位和第三位交换。 【程序49】 题目:计算字符串中子串出现的次 【程序50】 题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的据和计算出的平均分存放在磁盘文件"stud"中。
浙江大学C语言上机练习题&答案 第2周(M2) 2 20011华氏温度100°F对应的摄氏温度。 2 20012 华氏温度 150°F 对应的摄氏温度。 3 20013摄氏温度26°C对应的华氏温度。 3 20015当n为152时,分别出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的。 3 20026 输入2个整 num1 和 num2,计算并输出它们的和、差、积、商与余。 4 第3周(M3) 5 20031 1+2+3+......+100(调试示例error02_5) 5 20032 m+(m+1)+(m+2)+......+100 5 20033 1/m+1/(m+1)+1/(m+2)+......+1/n 6 20034 1 + 1/3 + 1/5 + ......的前n项和 7 20035 1-1/4+1/7-1/10+……的前n项之和 7 20036 输出华氏-摄氏温度转换表(改错题error02_6) 8 20038 x的n次幂 9 20041 生成 3 的乘方表 10 20044 100^0.5+101^0.5+……+1000^0.5 10 20053 计算物体自由下落的距离 11 20056 计算分段函 11 20061 阶梯电价 12 20062 m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n 13 20063 1-2/3+3/5-4/7+5/9-6/11+…… 14 20064 2^1+2^2+2^3+……+2^n 15 第4周(M4) 15 10007 显示图案 (复习printf()的字符串输出) 15 20042 生成阶乘表 16 20043 使用函 n! /(m!* (n-m)!) 16 20054 平均 17 20057 1+1/2+1/3+......+1/n 18 20065 0!+1!+2!+……+n! 18 40015 最小 19 40018 a+aaaaaaa…a 20 第5周(M5) 21 30001 一元二次方程的根 21 30002 分段函 23 30003 分类统计字符 23 30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch) 24 30005 显示水果的价格(使用switch) 25 30007 三角形的面积和周长 27 30008 计算个人所得税 28 30051 判断闰年 29 30052 统计学生平均成绩与及格人 30 30053 分段计算水费(使用嵌套的if-else语句) 31 第6周(M6) 32 40011 最小公倍和最大公约(调试示例error04_1) 32 40012 1-1/4+1/7-1/10+1/13-1/16+…… 33 40014 的位 34 40023 换硬币 35 40024 找出各位数字的立方和等于它本身的 36 40025 找完(改错题error04_2) 38 40027 从高位开始逐位输出一个的各位数字(选作) 39 40052 判断素 40 40053 逆序输出整 41 40054 输出斐波那契序列 42 第7周(M7) 42 50002 使用函判断的符号 42 50003 使用函和 43 50005 使用函统计素和 44 50006 使用函统计一个数中数字个数 45 50007 使用函找水仙花 46 50009 使用函余弦函的近似 48 50052 使用函找最大 49 50062 使用函输出指定范围内的 Fibonacci 50 50063 使用函找出指定范围内的完 51 第8周(M8) 52 40013 和 52 40062 x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……的 53 50004 使用函计算两点间的距离 54 50061 使用函a+aaaaaaa…a 55 60002 整的十进制、八进制和十六进制表现形式 56 60003 分类统计字符 57 60006 验证歌德巴赫猜想 58 60007 使用函输出整的逆序 59 60009 统计单词 60 60062 简单计算器 61 夏1周 2 70011 简化的插入排序 2 70012 平均 5 70013 将组中的逆序存放 6 70014 最大及其下标 7 70015 交换最小和最大 8 70016 选择法排序 9 70017 在组中查找指定的元素 10 70021 矩阵各行元素之和 11 70022 矩阵运算 12 70023 九九乘法表 13 夏2周 14 70024 判断上三角矩阵 14 70025 算算看,这是第几天? 15 70026 找鞍点(选作) 16 70031 将字符串逆序存放 17 70032 查找字符 18 70033 统计大写辅音字母 19 70034 字符串替换 20 70035 将十六进制字符串转换为十进制整 21 70036 将十进制字符串转换为十进制整 22 70052 统计字符出现次 23 夏3周 24 10008 1~100中能被6整除的所有整的和 24 20014 计算三门课程的平均成绩 25 20016 计算x的平方 25 20021 计算分段函 25 20022 计算摄氏温度 26 70051 找最大并交换 27 80011 循环移动 28 80012 在组中查找指定元素 29 80013 使用函的选择法排序 30 80014 报 32 夏4周 35 10012 函程序设计 35 10024 计算最长的字符串长度 36 10025 字符串的连接 37 40017 2/1+3/2+5/3+8/5+... 38 80021 找最大的字符串 39 80022 找最长字符串 40 80023 使用函删除字符串中的字符 41 80024 使用函实现字符串复制 42 80025 判断回文字符串 43 80026 分类统计字符个数 44 夏5周 45 10014 计算函P(n,x) 45 10016 十进制转换二进制 46 10017 递归函程序设计Fabonacci列 48 10019 改错题error10_1.cpp 49 10022 编程题 50 10026 指定位置输出字符串 50 10027 藏尾诗 51 10028 改错题error11_2.cpp 52 40065 分解质因 53 40067 打印图案 54 夏6周 56 30062 输出21世纪所有闰年 56 90001 调试示例error09_1.cpp 56 90002 时间换算 57 90003 计算平均成绩 58 90004 计算两个复之积 59 90005 查找书籍 60 90006 通讯录排序 61 90007 算算看,这是第几天? 62 90008 使用函实现时间换算 63 90009 找出总分最高的学生 64 其它练习 65 20027计算旅途时间。 65 20028数字加密 66 教材习题3-4 (上机练习30009,统计学生成绩) 66 30061 出租车计费 67 教材习题4-12(p77) 68 教材习题4-14(p77) 69 50051 数字金字塔(此题与40067打印图案的思路相似) 69
一个,例如:给你的 a b c 则输出 abc acb bac bca cab cba import java.util.ArrayList; import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";//原字符串 List<String> result = list(s, "");//列出字符的组合,放入result System.out.println(result.size());; System.out.println(result); } /** * 列出基础字符串(base)的所有组合 * @param base 以该字符串作为基础字符串,进行选择性组合。 * @param buff 所字符串的临时结果 * @param result 存放所结果 */ public static List<String> list(String base,String buff){ List<String> result = new ArrayList<String>();//存放结果信息。 if(base.length()<=0){ result.add(buff); } for(int i=0;i<base.length();i++){ List<String> temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i)); result.addAll(temp); } return result; } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public static void main(String[] args) { String s="ABCD";//原字符串 List<String> result = new ArrayList<String>();//存放结果信息。 list(s, "", result);//列出字符的组合,放入result System.out.println(result.size());; System.out.println(result); } /** * 列出基础字符串(base)的所有组合 * @param base 以该字符串作为基础字符串,进行选择性组合。 * @param buff 所字符串的临时结果 * @param result 存放所结果 */ public static void list(String base,String buff,List<String> result){ if(base.length()<=0){ result.add(buff); } for(int i=0;i<base.length();i++){ list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result); } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 写一个,给你一个字符串 倒序输出来 public String getString(String str){ if(str!=null){ String newStr = ""; for(int i=0;i<str.length();i++) { char c = str.charAt(str.length()-1-i); newStr = newStr + c; } return newStr; }else{ return null; } } 不使用中间变量 把两个变量的互换 int a=10; int b=100; a=a*b; b=a/b; a=a/b; System.out.print("a="+a+" b="+b); 折半查找 public class Test { public static int[] data = { 12, 15, 20, 10, 19, 3, 89, 32, 39, 47, 55 }; // 原始据 public static int counter = 1; // 计器 public static int len = data.length; public static void main(String args[]) { //要查找的 int keyValue = 89; Test t = new Test(); boolean b = t.BinarySearch(keyValue); if(b) { // 输出查找次 System.out.println("Search Time = " + counter); }else { // 输出没有找到据 System.out.println("No Found!!"); } } // --------------------------------------------------- // 折半查找法 public static boolean BinarySearch(int keyValue) { int left; // 左边界变量 int right; // 右边界变量 int middle; // 中位变量 System.out.println("据长度:"+len); left = 0; right = len - 1; while (left <= right) { //由于源据不是顺序的,需先进行排序 int temp; for(int i=0;i<data.length;++i) { for(int j=0;j<data.length-i-1;++j) { if(data[j]>data[j+1]) { temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } } middle = (left + right) / 2; // 欲查找较小 if (keyValue < data[middle]) { right = middle - 1; // 查找前半段 } // 欲查找较大 else if (keyValue > data[middle]) { left = middle + 1; // 查找后半段 } // 查找到据 else if (keyValue == data[middle]) { System.out.println("data[" + middle + "] = " + data[middle]); return true; } counter++; } return false; } } 1. 将this is a test 转化为This Is A Test String str="this is a man"; char c[]=new char[str.length()]; str.getChars(0,str.length(),c,0); if(c[0]>='a'&&c[0]<='z') { c[0]=(char)(c[0]-32); } for(int i=1;i<=c.length-1;i++) { if(c[i]==' ') { c[i+1]=(char)(c[i+1]-32); } } str=new String(c); System.out.print(str); 2. 将This is a test倒着输出tset a si sihT (用StringBuffer) String str="this is a man"; StringBuffer sb=new StringBuffer(str.length()); for(int j = str.length()-1;j>=0;j--) { sb.append(str.charAt(j)); } System.out.print(sb); 3. 用递归N!=N*(N-1)*(N-2)*...*2*1; long digui(int i) {if(i==0||i==1) { return 1; } else { return i*digui(i-1); } } 4. 写一个单例模式(遇到两次) public class Test { private Test(){} private static Test test; public static Test getInstance() { if(test==null) { test = new Test(); } return test; }} 5. //统计字符串的个数 "I'm go to swimming" // I:1 // ':1 // m:3 // 空格:3 // g:2// ... String str = "I'm go to swimming"; Set<String> set = new HashSet<String>(); for(int i=0;i<str.length();i++){ String s = str.substring(i,i+1); set.add(s); } Iterator it = set.iterator(); while(it.hasNext()) { String sr =(String)it.next(); int k=0; for(int j=0;j<str.length();j++){ if(sr.equals(str.substring(j,j+1))){ k++; } } System.out.println(s + "有" + k + "个"); } 6. 对字母进行排序,如:s,a,g,d,b; String s = "sagdb"; List t = new ArrayList(); for(int i=0;i<s.length();i++) { String xx = s.substring(i,i+1); t.add(xx); } java.util.Collections.sort(t); System.out.println(t); 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总为多少? //这是一个菲波拉契列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对: 1"); System.out.println("第2个月的兔子对: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对: "+f2); }}} 【程序2】 题目:判断101-200之间有多少个素,并输出所有素。 程序分析:判断素的方法:用一个分别去除2到sqrt(这个数),如果能被整除, 则表明此不是素,反之是素。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素个数是: " + count); }} 【程序3】 题目:打印出所有的 "水仙花 ",所谓 "水仙花 "是指一个三位,其各位数字立方和等于该本身。例如:153是一个 "水仙花 ",因为153=1的三次方+5的三次方+3的三次方。 public class lianxi03 { public static void main(String[] args) { int b1, b2, b3; for(int m=101; m<1000; m++) { b3 = m / 100; b2 = m % 100 / 10; b1 = m % 10; if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m) { System.out.println(m+"是一个水仙花"); } }}} 【程序4】 题目:将一个正整分解质因。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因,应先找到一个最小的质k,然后按下述步骤完成: (1)如果这个质恰等于n,则说明分解质因的过程已经结束,打印出即可。 (2)如果n <> k,但n能被k整除,则应打印出k的,并用n除以k的商,作为新的正整你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的,重复执行第一步。 import java.util.*; public class lianxi04{ public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print( "请键入一个正整: "); int n = s.nextInt(); int k=2; System.out.print(n + "=" ); while(k <= n) { if(k == n) {System.out.println(n);break;} else if( n % k == 0) {System.out.print(k + "*");n = n / k; } else k++; } } } 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 import java.util.*; public class lianxi05 { public static void main(String[] args) { int x; char grade; Scanner s = new Scanner(System.in); System.out.print( "请输入一个成绩: "); x = s.nextInt(); grade = x >= 90 ? 'A' : x >= 60 ? 'B' :'C'; System.out.println("等级为:"+grade); }} 【程序6】 题目:输入两个正整m和n,其最大公约和最小公倍。 /**在循环中,只要除不等于0,用较大除以较小的,将小的一个作为下一轮循环的大,取得的余作为下一轮循环的较小的,如此循环直到较小的为0,返回较大的,此即为最大公约,最小公倍为两之积除以最大公约。* / import java.util.*; public class lianxi06 { public static void main(String[] args) { int a ,b,m; Scanner s = new Scanner(System.in); System.out.print( "键入一个: "); a = s.nextInt(); System.out.print( "再键入一个: "); b = s.nextInt(); deff cd = new deff(); m = cd.deff(a,b); int n = a * b / m; System.out.println("最大公约: " + m); System.out.println("最小公倍: " + n); } } class deff{ public int deff(int x, int y) { int t; if(x < y) { t = x; x = y; y = t; } while(y != 0) { if(x == y) return x; else { int k = x % y; x = y; y = k; } } return x; }} 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 import java.util.*; public class lianxi07 { public static void main(String[] args) { int digital = 0; int character = 0; int other = 0; int blank = 0; char[] ch = null; Scanner sc = new Scanner(System.in); String s = sc.nextLine(); ch = s.toCharArray(); for(int i=0; i<ch.length; i++) { if(ch >= '0' && ch <= '9') { digital ++; } else if((ch >= 'a' && ch <= 'z') || ch > 'A' && ch <= 'Z') { character ++; } else if(ch == ' ') { blank ++; } else { other ++; } } System.out.println("数字个数: " + digital); System.out.println("英文字母个数: " + character); System.out.println("空格个数: " + blank); System.out.println("其他字符个数:" + other ); }} 【程序8】 题目:s=a+aa+aaa+aaaa+aa...a的,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 import java.util.*; public class lianxi08 { public static void main(String[] args) { long a , b = 0, sum = 0; Scanner s = new Scanner(System.in); System.out.print("输入数字a的: "); a = s.nextInt(); System.out.print("输入相加的项:"); int n = s.nextInt(); int i = 0; while(i < n) { b = b + a; sum = sum + b; a = a * 10; ++ i; } System.out.println(sum); }} 【程序9】 题目:一个如果恰好等于它的因子之和,这个数就称为 "完 "。例如6=1+2+3.编程 找出1000以内的所有完。 public class lianxi09 { public static void main(String[] args) { System.out.println("1到1000的完有: "); for(int i=1; i<1000; i++) { int t = 0; for(int j=1; j<= i/2; j++) { if(i % j == 0) { t = t + j; } } if(t == i) { System.out.print(i + " "); } }} 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,它在 第10次落地时,共经过多少米?第10次反弹多高? public class lianxi10 { public static void main(String[] args) { double h = 100,s = 100; for(int i=1; i<10; i++) { s = s + h; h = h / 2; } System.out.println("经过路程:" + s); System.out.println("反弹高度:" + h / 2); }} 【程序11】 题目:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位?都是多少? public class lianxi11 { public static void main(String[] args) { int count = 0; for(int x=1; x<5; x++) { for(int y=1; y<5; y++) { for(int z=1; z<5; z++) { if(x != y && y != z && x != z) { count ++; System.out.println(x*100 + y*10 + z ); } } } } System.out.println("共有" + count + "个三位"); }} 【程序12】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,应发放奖金总? import java.util.*; public class lianxi12 { public static void main(String[] args) { double x = 0,y = 0; System.out.print("输入当月利润(万):"); Scanner s = new Scanner(System.in); x = s.nextInt(); if(x > 0 && x <= 10) { y = x * 0.1; } else if(x > 10 && x <= 20) { y = 10 * 0.1 + (x - 10) * 0.075; } else if(x > 20 && x <= 40) { y = 10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05; } else if(x > 40 && x <= 60) { y = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (x - 40) * 0.03; } else if(x > 60 && x <= 100) { y = 20 * 0.175 + 20 * 0.05 + 20 * 0.03 + (x - 60) * 0.015; } else if(x > 100) { y = 20 * 0.175 + 40 * 0.08 + 40 * 0.015 + (x - 100) * 0.01; } System.out.println("应该提取的奖金是 " + y + "万"); }} 【程序13】 题目:一个,它加上100后是一个完全平方,再加上168又是一个完全平方,请问该是多少? public class lianxi13 { public static void main(String[] args) { for(int x =1; x<100000; x++) { if(Math.sqrt(x+100) % 1 == 0) { if(Math.sqrt(x+268) % 1 == 0) { System.out.println(x + "加100是一个完全平方,再加168又是一个完全平方"); } } }}} /*按题意循环应该从-100开始(整包括正整、负整、零),这样会多一个满足条件的-99。 但是我看到大部分人解这道题目时都把题中的“整”理解成正整,我也就随大流了。*/ 【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? import java.util.*; public class lianxi14 { public static void main(String[] args) { int year, month, day; int days = 0; int d = 0; int e; input fymd = new input(); do { e = 0; System.out.print("输入年:"); year =fymd.input(); System.out.print("输入月:"); month = fymd.input(); System.out.print("输入天:"); day = fymd.input(); if (year < 0 || month < 0 || month > 12 || day < 0 || day > 31) { System.out.println("输入错误,请重新输入!"); e=1 ; } }while( e==1); for (int i=1; i <month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { days = 29; } else { days = 28; } break; } d += days; } System.out.println(year + "-" + month + "-" + day + "是这年的第" + (d+day) + "天。"); } } class input{ public int input() { int value = 0; Scanner s = new Scanner(System.in); value = s.nextInt(); return value; }} 【程序15】 题目:输入三个整x,y,z,请把这三个数由小到大输出。 import java.util.*; public class lianxi15 { public static void main(String[] args) { input fnc = new input(); int x=0, y=0, z=0; System.out.print("输入第一个数字:"); x = fnc.input(); System.out.print("输入第二个数字:"); y = fnc.input(); System.out.print("输入第三个数字:"); z = fnc.input(); if(x > y) { int t = x; x = y; y = t; } if(x > z) { int t = x; x = z; z = t; } if(y > z) { int t = y; y = z; z = t; } System.out.println( "三个数字由小到大排列为: "+x + " " + y + " " + z); } } class input{ public int input() { int value = 0; Scanner s = new Scanner(System.in); value = s.nextInt(); return value; }} 【程序16】 题目:输出9*9口诀。 public class lianxi16 { public static void main(String[] args) { for(int i=1; i<10; i++) { for(int j=1; j<=i; j++) { System.out.print(j + "*" + i + "=" + j*i + " " ); if(j*i<10){System.out.print(" ");} } System.out.println(); } }} 【程序17】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。第一天共摘了多少。 public class lianxi17 { public static void main(String[] args) { int x = 1; for(int i=2; i<=10; i++) { x = (x+1)*2; } System.out.println("猴子第一天摘了 " + x + " 个桃子"); }} 【程序18】 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 public class lianxi18 { static char[] m = { 'a', 'b', 'c' }; static char[] n = { 'x', 'y', 'z' }; public static void main(String[] args) { for (int i = 0; i < m.length; i++) { for (int j = 0; j < n.length; j++) { if (m[i] == 'a' && n[j] == 'x') { continue; } else if (m[i] == 'a' && n[j] == 'y') { continue; } else if ((m[i] == 'c' && n[j] == 'x') || (m[i] == 'c' && n[j] == 'z')) { continue; } else if ((m[i] == 'b' && n[j] == 'z') || (m[i] == 'b' && n[j] == 'y')) { continue; } else System.out.println(m[i] + " vs " + n[j]); } } } } 【程序19】 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * public class lianxi19 { public static void main(String[] args) { int H = 7, W = 7;//高和宽必须是相等的奇 for(int i=0; i<(H+1) / 2; i++) { for(int j=0; j<W/2-i; j++) { System.out.print(" "); } for(int k=1; k<(i+1)*2; k++) { System.out.print('*'); } System.out.println(); } for(int i=1; i<=H/2; i++) { for(int j=1; j<=i; j++) { System.out.print(" "); } for(int k=1; k<=W-2*i; k++) { System.out.print('*'); } System.out.println(); } }} 【程序20】 题目:有一分序列:2/1,3/2,5/3,8/5,13/8,21/13...出这个数列的前20项之和。 public class lianxi20 { public static void main(String[] args) { int x = 2, y = 1, t; double sum = 0; for(int i=1; i<=20; i++) { sum = sum + (double)x / y; t = y; y = x; x = y + t; } System.out.println("前20项相加之和是: " + sum); }} 【程序21】 题目:1+2!+3!+...+20!的和 public class lianxi21 { public static void main(String[] args) { long sum = 0; long fac = 1; for(int i=1; i<=20; i++) { fac = fac * i; sum += fac; } System.out.println(sum); }} 【程序22】 题目:利用递归方法5!。 public class lianxi22 { public static void main(String[] args) { int n = 5; rec fr = new rec(); System.out.println(n+"! = "+fr.rec(n)); } } class rec{ public long rec(int n) { long value = 0 ; if(n ==1 ) { value = 1; } else { value = n * rec(n-1); } return value; }} 【程序23】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? public class lianxi23 { public static void main(String[] args) { int age = 10; for(int i=2; i<=5; i++) { age =age+2; } System.out.println(age); }} 【程序24】 题目:给一个不多于5位的正整,要:一、它是几位,二、逆序打印出各位数字。 //使用了长整型最多输入18位 import java.util.*; public class lianxi24 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个正整:"); long a = s.nextLong(); String ss = Long.toString(a); char[] ch = ss.toCharArray(); int j=ch.length; System.out.println(a + "是一个"+ j +"位。"); System.out.print("按逆序输出是:"); for(int i=j-1; i>=0; i--) { System.out.print(ch[i]); } } } 【程序25】 题目:一个5位,判断它是不是回文。即12321是回文,个位与万位相同,十位与千位相同。 import java.util.*; public class lianxi25 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int a; do{ System.out.print("请输入一个5位正整:"); a = s.nextInt(); }while(a<10000||a>99999); String ss =String.valueOf(a); char[] ch = ss.toCharArray(); if(ch[0]==ch[4]&&ch[1]==ch[3]){ System.out.println("这是一个回文");} else {System.out.println("这不是一个回文");} } } //这个更好,不限位 import java.util.*; public class lianxi25a { public static void main(String[] args) { Scanner s = new Scanner(System.in); boolean is =true; System.out.print("请输入一个正整:"); long a = s.nextLong(); String ss = Long.toString(a); char[] ch = ss.toCharArray(); int j=ch.length; for(int i=0; i<j/2; i++) { if(ch[i]!=ch[j-i-1]){is=false;} } if(is==true){System.out.println("这是一个回文");} else {System.out.println("这不是一个回文");} } } 【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 import java.util.*; public class lianxi26 { public static void main(String[] args) { getChar tw = new getChar(); System.out.println("请输入星期的第一个大写字母:"); char ch = tw.getChar(); switch(ch) { case 'M': System.out.println("Monday"); break; case 'W': System.out.println("Wednesday"); break; case 'F': System.out.println("Friday"); break; case 'T': { System.out.println("请输入星期的第二个字母:"); char ch2 = tw.getChar(); if(ch2 == 'U') {System.out.println("Tuesday"); } else if(ch2 == 'H') {System.out.println("Thursday"); } else {System.out.println("无此写法!"); } }; break; case 'S': { System.out.println("请输入星期的第二个字母:"); char ch2 = tw.getChar(); if(ch2 == 'U') {System.out.println("Sunday"); } else if(ch2 == 'A') {System.out.println("Saturday"); } else {System.out.println("无此写法!"); } }; break; default:System.out.println("无此写法!"); } } } class getChar{ public char getChar() { Scanner s = new Scanner(System.in); String str = s.nextLine(); char ch = str.charAt(0); if(ch<'A' || ch>'Z') { System.out.println("输入错误,请重新输入"); ch=getChar(); } return ch; }} 【程序27】 题目:100之内的素 //使用除sqrt(n)的方法出的素不包括2和3 public class lianxi27 { public static void main(String[] args) { boolean b =false; System.out.print(2 + " "); System.out.print(3 + " "); for(int i=3; i<100; i+=2) { for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) {b = false; break; } else{b = true;} } if(b == true) {System.out.print(i + " ");} } } } //该程序使用除1位素得2位方法,运行效率高通用性差。 public class lianxi27a { public static void main(String[] args) { int[] a = new int[]{2, 3, 5, 7}; for(int j=0; j<4; j++)System.out.print(a[j] + " "); boolean b =false; for(int i=11; i<100; i+=2) { for(int j=0; j<4; j++) { if(i % a[j] == 0) {b = false; break; } else{b = true;} } if(b == true) {System.out.print(i + " ");} } } } 【程序28】 题目:对10个数进行排序 import java.util.*; public class lianxi28 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int[] a = new int[10]; System.out.println("请输入10个整:"); for(int i=0; i<10; i++) { a[i] = s.nextInt(); } for(int i=0; i<10; i++) { for(int j=i+1; j<10; j++) { if(a[i] > a[j]) { int t = a[i]; a[i] = a[j]; a[j] = t; } } } for(int i=0; i<10; i++) { System.out.print(a[i] + " "); } } } 【程序29】 题目:一个3*3矩阵对角线元素之和 import java.util.*; public class lianxi29 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int[][] a = new int[3][3]; System.out.println("请输入9个整:"); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { a[i][j] = s.nextInt(); } } System.out.println("输入的3 * 3 矩阵是:"); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { System.out.print(a[i][j] + " "); } System.out.println(); } int sum = 0; for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { if(i == j) { sum += a[i][j]; } } } System.out.println("对角线之和是:" + sum); }} 【程序30】 题目:有一个已经排好序的组。现输入一个,要按原来的规律将它插入组中。 //此程序不好,没有使用折半查找插入 import java.util.*; public class lianxi30 { public static void main(String[] args) { int[] a = new int[]{1, 2, 6, 14, 25, 36, 37,55}; int[] b = new int[a.length+1]; intt1=0,t=0; int i =0; Scanner s= new Scanner(System.in); System.out.print("请输入一个:"); int num = s.nextInt(); if(num >= a[a.length-1]) { b[b.length-1] = num; for(i=0; i<a.length; i++) { b[i] = a[i]; } } else { for(i=0; i<a.length; i++) { if(num >= a[i]) { b[i] = a[i]; } else { b[i] = num; break; } } for(int j=i+1; j<b.length; j++) { b[j] = a[j-1]; } } for (i = 0; i < b.length; i++) { System.out.print(b[i] + " "); }} } 【程序31】 题目:将一个组逆序输出。 import java.util.*; public class lianxi31 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int a[] = new int[20]; System.out.println("请输入多个正整(输入-1表示结束):"); int i=0,j; do{ a[i]=s.nextInt(); i++; }while (a[i-1]!=-1); System.out.println("你输入的组为:"); for( j=0; j<i-1; j++) { System.out.print(a[j]+" "); } System.out.println("\n组逆序输出为:"); for( j=i-2; j>=0; j=j-1) { System.out.print(a[j]+" "); } } } 【程序32】 题目:取一个a从右端开始的4~7位。 import java.util.*; public class lianxi32 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个7位以上的正整:"); long a = s.nextLong(); String ss = Long.toString(a); char[] ch = ss.toCharArray(); int j=ch.length; if (j<7){System.out.println("输入错误!");} else { System.out.println("截取从右端开始的4~7位是:"+ch[j-7]+ch[j-6]+ch[j-5]+ch[j-4]); } } } 【程序33】 题目:打印出杨辉三角形(要打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ………… public class lianxi33 { public static void main(String[] args) { int[][] a = new int[10][10]; for(int i=0; i<10; i++) { a[i][i] = 1; a[i][0] = 1; } for(int i=2; i<10; i++) { for(int j=1; j<i; j++) { a[i][j] = a[i-1][j-1] + a[i-1][j]; } } for(int i=0; i<10; i++) { for(int k=0; k<2*(10-i)-1; k++) { System.out.print(" "); } for(int j=0; j<=i; j++) { System.out.print(a[i][j] + " "); } System.out.println(); } }} 【程序34】 题目:输入3个数a,b,c,按大小顺序输出。 import java.util.Scanner; public class lianxi34 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入3个整:"); int a = s.nextInt(); int b = s.nextInt(); int c = s.nextInt(); if(a < b) { int t = a; a = b; b = t; } if(a < c) { int t = a; a = c; c = t; } if(b < c) { int t = b; b = c; c = t; } System.out.println("从大到小的顺序输出:"); System.out.println(a + " " + b + " " + c); }} 【程序35】 题目:输入组,最大的与第一个元素交换,最小的与最后一个元素交换,输出组。 import java.util.*; public class lianxi35 { public static void main(String[] args) { int N = 8; int[] a = new int [N]; Scanner s = new Scanner(System.in); int idx1 = 0, idx2 = 0; System.out.println("请输入8个整:"); for(int i=0; i<N; i++) { a[i] = s.nextInt(); } System.out.println("你输入的组为:"); for(int i=0; i<N; i++) { System.out.print(a[i] + " "); } int max =a[0], min = a[0]; for(int i=0; i<N; i++) { if(a[i] > max) { max = a[i]; idx1 = i; } if(a[i] < min) { min = a[i]; idx2 = i; } } if(idx1 != 0) { int temp = a[0]; a[0] = a[idx1]; a[idx1] = temp; } if(idx2 != N-1) { int temp = a[N-1]; a[N-1] = a[idx2]; a[idx2] = temp; } System.out.println("\n交换后的组为:"); for(int i=0; i<N; i++) { System.out.print(a[i] + " "); } }} 【程序36】 题目:有n个整,使其前面各顺序向后移m个位置,最后m个数变成最前面的m个数 import java.util.Scanner; public class lianxi36 { public static void main(String[] args) { int N =10; int[] a = new int[N]; Scanner s = new Scanner(System.in); System.out.println("请输入10个整:"); for(int i=0; i<N; i++) { a[i] = s.nextInt(); } System.out.print("你输入的组为:"); for(int i=0; i<N; i++) { System.out.print(a[i] + " "); } System.out.print("\n请输入向后移动的位:"); int m = s.nextInt(); int[] b = new int[m]; for(int i=0; i<m; i++) { b[i] = a[N-m+i]; } for(int i=N-1; i>=m; i--) { a[i] = a[i-m]; } for(int i=0; i<m; i++) { a[i] = b[i]; } System.out.print("位移后的组是:"); for(int i=0; i<N; i++) { System.out.print(a[i] + " "); } }} 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报(从1到3报),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 import java.util.Scanner; public class lianxi37 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入排成一圈的人:"); int n = s.nextInt(); boolean[] arr = new boolean[n]; for(int i=0; i<arr.length; i++) { arr[i] = true; } int leftCount = n; int countNum = 0; int index = 0; while(leftCount > 1) { if(arr[index] == true) { countNum ++; if(countNum == 3) { countNum =0; arr[index] = false; leftCount --; } } index ++; if(index == n) { index = 0; } } for(int i=0; i<n; i++) { if(arr[i] == true) { System.out.println("原排在第"+(i+1)+"位的人留下了。"); } } }} 【程序38】 题目:写一个一个字符串的长度,在main函数中输入字符串,并输出其长度。 /*……………… *……题目意思似乎不能用length()函 */ import java.util.*; public class lianxi38 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入一个字符串:"); String str = s.nextLine(); System.out.println("字符串的长度是:"+str.length()); } } 【程序39】 题目:编写一个,输入n为偶时,调用函1/2+1/4+...+1/n,当输入n为奇时,调用函1/1+1/3+...+1/n(利用指针函) //没有利用指针函 import java.util.*; public class lianxi39 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个正整 n= "); int n = s.nextInt(); System.out.println("相应列的和为:" + sum(n)); } public static double sum(int n) { double res = 0; if(n % 2 == 0) { for(int i=2; i<=n; i+=2) { res += (double)1 / i; } } else { for(int i=1; i<=n; i+=2) { res += (double)1 / i ; } } return res; } } 【程序40】 题目:字符串排序。 public class lianxi40 { public static void main(String[] args) { int N=5; String temp = null; String[] s = new String[N]; s[0] = "matter"; s[1] = "state"; s[2] = "solid"; s[3] = "liquid"; s[4] = "gas"; for(int i=0; i<N; i++) { for(int j=i+1; j<N; j++) { if(compare(s[i], s[j]) == false) { temp = s[i]; s[i] = s[j]; s[j] = temp; } } } for(int i=0; i<N; i++) { System.out.println(s[i]); } } static boolean compare(String s1, String s2) { boolean result = true; for(int i=0; i<s1.length() && i<s2.length(); i++) { if(s1.charAt(i) > s2.charAt(i)) { result = false; break; } else if(s1.charAt(i) <s2.charAt(i)) { result = true; break; } else { if(s1.length() < s2.length()) { result = true; } else { result = false; } } } return result; }} 【程序41】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? public class lianxi41 { public static void main (String[] args) { int i,m,j=0,k,count; for(i=4;i<10000;i+=4) { count=0; m=i; for(k=0;k<5;k++) { j=i/4*5+1; i=j; if(j%4==0) count++; else break; } i=m; if(count==4) {System.out.println("原有桃子 "+j+" 个"); break;} } } } 【程序42】 题目:809*??=800*??+9*??+1 其中??代表的两位,8*??的结果为两位,9*??的结果为3位??代表的两位,及809*??后的结果。 //题目错了!809x=800x+9x+1 这样的方程无解。去掉那个1就有解了。 public class lianxi42 { public static void main (String[] args) { int a=809,b,i; for(i=10;i<13;i++) {b=i*a ; if(8*i<100&&9*i>=100) System.out.println ("809*"+i+"="+"800*"+i+"+"+"9*"+i+"="+b);} }} 【程序43】 题目:0—7所能组成的奇个数。 //组成1位是4个。 //组成2位是7*4个。 //组成3位是7*8*4个。 //组成4位是7*8*8*4个。 //...... public class lianxi43 { public static void main (String[] args) { int sum=4; int j; System.out.println("组成1位是 "+sum+" 个"); sum=sum*7; System.out.println("组成2位是 "+sum+" 个"); for(j=3;j<=9;j++){ sum=sum*8; System.out.println("组成"+j+"位是 "+sum+" 个"); }}} 【程序44】 题目:一个总能表示为两个素之和。 //由于用除sqrt(n)的方法出的素不包括2和3, //因此在判断是否是素程序中人为添加了一个3。 import java.util.*; public class lianxi44 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n,i; do{ System.out.print("请输入一个大于等于6的偶:"); n = s.nextInt(); } while(n<6||n%2!=0); //判断输入是否是>=6偶,不是,重新输入 fun fc = new fun(); for(i=2;i<=n/2;i++){ if((fc.fun(i))==1&&(fc.fun(n-i)==1)) {int j=n-i; System.out.println(n+" = "+i+" + "+j); } //输出所有可能的素对 } } } class fun{ public int fun (int a) //判断是否是素的函 { int i,flag=0; if(a==3){flag=1;return(flag);} for(i=2;i<=Math.sqrt(a);i++){ if(a%i==0) {flag=0;break;} else flag=1;} return (flag) ;//不是素,返回0,是素,返回1 }} //解法二 import java.util.*; public class lianxi44 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n; do{ System.out.print("请输入一个大于等于6的偶:"); n = s.nextInt(); } while(n<6||n%2!=0); //判断输入是否是>=6偶,不是,重新输入 for(int i=3;i<=n/2;i+=2){ if(fun(i)&&fun(n-i)) { System.out.println(n+" = "+i+" + "+(n-i)); } //输出所有可能的素对 } } static boolean fun (int a){ //判断是否是素的函 boolean flag=false; if(a==3){flag=true;return(flag);} for(int i=2;i<=Math.sqrt(a);i++){ if(a%i==0) {flag=false;break;} else flag=true;} return (flag) ; }} 【程序45】 题目:判断一个能被几个9整除 //题目错了吧?能被9整除的就不是素了!所以改成整了。 import java.util.*; public class lianxi45 { public static void main (String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个:"); int num = s.nextInt(); int tmp = num; int count = 0; for(int i = 0 ; tmp%9 == 0 ;){ tmp = tmp/9; count ++; } System.out.println(num+" 能够被 "+count+" 个9整除。"); } } 【程序46】 题目:两个字符串连接程序 import java.util.*; public class lianxi46 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个字符串:"); String str1 = s.nextLine(); System.out.print("请再输入一个字符串:"); String str2 = s.nextLine(); String str = str1+str2; System.out.println("连接后的字符串是:"+str); } } 【程序47】 题目:读取7个数(1—50)的整,每读取一个,程序打印出该个数的*。 import java.util.*; public class lianxi47 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n=1,num; while(n<=7){ do{ System.out.print("请输入一个1--50之间的整:"); num= s.nextInt(); }while(num<1||num>50); for(int i=1;i<=num;i++) {System.out.print("*"); } System.out.println(); n ++; }}} 【程序48】 题目:某个公司采用公用电话传递据,据是四位的整,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余代替该数字,再将第一位和第四位交换,第二位和第三位交换。 import java.util.*; public class lianxi48 { public static void main(String args[]) { Scanner s = new Scanner(System.in); int num=0,temp; do{ System.out.print("请输入一个4位正整:"); num = s.nextInt(); }while (num<1000||num>9999); int a[]=new int[4]; a[0] = num/1000; //取千位的数字 a[1] = (num/100); //取百位的数字 a[2] = (num/10); //取十位的数字 a[3] = num; //取个位的数字 for(int j=0;j<4;j++) { a[j]+=5; a[j]%=10; } for(int j=0;j<=1;j++) { temp = a[j]; a[j] = a[3-j]; a[3-j] =temp; } System.out.print("加密后的数字为:"); for(int j=0;j<4;j++) System.out.print(a[j]); } } 【程序49】 题目:计算字符串中子串出现的次 import java.util.*; public class lianxi49 { public static void main(String args[]){ Scanner s = new Scanner(System.in); System.out.print("请输入字符串:"); String str1 = s.nextLine(); System.out.print("请输入子串:"); String str2 = s.nextLine(); int count=0; if(str1.equals("")||str2.equals("")) { System.out.println("你没有输入字符串或子串,无法比较!"); System.exit(0); } else { for(int i=0;i<=str1.length()-str2.length();i++) { if(str2.equals(str1.substring(i, str2.length()+i))) //这种比法有问题,会把"aaa"看成有2个"aa"子串。 count++; } System.out.println("子串在字符串中出现: "+count+" 次"); } }} 【程序50】 题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的据和计算出的平均分存放在磁盘文件 "stud "中。 public class lianxi50 { public static void main(String[] args){ Scanner ss = new Scanner(System.in); String [][] a = new String[5][6]; for(int i=1; i<6; i++) { System.out.print("请输入第"+i+"个学生的学号:"); a[i-1][0] = ss.nextLine(); System.out.print("请输入第"+i+"个学生的姓名:"); a[i-1][1] = ss.nextLine(); for(int j=1; j<4; j++) { System.out.print("请输入该学生的第"+j+"个成绩:"); a[i-1][j+1] = ss.nextLine(); } System.out.println("\n"); } //以下计算平均分 float avg; int sum; for(int i=0; i<5; i++) { sum=0; for(int j=2; j<5; j++) { sum=sum+ Integer.parseInt(a[i][j]); } avg= (float)sum/3; a[i][5]=String.valueOf(avg); } //以下写磁盘文件 String s1; try { File f = new File("C:\\stud"); if(f.exists()){ System.out.println("文件存在"); }else{ System.out.println("文件不存在,正在创建文件"); f.createNewFile();//不存在则创建 } BufferedWriter output = new BufferedWriter(new FileWriter(f)); for(int i=0; i<5; i++) { for(int j=0; j<6; j++) { s1=a[i][j]+"\r\n"; output.write(s1); } } output.close(); System.out.println("据已写入c盘文件stud中!"); } catch (Exception e) { e.printStackTrace(); } }} 第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大 public class A1 { public static void main(String [] args) { System.out.println(computeAge(8)); } public static int computeAge(int n) { if(n==1) return 10; return computeAge(n-1) + 2; } } public static void toBinary(int n,StringBuffer result) { if(n/2 != 0) toBinary(n/2,result); result.append(n%2); }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值