- 博客(27)
- 收藏
- 关注
原创 声明一个shape抽象类,在此基础上派生出rectangle和circle类, 二者都有getarea()函数计算对象的面积,getperim()函数计算对象的周长。 填写答案
思路:思路很简单,在抽象类中定义纯虚函数,在派生类中进行初始化和函数重写,注意,我这里的π取的是3。再定义两个test函数,进行输出测试,这是一道简单的动态多态c++的问题。#include <iostream>using namespace std;/*声明一个shape抽象类,在此基础上派生出rectangle和circle类,二者都有getarea()函数计算对象的面积,getperim()函数计算对象的周长。填写答案*/class shape {public: vi
2021-06-03 10:59:27 4176
原创 建立一个矩阵类 Array,对二维数组中左下三角的全部元素(包括对角线上的元素)作如下变换:(1) 若该数不是素数则保持不变;(2)若该数是素数,则用大于它的最小素数替换该数。并统计二维数组中左下三角
一、问题描述建立一个矩阵类 Array,对二维数组中左下三角的全部元素(包括对角线上的元素)作如下变换:(1) 若该数不是素数则保持不变;(2)若该数是素数,则用大于它的最小素数替换该数。并统计二维数组中左下三角的全部元素(包括对角线上的元素)中的素数个数。要求如下:(1) 私有数据成员 int x[4][4];存储需要处理二维数组的各元素值。 int count;存储左下三角元素中素数的个数。(2) 公有成员函数 构造函数:进行初始化 x 数组和 count 的值。 int fun(
2021-05-15 13:53:20 2447 3
原创 八皇后问题解法
首先我们看下什么是八皇后问题,看下官方回答。{八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。}通俗的讲就是在8*8的棋盘上放8个棋子,使得不能有2个及其以上的棋子在同一行、同一列或者是同一条对角线上现在设计一个程序,输出全部的解法及其解的总数;#include <stdio.h>#include <st
2021-05-09 18:10:10 623
原创 定义一个类SIN,求sin(x)=x/1-x^3/3!+x^5/5!-x^7/7!+......(-1)^(n+1)*x^(2n-1)/(2n-1)!
如题#include <iostream>#include <cmath>using namespace std;class SIN {private: int x; int n;public: SIN(int x1, int n1) { x = x1; n = n1; } int power(int q){ int s = 1; int i = 1; for ( i ; i <= q; i++) { s = s * i;
2021-04-21 10:15:08 1099
原创 剑指 Offer 25. 合并两个排序的链表
题目描述:剑指 Offer 25. 合并两个排序的链表题目链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/solution/解题思路:引入伪头节点: 由于初始状态合并链表中无节点,因此循环第一轮时无法将节点添加到合并链表中。解决方案:初始化一个辅助节点 dum 作为合并链表的伪头节点,将各节点添加至 dum 之后。循环结束条件为l1或l2有一个为NULL,然后可以进行分别判断,合
2021-04-10 17:20:06 122
原创 19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/解题思路:思路比较简单,首先进行遍历,找出链表的长度,然后进行循环找到要删除节点的前驱,注意是前驱,然后基本操作head->next=head->next-<next。这里要注意两点。要对要删除元素是头结点的进行判断。还有free被删除节点。代码/** * Definition for singl
2021-04-10 16:04:09 81
原创 203. 移除链表元素
题目链接:https://leetcode-cn.com/problems/remove-linked-list-elements/题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。输入&&输出实例1输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]实例2输入:head = [], val = 1输出:[]示例 3:输入:
2021-04-09 20:49:38 74
原创 面试题 02.03. 删除中间节点
面试题 02.03. 删除中间节点https://leetcode-cn.com/problems/delete-middle-node-lcci/解题思路既然只能访问当前节点,那就只好出此下策了。杀不掉我,我就变成你,然后再干掉你,就等于杀死了自己。狸猫换太子,高。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * };
2021-04-09 18:15:47 84
转载 链表反转(双指针法和递归法)
如题目所示,链表的反转一般有两种方法可以参照LeetCode题目进行观看题目要求:反转一个链表 https://leetcode-cn.com/problems/reverse-linked-list/输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL1.双指针法思路:1. 定以结点 pre = null; cur = head;2.将head 后移 (head =
2021-04-08 20:17:11 538
原创 1、定义一个复数类Complex,使得下面的代码能够工作。 Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show();
一、问题描述1、定义一个复数类Complex,使得下面的代码能够工作。Complex c1(3,5);Complex c2=4.5;c1.add(c2);c1.show();#include <iostream>using namespace std;class Complex {public: Complex(float i, float j); Complex (float x); //函数重载 void add(Complex t); void sh
2021-04-07 22:31:05 3586
原创 编写一个名为CPU的类,描述一个CPU的以下信息:时钟频率,最大不会超过3000MHZ;字长,可以是32位或是64位;核数,可以是单核、双核或四核;是否支持超线程。各项信息要求使用位域来表示。通过输出
问题:2、编写一个名为CPU的类,描述一个CPU的以下信息:时钟频率,最大不会超过3000MHZ;字长,可以是32位或是64位;核数,可以是单核、双核或四核;是否支持超线程。各项信息要求使用位域来表示。通过输出sizeof(CPU)来观察该类所占的字节数。#include <iostream>using namespace std;class CPU {public: CPU(int i, int j, int m, bool n); //构造函数 void s
2021-04-07 22:27:52 2655
转载 约瑟夫问题(可插入人数和自定义间隔)
注意,下方的num-2表示的是要删除前的节点,哪有人要问了,为什么是num-2,而不是num-1,请注意,下方的i是从0开始循环的,而人在编号的时候,是从1开始的。采用循环链表实现,可指定间隔和总人数#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node * next;}*linklist;linklist Create_Circle(int n){ li
2021-04-05 14:44:29 112
原创 顺序栈
顺序栈#include "stdio.h" #include "stdlib.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设
2021-04-05 14:43:38 72
原创 单链表的创建、插入、删除、打印代码详解
单链表的创建、插入、删除、打印。代码详解#include <stdio.h>#include <stdlib.h>struct Student{ char cName[20]; //数字域 int iNumber; struct Student* pNext; //定义指针域};int iCount; //链表的长度,全局变量struct Student* Creat() //创建链表{ struct Student* pHea
2021-04-04 15:35:27 493
原创 1161 : 循环移动(指针专题)
题目描述:有n个整数,使前面各数顺序向后移动k个位置,移出的数再从开头移入。输出移动后的数组元素。题目没有告诉你n的范围,希望你读入n之后用malloc()函数动态申请内存空间,不要提前定义数组的大小。不要偷懒哦。另外要求定义并使用函数ringShift()void ringShift(int *a, int n, int k){//循环移动后的数值仍然存入数组a中}输入输入分3行,第一行是一个整数n,第二行是n个整数,用空格隔开。第三行是一个整数k。输出输出n个整数,由空格隔开。输出
2021-03-29 22:34:13 741
原创 3n+1猜想
3n+1猜想对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则将其变成n/2,在n<=10^9的情况下,n最终变成1。则输入一个数n,求变换的次数。#include <stdio.h>int main(){ int n,conut=0; //定义计时器为0 scanf_s("%d",&n); while(n>1) { if(n%2==1) n=3*n+1; else n/=2; count++; } printf(
2021-03-29 19:26:34 405
原创 7744问题
7744问题#include <stdio.h>#include<math.h>int main(){ for(int a=1;a<=9;a++) for(int b=0;b<=9;b++) { int n=a*1100+b*11; //这里开始使用n,因此这里定义n int m=floor(sqrt(n)+0.5); if(m*m=n) printf("%d\n",n); } return 0; }思路
2021-03-29 19:14:18 562
转载 值传递,指针传递,引用传递
值传递,指针传递,引用传递转载:https://www.cnblogs.com/yanlingyin/archive/2011/12/07/2278961.html转载:https://www.iteye.com/blog/xinklabi-653643值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参
2021-03-22 20:54:28 125
原创 使用指向运算符引用结构体对象成员
使用指向运算符引用结构体对象成员#include <stdio.h>#include <string.h>struct Student{ char cName[20]; int iNumber; char cSex; int iGrade;}student; //定义变量int main(){ struct Student* pStruct; // 定义结构体类型指针 pStruct = &student;
2021-03-22 20:06:24 398
原创 fabs函数, abs函数,labs函数
fabs函数//该函数的功能是返回浮点数的绝对值double fabs(double x);double fFloatRsult; // 定义实型变量double fNumble=-1234.0 //赋值fFloatRsult=fabs(fNumble);abs函数int abs(int i);int iNumber; //定义整数int iNumber=-12; //定义整数,为其赋值为-12iAbsoluteNumber=abs(iNumber); /
2021-03-22 18:38:13 486
原创 内部函数static
内部函数static#include <stdio.h>static int GetString(char* pString) //定义赋值函数{ return pString; //返回字符}static void ShowString(char* pString) //定义输出函数{ printf("%s\n", pString); //显示字符串}int main(){ char* pMyString; /
2021-03-22 18:35:39 142
原创 函数递归
函数递归C语言的函数都支持递归,也就是说每个函数都可以直接或间接的调用自己。所谓的间接调用,是指在递归函数的下层中再调用自己。递归之所以能够实现,是因为函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。这种机制是当代大多数程序设计语言实现子程序结构的基础,也使得递归成为可能。假定某个调用函数调用了一个被调用函数,再假定被调用函数又反过来调用了调用函数,那么第二个调用就称为调用函数的递归。因为它发生在调用函数的当前执行过程运行完毕之前。而且,因为原来的调
2021-03-22 18:34:05 99
原创 结构体数组
结构体数组#include <stdio.h>struct Student{ char cName[20]; int iNumber; char cSex; int iGrade;}student[5] = { {"WangJiaheng",12062212,'M',3}, {"YuLongjiao",12062213,'W',3}, {"JiangXuehuan",12062214,'W',3}, {"ZhangMeng",12062215,'W',3}, {"Ha
2021-03-22 18:32:09 79
原创 isalpha函数 isdigit函数 isalnum函数
isalpha函数 isdigit函数 isalnum函数isalpha函数的功能是检测字母,如果参数(ch)是字母表中的字母(大写或小写),则返回非零使用时候要包括头文件ctype.h函数定义为 int isalpha(int ch);isdigit函数的功能是检测数字,如果ch为数字,则函数返回值为非零,否则返回零。使用的时候要包括头文件ctype.h函数的定义为 int isdigit(int ch);isalnum函数的功能是检测字母或数字。如果参数是字母表中的一个
2021-03-22 18:30:09 1410
原创 指针作为函数参数
指针作为函数参数#include <stdio.h>#define N 4int main(){ void max(int(*a)[N], int m); int a[3][N], i, j; int(*p)[N]; p = &a[0]; printf("please input :\n"); for (i = 0; i < 3; i++) for (j = 0; j < N; j++) scanf_s("%d", &a
2021-03-22 18:28:40 108
原创 冒泡排序法(指针)
冒泡排序法(指针)#include <stdio.h>void order(int* p, int n){ int i, t,j; for(i=0;i<n-1;i++) for (j = 0; j < n - 1 - i; j++) if(*(p+j)>*(p+j+1)) { t = *(p + j); *(p + j) = *(p + j + 1); *(p + j + 1) = t; } printf("排序后的数组:\n
2021-03-22 18:26:54 1260
原创 折半排序法
折半排序法定义一个函数,用于对数组元素进行排序,函数的3个参数分别表示递归调用是数组最开始的元素,最后的元素的下标位置以及要排序的数组。声明两个整型变量。作为控制算法排序的条件,分别讲两个变量i和j,i表示左下标,j表示右下标。首先用do···while语句设计外部循环,条件为i<j。表示如果两边的下标交错就停止循环。内部的两个循环分别用来比较中间值两侧的数组元素,当左侧小于中间值的时候,去下一个元素和中间值比较,否则退出第一个内层循环,当右侧的数组大于中间值的时候,取前一个元素与中间值比较,否则退
2021-03-22 18:25:20 2126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人