objective-c基础教程——学习小结

 

提纲:

简介

与C语言相比要注意的地方

objective-c高级特性

开发工具介绍(cocoa 工具包的功能,框架,源文件组织;XCode使用介绍)

简介:

1.       objective-c是C语言的一个扩展集,主要由APPLE公司维护,是MAC系统下的主要开发语言。

个人认为,对于用惯了常用的C,JAVA等语言的人来说,objective-c是一中很另类,非主流的语言。

2.    开发 Mac的 UI 程序来说,使用的是 Cocoa 这个框架,cocoa的组成部分有:foundation和application kit框架。

【foundation框架处理用户界面之下的特性,如数据结构和通信机制;application kit框架包含cocoa的高级特性:用户界面元素,打印,颜色,声音管理,applescript等】

3.       我通过这本书的学习:

基本掌握了Objective C的语法,基本能看懂别人写的代码,自己也能编写代码;

熟悉了开发环境XCode的使用;(包括建立项目,调试,运行,代码管理等)

与C语言相比要注意的地方:

1.       文件介绍:Objective-C 也使用头文件(header files),后缀为 .h, 但使用 .m(即 message, 其他面向对象编程语言也叫 method),作为源文件的后缀。

在objective-c中使用#import<>,而不使用#include<>,#import可以保证头文件只被包含一次。

2.       与C一致的地方:

数据类型,表达式,各种运算符

循环:for, while, do while, break, continue

分支:if, else, switch

3.    NSlog()函数:与printf()类似,想控制台输出信息。但它增加了一些特性,如时间戳等。

【cocoa对起所有的函数,常量和类型名称都添加了NS前缀。】

4.       双引号的前面的@表示这双引号中的字符串应该作为cocoa的NSString元素来处理。

5.       布尔类型BOOL:值为YES,NO;

6.    %d表示输出整数

  %@表示输出NSString类型

%s表示输出字符串数组(char*);

7.    objective-c中的方括号:

1.       用于通知某个对象该做什么。

2.       方括号内第一项是对象,其余部分是你需要对象执行的操作。

3.       在objective-c中通知对象执行某种操作,称为发送消息。(也叫调用方法)

8. 标识符id:是一种泛型,用于表示任何种类的对象。

9. 类声明@interface:

 

@interface Circle:NSObject   //为Circle类定义接口;NSObject表示是父类。

{//以下是数据成员

   ShapeColor fillColor;

   ShapeRect bounds;

}

//以下是方法声明

-(void) setFillColor: (ShapeColor) fillColor;  //前面的短线表明这是方法声明

                                   //短线后面是方法的返回类型

                                   //接着是方法名

//冒号后面是参数,其中(ShapeColor)是参数类型,

fillColor是参数名

-(void) setBounds:(ShapeRect) bounds;

-(void) draw;

 //减号就是普通函数

加号就是静态函数

@end     //结束声明

objective-c看到@符号,就把它看成是C语言的扩展。

一个类的完整声明如下:

    @interface CClassA(Category): CBaseClass<IA,IB...>

//类名(类别名):父类<协议>

10. 类实现@implementation

@implementation

@implementation Circle

-(void) setFillColor: (ShapeColor) c

{

   fillColor=c;

}

-(void) draw

{

    NSLog(@”drawing a circle at(%d %d %d %d) in %@”, bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillName));

}

@end

隐藏对象self对应于C中的this。

Self->fillcolor来访问成员变量。

11. 调用写好的类和类函数:

//创建新对象,使用缺省初始化函数

    Bank *bankDefault = [[Bank alloc] init];

//调用方法:

    [bank addAmount: 1];

[bank print];

// 释放对象:

    [bankDefault free];

 

12.

两个参数的方法:

-(void) setTire: (Tire *) tire  //声明

      atIndex: (int) index;

//使用

[car setTire:tire atIndex:2];

objective-c高级特性:

1.       继承

Objective-c不支持多继承。

Super 关键字:调用该类的父类;

超类:父类的另一种说法。 

 

2.        

自定义NSLog()输出:

在类中添加description方法就可以自定义NSLog()如何输出对象。

@implementation Tire

-(NSString *) description

{

   Return (@”I am a tire.”);

}

Main()

{

    NSLog(@”%@”,tire[0]);

}

3.        

Foundation kit:

Cocoa是由两部分框架组成的:foundation kit [包括一些基础类]和 application kit.【包括用户接口对象和高级类】

 创建字符串:

NSString *test;

test=[NSString stringWithFormat:@"i'm %d years old!",23];

若在声明方法时在方法前面添加了加号,那就表示把这个方法定义为类方法【这个方法属于类对象,而不是类的实例对象。】

NSArray类:可以存放任意类型的对象.

它有两个限制:

1. 它只能存储objective-c的对象,但不能存储C中的基本数据类型,如int , float, enum, struct等。

2.不能存储nil(对象的零值或NULL值);【因为在创建NSArray时,要在列表结尾添加nil代表列表结束。】 

创建NSArray:

NSArray *array;

array=[NSArray arrayWithObjects:@"one",@"two",nil];        

NSString, NSMutableString类;

【NSString是不可变的,即一旦创建完成,就不能通过删除字符或添加字符的方式来改变它;

而NSMutableString是可变的。

这两个类就像JAVA中的string与stringBuffer类的区别。】

NSArray, NSMutableArray类;

NSEnumerator枚举;

NSEnumerator *emun;

Emun=[array objectEnumerator];

Id thingie;

While(thingie=[enumerator nextObject]){}

NSDictionary:字典(关键字及其定义的集合。)【也成为散列表,关联数组】,NSMutableDictionary类;

NSNumber:用来包装基本数据类型,如int ,char, float, bool;【将一个基本类型的数据包装成对象叫做装箱。】

NSValue:它可以包装任何类,NSNumber是它的子类。

NSNull:

 在cocoa中看到“CF”字样时,就表示它是苹果公司的Core Foundation 框架相关的内容。

 NSAutoreleasePool:自动释放内存池。

 

4.        

内存管理

每个对象都有一个与之关联的引用计数(也叫保留计数)

当使用alloc, new 方法或通过 copy消息(生成接收对象的一个副本)创建一个对象时,对象的引用计数值被设为1;

 给对象发retain消息时,增加该值;

 发送release消息时,减少该值;

当一个对象的引用计数值变为0时,objective-c会自动向对象发送一条dealloc消息。销毁该对象。

你可以在自己的对象中重写该方法,

使用retainCount消息,可以获取引用计数器的值。

-(id) retain;

-(void) release;

-(unsigned) retainCount;    

自动释放池:autorelease pool;

创建:

NSAutoreleasePool *pool;

pool=[[NSAutoreleasePool alloc] init];

销毁:

[pool release];

注意:xcode自动生成的代码,销毁pool池时,使用的是[pool drain],drain方法只是清空释放池,但不销毁pool.所以在自己编写代码时还是使用release.

而且,drain只适用于MAC OS 10.4以上的版本,而release适用于所有版本。

只有在向某个对象发送autorelease消息时,该对象才会添加到NSAutoreleasepool中,才会被自动释放。

如:[car autorelease];

内存管理黄金准则: 

只有通过alloc, new和 copy方法创建的对象,才需要程序员负责向该对象发送release或autorelease消息。

而通过其他方法获得的对象,则默认为已经被设置为自动释放,所以不需要程序员做任何操作了。

在objective-c 2.0中有垃圾回收机制,

如果要对某个项目使用垃圾回收:

项目信息--build选项卡--查询"garb",出现“objective-c Garbage Collection”,将其值设置为“required[-fobjc-gc-only]”

启用垃圾回收后,通常的内存管理命令全都变成了空操作指令,不执行任何操作。

开发iphone软件,不能使用垃圾回收。

 

5.        

对象初始化

两种创建新对象的方法:

[类名 new]

[[类名 alloc] init]

这两种方法是等价的,但cocoa的惯例是使用后者。

alloc在为对象分配空间的同时,将这块内存初始化为0;

Init方法:初始化实例变量,使对象处于可用状态。[返回类型为id,  返回的值描述了被初始化的对象]

使用new创建新对象时,系统要完成两个步骤:

1.       为对象分配内存,即对象获得一个用来存放其实例变量的内存块;

2.       自动调用init方法,让该对象处于可用状态。

 
 

6.     

objective-c 2.0的新特性【只适用于mac os x10.5及以上】

@property :表示声明了对象的属性。【这样就不用再写属性的访问器了。】

(他有copy, retain, readwrite, readonly等属性)

@synthesize:表示“创建该属性的访问器”

点表达式

 
 

7.     

类别

类别(category)是一种为现有的类添加新方法的方式。

类别的声明:

@interface NSString (NumberConvenience) //类名 (类别名)

-(NSNumber) lengthAsNumber;            //扩充方法声明

@end

使用时使用原来的类名,就可以调用他的所有类别中的方法。

类别的局限性:

1.    不能向类中添加新的实例变量;

2.    在类别中的方法若与类中现有的方法重名,则类中的方法不可用,被类别中的新方法取代。

类别的作用:

1.    将类的实现分散到多个文件或框架中;

2.    创建对私有方法的前向引用;

【Cocoa中没有真正的私有方法,则实现私有方法类似功能的方法为:

先在类别中声明方法;然后到现有类的实现中实现该方法。

这样这个类中的其他方法可以使用该方法,而其他外部的类就不会知道该方法的存在了。】

3.    向对象添加非正式协议。

【创建一个NSObject的类别称为创建一个非正式协议。】

委托delegate是一种对象,另一个类的对象会要求委托对象执行它的某些操作。

受委托对象在某个时间(某个事件触发)时,会自动通知委托对象执行委托方法。 

选择器:@selector():选择器只是一个方法名称,但它以objective-c运行时使用的特殊方式编码,以快速执行查询。圆括号中的内容是方法名。

所以Car类的setEngine:方法的选择器是:@selector(setEngine:

受委托对象如何知道其委托对象是否能处理它(受委托对象)发送给它(委托对象)的消息?

通过选择器,受委托对象先检查委托对象,询问其是否能响应该选择器。如果能,则向它发送消息。

 

8.     

协议:

正式协议是一个命名的方法列表。

采用协议意味着必须实现该协议的所有方法。否则,编译器会发出警告。

正式协议就像JAVA中的接口一样。 

声明协议:

@protocal NSCopying

-(id) copywithzone:(NSZone *) zone; //方法列表

@end

采用协议:

@interface Car:NSObject <NSCopying,NSCoding> //中括号中是要实现的协议列表

{//实例变量列表}

//方法列表

@end

在objective-c 2.0中,有新特性:@optional, @required

9.     

AppKit:

创建APPKIT项目:

File—new project—mac os—application—Cocoa application;

IBOutlet与IBAction

这两个都是APPKIT提供的#defines.

IBOutlet没有任何作用,不会对它进行编译。

IBAction定义为void。

这两个是为Interface Builder以及阅读代码的人提供的标记。

.xib文件一般称为.nib文件。

.nib文件是包含被冻结对象的二进制文件。

而.xib文件是XML格式的nib文件。

posted @ 2015-10-15 09:07 海东青飞吧! 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1 /** 2 UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中手势。 3 UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,他有下面一些子类用于处理具体的手势: 4 1.拍击UITapGestureRecognizer(任意次数的... 阅读全文
posted @ 2015-09-10 20:53 海东青飞吧! 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1、【颜色定制】+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 指定RGB,参数是:红、绿、黄、透明度,范围是0-1 以0x开始的数据表示16... 阅读全文
posted @ 2015-09-10 19:45 海东青飞吧! 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 核心动画(Core Animation)一、Core animation简单介绍 1.Core Animation,中文翻译为核心动画,是一套包含图形绘制,投影,动画的Objective–C类集合。它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用... 阅读全文
posted @ 2015-09-08 17:35 海东青飞吧! 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 1 - (void)drawRect:(CGRect)rect { 2 3 NSLog(@"drawRect"); 4 5 //获取图形的上下文 6 CGContextRef context = UIGraphicsGetCurrentCon... 阅读全文
posted @ 2015-09-06 19:33 海东青飞吧! 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 1. Quartz概述Quartz是Mac OS X的Darwin核心之上的绘图层,有时候也认为是CoreGraphics(制图)。共有两种部分组成Quartz:Quartz Compositor,合成视窗系统,管理和合成幕后视窗影像来建立Mac OS X使用者接口。(了解,即幕后工作)Quartz... 阅读全文
posted @ 2015-09-06 19:30 海东青飞吧! 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @property(nonatomic,weak) IBOutlet UIImageView* imageView; 6 7 @end 8 ... 阅读全文
posted @ 2015-08-31 21:02 海东青飞吧! 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1 iOS 7:NSURLSession 2 字面理解Session会话控制 3 而Connection是连接,显然Session比这个Connection要更强大些 4 5 一、NSURLSession简介(整体认知) 6 (1).出现 7... 阅读全文
posted @ 2015-08-31 20:58 海东青飞吧! 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 1 在ViewController中的代码如下 2 3 - (void)viewDidLoad { 4 [super viewDidLoad]; 5 6 NSString *urlStr1 = @"http://localhost/cgi-bin/post1.cgi... 阅读全文
posted @ 2015-08-31 20:32 海东青飞吧! 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 其实今天学的东西我也不知道该怎么取标题了一:POST1.如果要传递大量数据,比如文件上传,只能用post请求2.get的安全性比post要差一些,如果包含敏感信息,建议用post3.post请求的分类分为两类,区别在于请求对象的格式不同。一类和get类似,使用url承载请求信息,多用于登陆注册,填表... 阅读全文
posted @ 2015-08-31 20:29 海东青飞吧! 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1 多线程编程1--NSTread 2 iOS中多线程编程方法有4种,3种常用的 3 1.pThread (底层 c线程库,很少用到) 4 2.NSThread(oc线程库,这篇博客将介绍一些关于它的知识) 5 这种方法需要管理线程的生命周期、同步、加锁问题,会导致一定的性能开销 6 3.NSOp... 阅读全文
posted @ 2015-08-31 19:49 海东青飞吧! 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 零、线程的注意点(掌握)1.不要同时开太多的线程(1~3条线程即可,不要超过5条)2.线程概念1> 主线程 : UI线程,显示、刷新UI界面,处理UI控件的事件2> 子线程 : 后台线程,异步线程3.不要把耗时的操作放在主线程,要放在子线程中执行一、NSThread(掌握)1.创建和启动线程的3种方... 阅读全文
posted @ 2015-08-28 21:17 海东青飞吧! 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 1 =================== 2 3 多线程 4 5 ================== 6 7 8 9 多线程 10 11 一、概念: 12 13 程序:(Program)(App)是一个可以运行的文件(我们写的代码) 14 15 进程:(Pr... 阅读全文
posted @ 2015-08-28 20:52 海东青飞吧! 阅读(235) 评论(0) 推荐(0) 编辑
摘要: //2对文件内容的操作 NSHandle文件内容为:hello world! //NSHandle 文件句柄 //创建文件句柄 //以只读的方式打开指定位置的文件,生成文件句柄 NSFileHandle *fh=[NSFileHandle fileHandleForRead... 阅读全文
posted @ 2015-06-23 20:14 海东青飞吧! 阅读(294) 评论(0) 推荐(0) 编辑
摘要: //1对文件本身的操作 NSManager //创建一个单例的file manager 的对象 NSFileManager *fm=[NSFileManager defaultManager]; //浅度遍历 //查看指定目录下的文件 把获得的文件和文件夹的名字放到数组里 返... 阅读全文
posted @ 2015-06-23 17:19 海东青飞吧! 阅读(217) 评论(0) 推荐(0) 编辑
摘要: NSData存储字节流 NSString *str=@"hello world!"; //编码 NSData *data=[str dataUsingEncoding:NSUTF8String... 阅读全文
posted @ 2015-06-08 23:10 海东青飞吧! 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1 NSvalue把复杂的数据类型(指针、结构体等)存储成对象 2 3 struct sct{ 4 int a; 5 int b; 6 }sctt={4,5}; 7 8 NSValue *value=[[NSV... 阅读全文
posted @ 2015-06-08 22:56 海东青飞吧! 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1 集合NSSet(无序) 2 本质上是哈希表,采用散列算法来查找 3 每个元素只有一次,元素是无序的 4 5 创建 每个元素可以是任意的对象 6 NSSet *set=[[NSSet alloc] initWithObjects:@"one",@"two", 7... 阅读全文
posted @ 2015-06-08 22:22 海东青飞吧! 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1 //声明一个整数 2 NSInteger a=9; 3 //创建常见的数据类型的对象 4 NSNumber *intNumber=[[NSNumber alloc] initWithInt:5]; 5 NSNumber *floatNumber=[[NSNumb... 阅读全文
posted @ 2015-06-08 21:32 海东青飞吧! 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 1 //字典和可变字典 2 NSDictionary和NSMutableDictionary 3 4 //创建 5 NSDictionary *dict=[[NSDictionary alloc] initWithObjectsAndKeys: 6 @"on... 阅读全文
posted @ 2015-06-05 20:37 海东青飞吧! 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 1 //oc允许使用c语言的数组,但是很多时候会用NSArray这个数组的类创建对象 2 //NSArray是不可变数组,它有个子类NSMutableArray可变数组 3 4 //1.创建数组 5 //这是一个数组的对象,数组的元素是“one two three” 6 ... 阅读全文
posted @ 2015-06-05 19:31 海东青飞吧! 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 该博客是自己的学习笔记,写的比较随意。。。1.创建字符串的方法: 1 //1用NSString 直接创建 2 NSString *str=@"hello world."; 3 //2用一个已存在的字符串来创建另一个字符串 传的参是一个字符串的地址 4 NSString... 阅读全文
posted @ 2015-06-05 16:29 海东青飞吧! 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 基本语法一:1.基类:NSObject2.单继承(和java一样)3.支持接口@protocol4.使用接口实现多继承5.支持多态和抽象类6.所有的函数都是虚函数二:类的定义oc类分为两个文件,一个是.h一个是.m(放在一个文件里也行).h 文件存放类,函数声明.m文件存放类的具体实现类的声明使用关... 阅读全文
posted @ 2015-06-05 16:21 海东青飞吧! 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 该博客通过代码来展示对二叉排序树的各种操作: 1 #include 2 #include 3 4 typedef int KeyType; 5 6 typedef struct Node 7 { 8 KeyType key;//关键字 9 struct Node... 阅读全文
posted @ 2015-06-02 17:37 海东青飞吧! 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 一、顺序查找顺序查找比较简单,这里就不用代码实现了,其原理就是按顺序比较每个元素,直到找到关键字。其时间复杂度为O(n).二、二分查找(折半查找)原理是:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则查找过程结束;如果要查找的元素大于中间元素,则从数组大于中间元素的那一半查找;如果... 阅读全文
posted @ 2015-06-02 17:36 海东青飞吧! 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把所有的有序子序列合并。2-路归并排序示例:2-路归并排序的核心操作是:将一维数组中前后相邻的两个有序序列归并为一个有序序列。其算法如下: 1 void Merge(Elemtyp... 阅读全文
posted @ 2015-06-02 11:21 海东青飞吧! 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 基本思想:选择一个基准元素,通过一趟排序将待排的记录分割成两个独立的部分,其中一部分记录的值均比基准元素小,另一部分均比基准元素值大。然后分别对这两部分用同样的方法进行排序。代码如下: 1 void Qsort(int a[],int low,int high) 2 { 3 if(low=k... 阅读全文
posted @ 2015-06-02 10:42 海东青飞吧! 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 希尔排序又称“缩小增量排序”。它的基本思想如下:先将整个待排记录序列分成若干个子序列分别进行直接插入排序,等到整个序列中的记录“基本有序”了,再对全体记录进行一次直接插入排序。算法实现:我们这里简单处理增量序列:增量序列d={n/2,n/4,n/8....1}n为要排序数的个数。即:先将要排序的一组... 阅读全文
posted @ 2015-06-02 10:10 海东青飞吧! 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 下面我们来讲一下插入排序基本思想如下:将一个记录插入到已排序好的有序表中,从而得到一个新的有序表。实现要点,我们需要设立一个哨兵,作为临时存储和判断数组边界来用。直接插入的代码如下: 1 for(i=1;i=low;j--)15 {16 a[j]=a[j-1];//元素后移... 阅读全文
posted @ 2015-06-02 09:45 海东青飞吧! 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 上篇博客咱们讲了选择排序,不难发现,当数据较多时选择排序的效率就很低了。那么有没有另一种排序的方法可以提高一下效率呢?答案是肯定的。下面我们来讲一下冒泡排序。冒泡排序也是通过两重循环,外层循环和选择排序一样通过n-1次找最小(或最大)值,只是内循环的比较实现方式不同。它是通过n-1次找最大值得方式实... 阅读全文
posted @ 2015-06-02 09:09 海东青飞吧! 阅读(122) 评论(0) 推荐(0) 编辑
摘要: n个数的选择排序是一个两重循环的问题:外循环控制求最小值得次数,n个数求最小值,要用n-1循环;内循环是用来完成求最小值的过程,假定当前元素a[i]是最小值,假设内循环变量是j让a[i]与其后的所有元素a[j]逐个比较,i+1a[j]) 6 { 7 ... 阅读全文
posted @ 2015-06-02 08:57 海东青飞吧! 阅读(204) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1573 1 #include 2 #include 3 char map[15][15]; 4 int main() 5 { 6 int n,m,k; 7 int i,j; 8 while(~scanf("%d %d %d",&n,&m,&k)) 9 {10 getchar();11 if(n==0&&m==0&&k==0)break;12 memset(map,'O',sizeof(map));13 for(i=1;i<=n;i++)14 . 阅读全文
posted @ 2013-08-06 15:48 海东青飞吧! 阅读(174) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2632 1 #include 2 #define N 110 3 struct rob 4 { 5 int x,y,d; 6 }rob[N]; 7 struct move 8 { 9 int id,act,rep; 10 }mrob[N]; 11 12 int n,m,nums,moves; 13 14 int f[N][N]; 15 16 void input() 17 { 18 int i,j; 19 scanf("%d %d",&m,&n); 20 for(i=1;in|... 阅读全文
posted @ 2013-08-06 10:53 海东青飞吧! 阅读(242) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2996http://poj.org/problem?id=29932993 1 #include 2 #include 3 char map[10][10]; 4 int main() 5 { 6 char st[8],st1[200],st2[200]; 7 int i,j,k=1,len1,len2; 8 for(i=0; i='z')&&(map[i][j]='Z'))65 printf("..");66 else67 ... 阅读全文
posted @ 2013-08-05 20:56 海东青飞吧! 阅读(225) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3295离散 1 #include 2 #include 3 #include 4 using namespace std; 5 int p,q,r,s,t; 6 stackst; 7 int f(char ch) 8 { 9 switch(ch) 10 { 11 case 'p':st.push(p);return 1; 12 case 'q':st.push(q);return 1; 13 case 'r':st.push(r);return 1; 14 ... 阅读全文
posted @ 2013-08-05 20:53 海东青飞吧! 阅读(155) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2965 1 #include 2 #include 3 int main() 4 { 5 int i,j,k,t; 6 int f[4][4]={0}; 7 char ch; 8 for(i=0;i<4;i++) 9 {10 for(j=0;j<4;j++)11 {12 scanf("%c",&ch);13 if(ch=='+')14 {15 f[i][j]=!f[i... 阅读全文
posted @ 2013-08-05 20:51 海东青飞吧! 阅读(148) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1753 1 #include 2 int f[4][4],k,flag=0; 3 void turn(int a,int b) 4 { 5 f[a][b]=!f[a][b]; 6 if(a>0) 7 f[a-1][b]=!f[a-1][b]; 8 if(a0)11 f[a][b-1]=!f[a][b-1];12 if(b<3)13 f[a][b+1]=!f[a][b+1];14 }15 int range()16 {17 int i,j;18 f... 阅读全文
posted @ 2013-08-05 20:50 海东青飞吧! 阅读(139) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1942建立数学模型 C(a,b);此题就是考察排列组合 就是数据卡的紧 wa了两次 1 #include 2 using namespace std; 3 int main() 4 { 5 unsigned long long int n,m,s,a,b; 6 unsigned long long int i,j; 7 while(cin>>n>>m) 8 { 9 if(n==0&&m==0) break;10 if(n<m)11 {12 uns... 阅读全文
posted @ 2013-08-03 11:10 海东青飞吧! 阅读(123) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1019大致题意:有一串数字串,其规律为1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910 1234567891011 123456789101112······k输入位置n,计算这一串数字第n位是什么数字,注意是数字,不是数!例如12345678910的第10位是1,而不是10,第11位是0,也不是10。总之多位的数在序列中要被拆分为几位数字,一个数字对应一位。解题思路:模拟分组,把1看做第1组,12看 阅读全文
posted @ 2013-08-03 09:51 海东青飞吧! 阅读(309) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1321 1 #include 2 #include 3 #include 4 using namespace std; 5 int n,k,count; 6 char map[20][20]; 7 int vis[20];//标记某列是否被访问 8 void dfs(int r,int c) 9 {10 if(c==0)//递归边界,当所有棋子都放的合法,计数加一11 {12 count++;13 return;14 }15 if(n-r+10)18 {19 ... 阅读全文
posted @ 2013-08-02 15:55 海东青飞吧! 阅读(206) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示