- 博客(39)
- 收藏
- 关注
原创 接口的实现
题目:OK歌手打分程序设计一接口,为卡拉ok歌手打分。设计两种实现,实现两种打分方法:(1) 九个评委,以百分制打分,去掉一个最高分与一个最低分。计算出的平均分保留一位小数。(2) 九个评委,以百分制打分,计算出的平均分保留一位小数。(3) 九个评委,分段打分,级别为A+, A,B+,B,C+,C,D+,D去掉一个最高分与一个最低分。折算出的平均分为上述8个级别。分析:java的接口问题。本质就是一个接口实现三个不同打分实例。按照题目的要求设置对应的打分即可。前两种较为简单,第三种就通过字符和数
2022-05-18 16:58:55
222
原创 Father,Son,Grandson继承派生类
题目:设计一个父类Father,从Father派生出子类Son, 继续从Son派生出类Grandson. 用多种方式建立各类对象,最后统计出类族中建立的各类对象以及该类后代对象的数目分析:java类的继承派生问题。问题的本质就是求各类的构造函数各调用了多少次。但是这里求的是实际上创建的类对象数目,则用调用的构造函数计数的时候,父类实际创建的个数就等于父类构造函数调用的次数减去子类构造的次数。1.继承和派生的子类自动调用父类的构造函数2.计数变量,不可以设置成private,虽然变量会继承,也会随着构造
2022-05-18 16:47:14
462
原创 手动输入两个数组并求两个矩阵相乘
题目:java.输入两个矩阵,并求两个矩阵相乘所得到的矩阵分析:简单的java数组的应用题。1.注意手动输入矩阵的行列数和值,Java创建数组可以使用变量;2.不盲目直接进行计算,算法最先检查两个数组的行列数是否满足相乘条件,检验可行性;3.使用强化for循环import java.util.Scanner;public class CreatArry{ public static void main(String[] args){ Scanner reader = new Scanne
2022-05-18 16:35:32
327
原创 Java 检查字符 违禁品检查
编写一异常处理程序,模拟地铁、机场进行危险品与违禁物品检查。程序循环接受输入字符串,检查字符串。若其中含有’b’‘o’‘m’‘b’四个字母(字母顺序无关)就抛出发现危险品异常,提示有危险品炸弹;若其中含有’h’’e’’r’’o’’i’’n’六个字母则抛出发现违禁品异常。如果没有异常,程序循环接受输入字符串。题目分析,可以知道有两类异常,则需要两个异常类,一个检测方法包含这两个类的异常抛出,和一个总的测试类就可。这里我采用的检测方法是通过String类的indexof方法来查看是否包含。两个异常类pu
2022-05-09 19:22:30
1013
原创 字符串匹配问题
串匹配问题1.BF算法#include<iostream>using namespace std;void BF(char* S, char* T) { int loc = -1;//记录T串在S中的位置 int index = 0;//记录主串的比较位置 int i = 0, j = 0;//记录S和T当前的比较位置 while (S[i] != '\0' && T[j] != '\0') {//比较终止条件 if (S[i] == T[j]) {//相等
2022-04-27 16:30:30
113
原创 算法分析练习题1
算法分析练习题。//求一个数组中相隔最小的两个元素的最小差int getDiff(int* str, int n) { sort(str, str + n);//排序,则两两相邻必为间隔最小 int min = str[n - 1] - str[n - 2];//初始化最小差 for (int i = n - 2; i > 0; i--) {//遍历 if (min > str[i] - str[i - 1]) {//如果有更小的差,则更新min值 min = str[i]
2022-04-20 17:40:09
269
原创 蛮力法买小鸡
蛮力法解决买小鸡问题#include<iostream>using namespace std;//蛮力法百元买百鸡问题//公鸡5元,母鸡3元,小鸡1元三只,求100能买多少只int num = 0;//计数int money;//钱数int number;//鸡的总数//函数声明void Chicken(int,int);int Money();int Number();//主函数void main() { Chicken(Money(),Number())
2022-04-13 17:49:39
119
原创 数组的一些算法:查找+升序合并
算法课上数组相关的算法1.求数组最小值int MinArry(int* x, int n) {//求数组最小值 int min = x[0];//预设x[0]最小 for (int i = 0; i < n; i++) { if (x[i] < min) { min = x[i]; } } return min;}2.查找数组中某个数是否存在int SeqSearch(int* A, int n, int k) { int i;//下标 for (i = 0
2022-04-13 16:59:13
136
原创 Java组合类
题目:2.设计Circle,Rectangle,Geometry类,Circle类中有属性x,y, radius. Rectangle类中有左上顶点坐标(x,y),width,height. Geometry类将Circle,Rectangle类组合,设计getDistance函数返回圆与矩形中心间的距离。代码如下:circle.javapublic class Circle{//圆类 double x,y,radius;// Circle(){};//默认构造函数 Circle(double
2022-03-23 16:19:55
2689
原创 求数字X的所有因子
求数字X的所有因子#include<stdio.h>void fun(int x,int *p,int *n);int main(){ int i,x,sum=0; int Divisor[101]; printf("请输入整数x:"); scanf("%d",&x); fun(x,Divisor,&sum); printf("%d共有%d个因子:\n",x,sum); for(i=0;i<sum;i++){ printf("%d ",Div
2022-01-01 21:03:55
398
原创 九九乘法表的四种打印模式
九九乘法表的四种不同模型打印主要难点在于怎么调整使得数字对齐。解决方法:1.将每个式子之间的空隙拉大 2.因为式子所得结果是个位数和十位数的不同,将式子积为十位数中的空隙相应的减一。 则得到的就是对齐的九九乘法表#include<stdio.h>#include<string.h>#include<stdlib.h>void myprint1();void myprint2();void myprint3();void myprint4();int
2022-01-01 21:01:40
665
原创 求字符串左右循环移动所得到的的字符串
求字符串左右循环移动所得到的的字符串#include<stdio.h>#include<stdlib.h>#include<string.h>char *shift(char *pstr,int n, char mode);int main(){ char str[100]; char mode; int n; printf("请输入字符串:\n"); gets(str); printf("请输入移动方向(R or L)和移动位数:\n");
2022-01-01 20:56:37
444
原创 求自恋性数
求1000以内的自恋性数自恋数:n为数字,组成该数字的各个数字的n次方之和相加等于它本身,则为自恋数有bug: 用queue存储时,虽然算法相同,但是缺少370这个数字。#include<queue>#include<bits/stdc++.h>using namespace std; //连续奇数和 /*int main(){ queue<int>q; int j,a,sum; for(int i=1;i<1000;i++){ j
2022-01-01 20:30:35
781
原创 递归实现字符串的反向输出
用递归的方法实现字符串的反向输出思想:一直递归到字符串数组的末尾在开始一层一层返回输出即可。#include<stdio.h>void reverse(char *str);int main(){ char str[101]; printf("请输入字符串str:\n"); gets(str); printf("反向输出的字符串str为:\n"); reverse(str); return 0;}void reverse(char *str){ if(*str!='
2022-01-01 20:13:07
2929
2
原创 求一个数的数字之和
求一个数字的各个数字的和方法:用递归依次将各个位置上的数取出相加#include<stdio.h>#include<stdlib.h>int DigitSum(int n); int main(){ int num,sum=0; printf("请输入一个非负整数:\n"); scanf("%d",&num); if(num<0){ printf("输入错误!"); exit(-1); } sum=DigitSum(num); p
2022-01-01 20:10:09
557
原创 求二维数组的鞍点
求二维数组的鞍点。鞍点:该一行的最大数同时又是该列的最小数。#include<stdio.h>int main(){ int n,m; printf("二维数组的行数n:");scanf("%d",&n); printf("二维数组的列数m:");scanf("%d",&m); int a[n][m]; int max,min; int max_j,min_i; int i,j,k; int c=0; puts("请输入二维数组:"); for(i=0
2022-01-01 20:06:01
445
原创 重载函数举例
重载加法函数,实现不同类型的数据加法#include<iostream>using namespace std;class Computer { public: /*int add(int x,int y){//值传递 cout<<"add(int x,int y)called."<<endl; return x+y; } float add(float x,float y){ cout<<"add(float x,f
2022-01-01 19:47:25
1288
原创 文件操作举例
#include<iostream>#include<fstream>#include<stdlib.h>#include<string.h>#include<vector>#define MAX 50#define MAXN 20using namespace std;typedef struct{ char word[MAXN]; char explain[MAX];}Word;vector<Word>.
2021-12-26 12:32:35
317
原创 异常处理举例
在这里插入代码片//题目://循环检测, 依次含有b\o\m\b则 抛出异常 为危险品 含有o\p\i\u\m 则抛出异常 为违禁品, 无则提示通过检测#include<string.h>#include<iostream>using namespace std;#define MAX 20#define MAXN 1000000bool Isdanger(char *str);bool Islimit(char *str);int Findchar(cha
2021-12-26 12:29:36
322
原创 类的应用例子
在这里插入代码片//类person派生出 类person派生出派生类teacher和student,//student派生出类graduate和undergraduate, //用各种方式建立各个类的对象,统计各类族中各类对象的个数,并显示。#include<iostream>using namespace std;#include<string.h>class person{ private: /*int static coutper; /*ch
2021-12-26 12:27:42
442
原创 类——日期类
定义一个Data类,定义Newday函数来实现增加一天的操作。考点:在于分清是否为闰年,不同月份的天数。相对简单。#include<iostream>using namespace std;class Data{ private: int y,m,d;//年,月,日 public: Data(){//自定义默认函数 } Data(Data &D){//拷贝函数 ; } Data(int y=0,int m=0,int d=0){//带参数
2021-11-12 22:59:15
248
原创 类的继承和派生——求圆柱表面积
利用基类、派生类编写一个程序计算Point类、Circle类派生所得Cylinder类的表面积。#include<iostream>using namespace std;#define PI 3.14 class Point{//定义Point类 private: int X,Y;//坐标 public: Point(int X=0,int Y=0){//带参数构造函数 this->X=X; this->Y=Y; } void Sh
2021-11-12 17:33:30
867
原创 友元类 求线段长度
定义Point类和Line类,其中Line类是Point类的友元类,包含两个Point对象,分别表示起点和终点,根据程序框架补充必要的函数,并实现Line的len函数,计算线段的长度。PS:结果可读性没有到位,后期可以加显示线段的起点终点,再求长度。#include<iostream>using namespace std;#include<math.h>class Line;//提前声明Line类存在 class Point{//定义Point类 private:
2021-11-12 17:19:57
571
原创 复数类加法计算
定义一个复数类,并实现其必要的构造函数、显示函数,实现加减乘除其中一个运算。#include<iostream>using namespace std;class Complex{//复数类定义 private: double r;//实部 double i;//虚部 public: Complex(){//自定义默认构造 函数 ; } Complex(double r,double i){//带参数构造函数 this->r=r; th
2021-11-12 14:44:24
619
原创 插入排序 和 选择排序
插入排序 和 选择排序前段时间码了冒泡排序和选择排序,今天来捋一捋插入排序和选择排序。1.区别插入排序:通过插入的方法,对无序序列进行排序。昂前段时间因为理解不到位,写着写着愣是把插入排序写成了选择排序…-||-研究了一波在我的肤浅想法里,其实,插入排序和选择排序的差别是:首先,插入排序选定当前排序位置后,是和前面的有序列(有序列就是前面已经排好序的)进行比较排序;而选择排序呢是当前排序位置和后面的无序列(就是剩下的还没有排序的)进行排序比较的。其次,插入排序是前面有序列两两进行位置交换,而选择
2021-07-14 16:25:39
5056
原创 输出三个整数之间两个数的最大和
多次判断? 三目?1.题目:There are three cards on the desk, each with a positive integer written on it. The integers on the cards areA, B, and C.You have chosen two cards and picked them up.Find the maximum possible sum of the integers written on the picked card
2021-07-14 14:10:01
1169
原创 RED AND BLACK DFS和BFS
RED AND BLACK1.题目:There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can’t move on red tiles, he can move onl
2021-07-14 11:11:41
153
原创 BFS走迷宫
又来走迷宫了上次用了DFS来走迷宫,嘻嘻今天学了BFS也来走一遍。1.题目一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。Input第1行是测试数据的组数k,后面
2021-07-13 17:06:23
288
原创 DFS全排列
全排列问题1.题目对于数组[1, 2, 3],他们按照从小到大的全排列是1 2 31 3 22 1 32 3 13 1 23 2 1现在给你一个正整数n,n小于8,输出数组[1, 2, …,n]的从小到大的全排列。2.思考将每个数字看成一个节点,那么排列顺序即是节点之间的连线关系。实际上因为每个数都可以在任意位置,也就是说每个两点都有机会相邻摆放,等价于两两节点之间都相连,即整个问题的模型相当于一个无向完全图。策略: 从第一个点开始,进行dfs搜索。遇到没标记的点则前进,遇到已标记
2021-07-13 11:27:56
368
原创 DFS求分配互质数组组数
分配互质组1.题目输入N,和N个整数,求将这N个整数分成两两互质的组所需的组数。2.思考:两个数之间最大公约数为1即为互质。那么,将数字当成节点,关系当成连接两个节点之间的边,将问题抽象成图。即如果两个数互质,那么对应两个节点有边相连。所以,按照顺序用dfs策略,判断考虑每一个数应该放到哪个组,可进入哪个组,相当于判断哪些节点相连,可走哪条路。比如:设定组1为{2},组2为{3},那么数字4有三种选择,进入组1,进入组2,或者新建组3。则随机选择,进入组1发现组1数字2和数字4不互质,所以不可行
2021-07-13 11:14:40
278
原创 DFS走迷宫歪
DFS走迷宫问题1. 题目一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。Input第1行是测试数据的组数k,后面跟着k组输入。每组测试数据的第1行是一个正整数n (1
2021-07-13 10:41:09
162
原创 DFS深度优先搜索
DFS特点:随机选路,不撞南墙不回头。策略定义:从起点出发,走过的节点都做标记,只要发现没走过的节点就随意挑选一个往前,如果走不了就回退到上一节点,重新选择前进。特点:只有一条线路。存图方法:1.邻接矩阵用一个二维数组存放,g [i] [j] 表示 点 i 和 j 的情况(是否有边 ,长度大小等)特点:适合节点少的, n个节点,复杂度为o (n ^ 2)2.邻接表每个节点V对应一个一维动态数组 vecter ,存放从v 连出去的边,边的信息 (有时包括另一点的信息)特点:适合节点多的,属
2021-07-12 11:35:58
203
原创 选择排序 c语言
选择排序1. 定义选择排序(升序)想法:两重循环,第一个循环中,每一次循环将当前元素标记为最小值,通过第二个循环遍历未排序的剩余元素,如果有小于当前最小值,则进行交换。即每一交换都能将剩余的最小值排到前排相应位置,循环n-1次排好。2. c代码#include<stdio.h>void xuanze(int *,int);int main(){ int a[100];//定义一个足够大的数组 int len,i; scanf("%d",&len);//输入的数目
2021-07-09 23:55:24
370
4
原创 冒泡排序ooo
冒泡排序1. 定义冒泡排序是一种稳定排序。平均时间复杂度为O(n ^2),最好为O(n),最坏为O(n^2)。每次排序(升序,n个元素)时,比较当前元素和后一个元素的大小,然后判断是否进行交换,,每轮结束后都能把最大的数移到队尾。循环进行n-1次直至排序完全排好,即为冒泡排序。又因为,经过i次排序,已经排好了i个较大的元素,所以在剩下的排序中,每次排序都只进行n-i-1次。2. c代码#include<stdio.h>void maopao(int *,int);int mai
2021-07-09 23:01:59
132
原创 求x的偶数因子
编写函数void fun(int x, int *p, int *n),它的功能是:求出x的偶数因子,并按从小到大的顺序放在p所指向的数组中,这些因子的个数通过形参n返回(假设p指向足够大的空间)。如,若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24****(小白捞文)*不足请指出#include<stdio.h>void fun(int x,int *p,int *n);int main(){ int i,x,sum=0;//sum存放因子个数 int .
2021-05-28 09:16:59
1201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人