曾经做过的40道程序设计课后习题总结(三)
曾经做过的40道程序设计课后习题总结(三)
课后习题目录
1 斐波那契数列 2 判断素数 3 水仙花数 4 分解质因数 5 杨辉三角 6 学习成绩查询 7 求最大公约数与最小公倍数 8 完全平方数 9 统计字母、空格、数字和其它字符个数 10 求主对角线之和 11 完数求解 12 求s=a+aa+aaa+aaaa+aa...a的值 13 高度计算 14 乘法口诀 15 无重复三位数 16 菱形打印 17 利润计算 18 第几天判断 19 从小到大输出数列 20 猴子吃桃问题 21 乒乓球比赛 22 求分数之和 23 求阶乘的和 24 递归求法 25 求不多于5的正整数 26 回文判断 27 星期判断 28 插数入数组 29 取整数的任意位 30 按顺序输出数列 31 位置替换 32 字符串排序 33 贷款器 34 通讯录排序 35 闰年判断 36 二元方程求解 37 密码解译 38 DVD查询 39 电子日历 40 万年历
21 乒乓球比赛
21.1 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 21.2 源程序
public class Compete {
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]);
}
}
}
}
21.3 运行结果:
a vs z
b vs x
c vs y
22 求分数之和
22.1 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
22.2 源程序
import java.text.DecimalFormat;
public class FenShu {
public static void main(String[] args) {
int x = 2, y = 1, t;
double sum = 0;
DecimalFormat df = new DecimalFormat("#0.0000");
for (int i = 1; i <= 20; i++) {
sum += (double) x / y;
t = y;
y = x;
x = y + t;
System.out.println("第 " + i + " 次相加,和是 " + df.format(sum));
}
}
}
22.3 运行结果:
第 1 次相加,和是 2.0000
第 2 次相加,和是 3.5000
第 3 次相加,和是 5.1667
第 4 次相加,和是 6.7667
第 5 次相加,和是 8.3917
第 6 次相加,和是 10.0071
第 7 次相加,和是 11.6261
第 8 次相加,和是 13.2437
第 9 次相加,和是 14.8619
第 10 次相加,和是 16.4799
第 11 次相加,和是 18.0980
第 12 次相加,和是 19.7160
第 13 次相加,和是 21.3340
第 14 次相加,和是 22.9521
第 15 次相加,和是 24.5701
第 16 次相加,和是 26.1881
第 17 次相加,和是 27.8062
第 18 次相加,和是 29.4242
第 19 次相加,和是 31.0422
第 20 次相加,和是 32.6603
23 求阶乘的和
23.1题目:求1+2!+3!+...+20!的和 23.2 源程序
public class JieCheng {
static long sum = 0;
static long fac = 0;
public static void main(String[] args) {
long sum = 0;
long fac = 1;
for (int i = 1; i <= 10; i++) {
fac = fac * i;
sum += fac;
}
System.out.println(sum);
}
}
23.3 运行结果:
4037913
24 递归求法
24.1题目:利用递归方法求5!。 24.2 源程序
import java.util.Scanner;
public class DiGui {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
DiGui tfr = new DiGui();
System.out.println(tfr.recursion(n));
}
public long recursion(int n) {
long value = 0;
if (n == 1 || n == 0) {
value = 1;
} else if (n > 1) {
value = n * recursion(n - 1);
}
return value;
}
}
24.3 运行结果:
12
479001600
24.4 源程序揭秘
递归公式:fn = (fn-1)+(fn-2)。
25 求不多于5的正整数
25.1题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
25.2 源程序
import java.util.Scanner;
public class ZhZhShu {
public static void main(String[] args) {
ZhZhShu tn = new ZhZhShu();
Scanner s = new Scanner(System.in);
long a = s.nextLong();
if (a < 0 || a > 100000) {
System.out.println("Error Input, please run this program Again");
System.exit(0);
}
if (a >= 0 && a <= 9) {
System.out.println(a + "是一位数");
System.out.println("按逆序输出是" + 'n' + a);
} else if (a >= 10 && a <= 99) {
System.out.println(a + "是二位数");
System.out.println("按逆序输出是");
tn.converse(a);
} else if (a >= 100 && a <= 999) {
System.out.println(a + "是三位数");
System.out.println("按逆序输出是");
tn.converse(a);
} else if (a >= 1000 && a <= 9999) {
System.out.println(a + "是四位数");
System.out.println("按逆序输出是");
tn.converse(a);
} else if (a >= 10000 && a <= 99999) {
System.out.println(a + "是五位数");
System.out.println("按逆序输出是");
tn.converse(a);
}
}
public void converse(long l) {
String s = Long.toString(l);
char[] ch = s.toCharArray();
for (int i = ch.length - 1; i >= 0; i--) {
System.out.print(ch[i]);
}
}
}
25.3 运行结果:
67
67是二位数
按逆序输出是
76
26 回文判断
26.1 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 26.2 源程序
import java.util.Scanner;
public class HuiWen {
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();
boolean is = true;
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.3 运行结果:
请输入一个正整数:12345654321
这是一个回文数
27 星期判断
27.1题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 27.2 源程序
import java.util.Scanner;
public class XingQi {
Scanner s = new Scanner(System.in);
public static void main(String[] args) {
XingQi tw = new XingQi();
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("please input the second letter!");
char ch2 = tw.getChar();
if (ch2 == 'U') {
System.out.println("Tuesday");
} else if (ch2 == 'H') {
System.out.println("Thursday");
}
}
;
break;
case 'S': {
System.out.println("please input the scecond letter!");
char ch2 = tw.getChar();
if (ch2 == 'U') {
System.out.println("Sunday");
} else if (ch2 == 'A') {
System.out.println("Saturday");
}
}
;
break;
}
}
public char getChar() {
String str = s.nextLine();
char ch = str.charAt(0);
if (ch < 'A' || ch > 'Z') {
System.out.println("Input error, please input a capital letter");
getChar();
}
return ch;
}
}
27.3 运行结果:
Monday
Monday
28 插数入数组
28.1题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
28.2 源程序
import java.util.Scanner;
public class ChaRu {
public static void main(String[] args) {
int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int[] b = new int[a.length + 1];
int t1 = 0, t2 = 0;
int i = 0;
Scanner s = new Scanner(System.in);
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] + " ");
}
}
}
28.3 运行结果:
3
1 2 3 3 4 5 6 7
28.4 源程序揭秘
定义两个数组a,b,一个a的长度比另一个b大1,a看做是已经排好序的。接下来的过程是
如果num 比最后一个数大,把num赋值给数组b的最后一个数再按顺序把a 的每个元素赋给b
否则(num 不比a 的最后一个数大),如果a 的元素比num 小,则将这些元素按顺序赋给b,将num 赋给比num大的b数组的元素,跳出第一个for循环。
定义一个循环控制变量,从num传给数组后num的下标值加一开始;直到b的结尾,将剩下的a 的值赋给b,赋值的过程是b[j] = a[i-1]。
29 取整数的任意位
29.1题目:取一个整数a从右端开始的4~7位。 29.2 源程序
import java.util.Scanner;
public class QuWei {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean is = true;
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]);
}
}
}
29.3 运行结果:
请输入一个7位以上的正整数:123456789
截取从右端开始的4~7位是:3456
29.4 源程序揭秘
先使a右移4位;设置一个低4位全为1,其余全为0的数。可用~(~0 < <4);将上面二者进行&运算。
30 按顺序输出数列
30.1题目:输入3个数a,b,c,按大小顺序输出
30.2 源程序
import java.util.Scanner;
public class ShunXu {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
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);
}
}
30.3 运行结果:
34 23 89
从大到小的顺序输出:
89 34 23
由于博客字数限制,40道程序设计课后习题总结将分4篇帖子进行总结,后面3篇帖子后面会一一贴出,或者可以在自己的博客下载已经总结完的全文 http://my.oschina.net/mkh/blog/340689,里面有全面详细的总结。
- thinkcmf安装教程与目录结构详解 快速上手版
- finecms如何批量替换文章中的关键词?
- dedecms批量修改文章为待审核稿件怎么操作
- 群体智能算法-黏菌寻找食物最优路线行为模拟
- finecms设置伪静态后分享到微信不能访问怎么处理
- composer安装其实可以很简单 两行命令就解决了
- 章神的私房菜之数据预处理
- 如何调用finecms指定栏目的描述关键词
- finecms栏目文章页seo设置
- Logistic回归实战篇之预测病马死亡率(一)
- DedeCMS后台500错误一种原因是不支持PHP5.3、5.4及以上版本
- finecms指定从第几篇文章开始调用5条记录,并调用文章所在栏目
- finecms如何调用多个栏目的子栏目
- 从傅立叶变换到Gabor滤波器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 看完这篇并发后,又能扯皮了?
- Twitter美国航空公司情绪数据集的监督或半监督ULMFit模型
- 一文帮你理解整个 SRE 运维体系!
- 拆解式解读如何用飞桨复现胶囊神经网络(Capsule Network)
- 我用飞桨Parakeet合成小姐姐声音帮我“读”论文
- 【5分钟玩转Lighthouse】搭建WordPress博客
- vue接入腾讯地图(一)【点击事件】
- Redis文件事件&时间事件处理机制
- Redis持久化策略
- Redis二进制安全的原理
- 面试必备 Vue 知识点
- 数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试
- CPU有个禁区,内核权限也无法进入!
- 分布式 | DBLE 3.20.07.0 来啦!
- C语言三剑客之《C陷阱与缺陷》一书精华提炼