学习
清风彬
主动思考很重要!
展开
-
骆驼命名法——C++实现
题目描述从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:除首个单词以外,所有单词的首字母大写,例如“helloWorld”。请你帮可怜的程序员们自动转换变量名。输入描述:输入包含多组数据。每组数据一行,包含一个C语言风格的变量名。每个变量名长度不超过100。输出描述:对应每一组数据,输出变量名相应的骆驼命名法。输入hello_worldnice_to_mee原创 2021-03-18 20:39:21 · 817 阅读 · 0 评论 -
网络七层协议OSI
OSI网络七层协议(Open System Interconnection),简称OSI,是一个开放性的通行系统互连参考模型,OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。...原创 2021-02-03 00:05:05 · 333 阅读 · 1 评论 -
牛客网——素数
题目:输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。输入描述:输入有多组数据。每组一行,输入n。输出描述:输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。示例1输入100输出11 31 41 61 71代码如下:#include <iostream>using namespace s原创 2021-02-02 20:57:41 · 285 阅读 · 0 评论 -
牛客网——最难的问题
[编程题]最难的问题NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都是大写的。密码中的字母与原文中的字母对应关系如下。密码字母:A B C D E F G H I J K L M N O P Q R S T U V W原创 2021-01-31 18:30:51 · 315 阅读 · 0 评论 -
算法——猴子分桃
题目描述:老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。输入描述:输入包括多组原创 2021-01-29 00:03:21 · 535 阅读 · 1 评论 -
数组-奇数位上都是奇数或者偶数位上都是偶数(牛客网)
题目描述:给定一个长度不小于2的数组arr。 写一个函数调整arr,使arr中要么所有的偶数位上都是偶数,要么所有的奇数位上都是奇数上。 要求:如果数组长度为N,时间复杂度请达到O(N),额外空间复杂度请达到O(1),下标0,2,4,6…算作偶数位,下标1,3,5,7…算作奇数位,例如[1,2,3,4]调整为[2,1,4,3]即可程序代码如下:class Solution {public: /** * 奇数位上都是奇数或者偶数位上都是偶数 * 输入:数组arr,长度大原创 2021-01-28 23:34:07 · 379 阅读 · 1 评论 -
通常所说的“存储保护“的基本含义
通常所说的"存储保护"的基本含义是(C)。防止存储器硬件受损防止程序在内存丢失防止程序间相互越界访问防止程序被人偷看什么是存储保护:在采用虚拟存储技术的存储系统中,一个多任务的操作系统经常将多个不同的程序同时调入主存执行,因此,首先需要保证这些程序间不会相互覆盖,并且,一个程序不能访问其他程序的数据以及不是分配给他的主存区域。其次,一个程序出错不会破坏其他用户程序和系统程序。通过一些限制方式保护主存中程序的技术被称为存储保护。简单的说,存储保护就是对主存中的程序和数据进行保护。为了降低开原创 2021-01-28 20:17:02 · 12236 阅读 · 0 评论 -
关于c++的inline关键字,以下说法正确的是()
关于c++的inline关键字,以下说法正确的是()A:使用inline关键字的函数会被编译器在调用处展开B:头文件中可以包含inline函数的声明C:可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数D:定义在Class声明内的成员函数默认是inline函数E:优先使用Class声明内定义的inline函数F:优先使用Class实现的内inline函数的实现解析:A 项错误,因为使用 inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如原创 2020-11-24 17:02:59 · 2308 阅读 · 2 评论 -
C++——函数模板与类模板
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础.(模板——函数模板+类模板)函数模板:1.函数模板概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。2.函数模板格式:template<typename T1, typename T2,......,typename Tn>返回值类型 函数名(参数列表){}//以swap函数为例template<typename T> voi原创 2020-11-15 11:40:43 · 142 阅读 · 0 评论 -
C++——malloc/free和new/delete的区别
malloc/free和new/delete的区别malloc/free和new/delete共同点是:都是从堆上申请空间,并且需要用户手动释放。不同的地方是:1 malloc和free是函数,new和delete是操作符2. malloc申请的空间不会初始化,new可以初始化3. malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可。4. malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。5. malloc原创 2020-11-15 02:31:05 · 5942 阅读 · 1 评论 -
C++——内存管理
C++内存管理方式C语言中动态内存管理方式:malloc/calloc/realloc/freeC语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。new/delete操作内置类型:void Test (){ int* p1 = (int*) malloc(sizeof(int)); free(p1); // 1.malloc/calloc/realloc的区别是什么?原创 2020-11-15 02:26:41 · 111 阅读 · 0 评论 -
C++——友元介绍
友元介绍:友元分为:友元函数和友元类友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装。1.友元函数:友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。class Date{friend ostream& operator<<(ostream& _cout, const Date& d);friend istream& operator&g原创 2020-11-15 01:58:38 · 1399 阅读 · 0 评论 -
C++——this指针
this指针:C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变t量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。this指针是类“成员函数”第一个隐藏的参数,该指针时时刻刻指向调用函数的对象this指针的特点:this指针的类型:类 类型* const只能在“成员函数”的内部使用this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作原创 2020-11-15 01:44:12 · 362 阅读 · 0 评论 -
C++——类的引入
1.C语言和C++的区别:C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。3.类的定义class className{ // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注原创 2020-11-15 01:18:12 · 460 阅读 · 0 评论 -
C语言实现——通讯录!
实现一个通讯录;通讯录可以用来存储个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址。通讯录功能如下:1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信息6.清空所有联系人7.以名字排序所有联系人0.退出以上功能采用不同函数实现,为了使代码清晰明了,我采用多文件来完成!main.c...原创 2020-07-17 23:43:17 · 1563 阅读 · 0 评论 -
剖析数据在内存中的存储!
深度剖析数据在内存中的存储,从以下四个方面展开:数据类型的介绍整形在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储> 1. 数据类型的介绍C语言中九种基本数据类型:void 表示空类型(无类型)通常应用于函数的返回类型、函数的参数、指针类型。void不能定义变量,可以充当函数的返回值。而void既可以定义变量,也可以赋值,但void对应的变量不能被直接解引用。void*常用来接收任意类型的指针。> 2.整形在内存中的存储:原码、反码、补码原创 2020-06-17 01:08:13 · 212 阅读 · 0 评论 -
猜名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。(采用穷举+过滤的方法)#include <stdio.h>void game(){ int a = 1; for(; a<=5;a++){ int b = 1; for(;b<=5;b++){ int原创 2020-06-16 00:24:06 · 577 阅读 · 0 评论 -
猜凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。#include <stdio.h>char findkiller(){ char killer = 'a'; for (;killer<= 'd';killer++){ if(((killer!='a')+(killer=='c'原创 2020-06-16 00:20:01 · 377 阅读 · 0 评论 -
杨辉三角的打印!
杨辉三角的特点:各行的第一个数都是1各行的最后一个数都是1从第3行起,除上面指出的第一个数和最后一个数外,其余各数是上一行同列和前一列两个数之和。可以表示为:a[ i ][ j ] = a[ i-1 ][ j ] + a[ i-1 ][ j-1 ]代码如下:#include<stdio.h>void showyang(){ int arr[10][10]; int i = 0; int j = 0; for (; i<10;i++){ for(j=0;j<=原创 2020-06-16 00:16:35 · 169 阅读 · 0 评论 -
打印菱形!
#include<stdio.h>void show(int n){ //菱形上半部 int i = 0; for(; i < n; i++ ){ int j = 0; for(; j < n-1-i; j++){ printf(" "); } for(j=0; j < 2*i+1; j++){ printf("*"); } printf("\n"); } //菱形下半部 for(i = 0; i < n-1; i++)原创 2020-05-15 01:11:45 · 1332 阅读 · 0 评论 -
喝汽水空瓶兑换问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给n元,可以多少汽水(编程实现)#include<stdio.h>int main(){ int money = 0; int sum = 0; printf("请输入你有多少钱:"); scanf("%d", &money); sum = money * 2 - 1; printf("可以喝的汽水瓶数为:%d\n", sum); return 0;}举个例子:给20元,可以多少汽水?可以喝的汽共有20+10+5+2原创 2020-05-14 23:36:28 · 454 阅读 · 0 评论 -
求出0~100000之间的所有“水仙花数”并输出。
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一n位数,其各位数字的n次方和等于该数。比如:153 = 1^3 + 5^3 +3^3此程序要运用到math函数库的pow()函数#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int n; int a[10] = { 0 }原创 2020-05-11 01:29:18 · 1144 阅读 · 1 评论 -
计算求和(求Sn=a+aa+aaa+aaaa+aaaaa的前n项之和,其中a是一个数字)
#include<stdio.h>int main(){ int a, n; int sum = 0; int temp = 0; int i = 0; printf("所求数字a:"); scanf("%d",&a); printf("所求数字的前n项:"); scanf("%d",&n); for(;i < n;i++){ temp = temp * 10 + a; printf("%d+", temp); sum = sum + te原创 2020-05-10 23:56:32 · 1171 阅读 · 0 评论 -
写一个函数实现字符串逆序输出
#include<stdio.h>#include<string.h> void Reversestring(char *a){ char *start = a, *end = a+strlen(a)-1; while (start < end){ char temp = *start; *start = *end; *end = temp; start++; end--; }}int main(){ char arr[] = "ABCDEF"原创 2020-05-10 23:34:35 · 5310 阅读 · 6 评论 -
交换两个变量(不创建临时变量)
#include <stdio.h>int main(){ int a = 13; int b = 77; a = a^b; b = a^b; a = a^b; printf("a = %d\nb = %d\n", a, b); return 0;}原创 2020-05-06 01:11:59 · 192 阅读 · 0 评论 -
统计二进制中1的个数!
#include<stdio.h>int countOne(int num){ int count = 0; while (num) { if (num % 2 == 1)//模2可以得到最低位的数,如果模2的结果是1,则将count++ count++; num = num / 2;//除2可...原创 2020-05-06 01:05:28 · 261 阅读 · 0 评论 -
打印整数二进制的奇数位和偶数位!
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列:#include <stdio.h>int main(){ int i = 0; int num = 7; printf("奇数位:"); for (i = 31; i >= 1; i-=2) { printf("%d ", (num >> i) & 1); } pri...原创 2020-05-05 23:38:58 · 790 阅读 · 0 评论 -
求两个二进制数中不同位的个数
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?代码如下:#include<stdio.h>int main(){ int a = 0; int b = 0; int count = 0; printf("请输入a和b:\n"); scanf("%d%d", &a, &b); while (a != 0 || b != ...原创 2020-05-05 23:11:29 · 297 阅读 · 0 评论 -
C语言实现三子棋小游戏!!!
为了使我的三子棋小游戏代码看起来更加清晰,所以我采用了多文件形式将代码分开,分别是chess.h/main.c/chess.c这三个文件。首先是头文件chess.h用来存放头文件,宏定义和函数声明...原创 2020-05-05 18:40:23 · 736 阅读 · 0 评论 -
写一个函数打印数组内容!三种方式(指针/数组下标/数组地址)
1.函数打印arr数组的内容,使用指针:#include <stdio.h>void PrintArr(int arr[]){ int i = 0; int* p = arr; for (i = 0; i < 10; i++) { printf("%d ", *(p + i));//指针 }}int main(){ int arr[] = { 1, 2...原创 2020-05-05 16:59:12 · 1940 阅读 · 0 评论