char

PTA数组 查找指定字符

怎甘沉沦 提交于 2020-03-31 10:10:28
#include<stdio.h> #include<string.h> void search(char strSource[],char c)//查找这样的字符和输出功能 { int i=0; int indexPos=-1;//记录位置,-1代表不是正常位置,找的时候如果找到了正常位置就变更为1 while(strSource[i]!='\0')//找到‘\0’结束 { //当前字符是不是我们要找的字符 if(c==strSource[i]) { indexPos=i;//要找到最大的,所以不能break } i++; } //判断这样的字符存在不存在 if(indexPos==-1) { printf("Not Found\n"); }else{ printf("index = %d\n",indexPos); } } int main() { char c; char strSource[81];//不超过80个字符,是不含\0,所以最长是81个字符 c=getchar(); getchar(); gets(strSource);//输入字符到数组里,并且会自动给它加\0 search(strSource,c); return 0; } 来源: https://www.cnblogs.com/jiangzenghui/p/12603111.html

C语言结构体

Deadly 提交于 2020-03-31 08:06:43
1. 引入 问题域:跟问题本身相关的一些因素,元素,条件等这些 分析问题,需求,目标 算法思路 解决方案域: 与具体的解决问题的方式,方法相关的一些因素,条件 数学 = 》数学方法(公式,方程) C 语言 = 》算法模型、存储类型、语法 ... 问题域 = 》解决方案域 要把问题域里面的因素 = 》解决方案域的因素 “人” 在解决方案域用什么描述 建模 :来描述问题 现实世界物体需要抽象成计算机语言中数据类型 学生: 学号 =>int 姓名 =>char[] 性别 =>char/int 年龄 =>int 地址 =>char[] ... => 这些物体的属性组合到一个数据类型中 C 语言中允许程序员定义自己的组合类型 结构体 联合体 / 共用体 枚举 2. 结构体 : 自定义的一种组合数据类型 2.1 定义 struct 结构体名 { 成员类型 1 成员名 1; 成员类型 2 成员名 2; 成员类型 3 成员名 3; .... }; 结构体名 :符合 C 语言中标识符的规定 struct 结构体名 =>( 你定义的 ) 新类型的名字 成员类型 :C 语言任意合法的数据类型都可以 成员名 : 符合 C 语言中标识符的规定 eg: struct student { int num; char name[32]; char sex; int age; char addr[32]; }; =

Oracle学习时关于SQL语言的总结

情到浓时终转凉″ 提交于 2020-03-31 04:10:21
1、查询dept表的结构 在命令窗口输入:desc dept; 2、检索dept表中的所有列信息 select * from dept 3、检索emp表中的员工姓名、月收入及部门编号 select ename "员工姓名",sal "月收入",empno "部门编号" from emp 4、检索emp表中员工姓名、及雇佣时间 日期数据的默认显示格式为“DD-MM-YY",如果希望使用其他显示格式(YYYY-MM-DD),那么必须使用TO_CHAR函数进行转换。 select ename "员工姓名", hiredate "雇用时间1",to_char(hiredate,'YYYY-MM-DD') "雇用时间2" from emp 注意:第一个时间是日期类型的,在Oracle的查询界面它的旁边带有一个日历。第二个时间是字符型的。不要将YYYY-MM-DD使用双引号 5、使用distinct去掉重复行。 检索emp表中的部门编号及工种,并去掉重复行。 select distinct deptno "部门编号",job "工种" from emp order by deptno 6、使用表达式来显示列 检索emp表中的员工姓名及全年的月收入 select ename "员工姓名", (sal+nvl(comm,0))*12 "全年收入" from emp 注意:防止提成comm为空的操作

C语言数据类型

落爺英雄遲暮 提交于 2020-03-30 21:31:00
1.无符号类型不能表示负值。 2.2.1整型   整形包括短整型、整形和长整形。 2.1.1短整形   short a=1; 2.1.2整形   一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647, 在内存中的存储顺序是地位在前、高位在后,例如0x12345678在内存中的存储如下:   地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b   数据:  78      56        34      12   定义:用int关键字,举例如下:   int a=6; 2.1.3长整形   long a=10; 2.2浮点型   浮点型包括单精度型和双精度型。 2.2.1单精度型   浮点型,又称实型,也称单精度。一般占4个字节(32位),   float a=4.5;   地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b   数据:  00      00        90      40 2.2.2双精度型   一般占8个字节(64位)   double a=4.5;   地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b  0x0012ff7c 

星号的秘密

北慕城南 提交于 2020-03-30 17:20:42
1 、乘法运算符 2 、定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int的指针型),相比而言,前面一种定义似乎是定义了*P这个奇怪的东西。但是后面一种写法会带来一个容易产生的误解: int* p1, p2; 这儿给人的感觉似乎是定义了两个指针型变量p1和p2,但是,事实上,这种直觉是错误的,正确的理解方式是int *p1, p2;即p1是指针型的,而p2确是整型的。 在MS VC++ 6.0中,是按照后面一种格式写的。 3 、何谓指针? 指针仅仅表示一个内存中的某个地址? 非也,注意到,我们在定义指针的时候,都关联了一个类型,如int,char,或者是string等等,如果说指针仅仅表示一个内存中的地址,那何必要关联这么多变化的东西呢?完全可以DWORD p=0;这样解决问题。 关联了的数据类型是作何用的呢? 它可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。如 int *p; 编译器可以从这个定义中获得信息:1、p指向的内存存放的是整型数据,2、由于该内存区域只存放了一个数据,跨越的内存区域为4个字节,即p+1的效果是跳过了四个字节。 另一个复杂一点的例子,如 struct a {int x1; short x2; a *next; } 定义指针 a

C++星号的含义

爷,独闯天下 提交于 2020-03-30 17:03:04
1 、乘法运算符 2 、定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int的指针型),相比而言,前面一种定义似乎是定义了*P这个奇怪的东西。但是后面一种写法会带来一个容易产生的误解: int* p1, p2; 这儿给人的感觉似乎是定义了两个指针型变量p1和p2,但是,事实上,这种直觉是错误的,正确的理解方式是int *p1, p2;即p1是指针型的,而p2确是整型的。 在MS VC++ 6.0中,是按照后面一种格式写的。 3 、何谓指针? 指针仅仅表示一个内存中的某个地址? 非也,注意到,我们在定义指针的时候,都关联了一个类型,如int,char,或者是string等等,如果说指针仅仅表示一个内存中的地址,那何必要关联这么多变化的东西呢?完全可以DWORD p=0;这样解决问题。 关联了的数据类型是作何用的呢? 它可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。如 int *p; 编译器可以从这个定义中获得信息:1、p指向的内存存放的是整型数据,2、由于该内存区域只存放了一个数据,跨越的内存区域为4个字节,即p+1的效果是跳过了四个字节。 另一个复杂一点的例子,如 struct a {int x1; short x2; a *next; } 定义指针 a

数组指针和指针数组的区别

别说谁变了你拦得住时间么 提交于 2020-03-30 14:25:57
数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][] 所以数组指针也称指向一维数组的指针,亦称行指针。 指针数组 定义 int *p[n]; []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。 如要将二维数组赋给一指针数组: int *p[3]; int a[3][4]; p++; //该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针 for(i=0;i<3;i++) p[i]=a

POJ3461 Oulipo KMP算法

前提是你 提交于 2020-03-30 13:05:38
这个算法去年的这个时候就已经听过了,看毛片算法哈哈..不过理解它确实花了我很久的时间..以致于我一直很排斥字符串的学习,因为总觉得太难了,但是有些硬骨头还是要啃的,这个寒假就啃啃字符串还有一些别的东西吧,KMP的学习我看了好多好多博客才有那么些头绪,复杂度的分析更是无从谈起,不过线性匹配这样的算法实在太流弊了.~题目是水题,但也算是我的第一道KMP吧.~ #include<iostream> #include<cstring> #include<string> #include<cstdio> #include<algorithm> #include<queue> using namespace std; #define mxt 1000005 #define mxp 10005 #define inf 0x3f3f3f3f int f[mxp+50]; char T[mxt+50]; char P[mxp+50]; void getFail(const char *P,int *f) { int m=strlen(P); f[0]=f[1]=0; for(int i=1;i<m;++i){ int j=f[i]; while(j&&P[i]!=P[j]) j=f[j]; f[i+1]= P[i]==P[j]? j+1:0; } } int KMP(const char *P

C++ —— 类的基础

别来无恙 提交于 2020-03-30 05:56:03
C++类的设计与基础 2015.9.11 1、变量和常量的命名:确定程序中的变量、常量、函数的名字都是具有描述性的名字,具有直接的意义。如numberOfStudent 比 numOfStuds好。 2、类名:当自定义一个类时,应该将类名中的每一个单词的首字母大写。例如Circle、Rectangle等都是好的类名。C++库中的类名都是小写形式。这样易于区分这两种不同的类。对象的命名可参照变量。 3、Circle circle1() 是错误的。正确如下:   Circle circle1;   Circle cirlce2(3); 4、circle1 = Circle(); //这句 使用无参构造函数创建一个对象,然后浅复制给circle1. 5、匿名对象:对象只使用一次可以用匿名对象,如 circle().getArea 、circle(3).getArea. 6、C++库中的 string 类常用方法:【深入学习string: http://www.cnblogs.com/aduck/articles/2246168.html 】 +string()   +string(value:string)   +string(value:char[])   +string(ch:char, n:int)   +append(s:string)   +append(s:string,

Tiny4412之重力感应器驱动

冷暖自知 提交于 2020-03-30 02:07:17
一:Tiny4412 裸板重力感应驱动编写   整个编写过程大概分为如下几步:   (1)在底板上找到重力感应器的所在位置,找到芯片型号(我用的板子上重力感应器芯片型号为: MMA7660FC )   (2)通过型号查看重力感应器电路图,了解每个引脚的功能   (3)找到引脚对应的网标(EINT,SDL,SCL)配置其相应的gpio口   (4)配置芯片相关寄存器   (5)使用I2C来读取重力感应器相应寄存器的值   下面是整个驱动的简单流程图: 通过看底板我们知道了重力感应器的控制芯片型号为: MMA7660FC,接下来我们就在看看改芯片的电路图(如下): 由上图我们可以看出它的外部中断XEINT25,用到的i2c总线为SDA3、SCL3 通过网标我们可以看到它是怎么连接到核心板上的(soc) 由上图可知,XEINT25、I2CSDA3、SCL3所对应的gpio分别为GPA1_2、GPA1_3、GPX3_1,之后我们就可以配置gpio口为相应的功能 通过datasheet我们可以找到它的外部中断号为64,如下图: 简单了解了mma7660的电路图之后我们就需要看芯片的datasheet,了解里面寄存器的配置及功能 首先看一下整个芯片与我们核心板的连接图: 由上图我们可以看出,芯片连接到我们核心板(soc)的总共为三根线:INT( 中断信号),SDA、SCL