#import
#import "String.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*1. 输入一段字符串,已知字符串只由字母和空格构成,统计其中的单词个数 (10分)
比如:传入 @"welcom to qianfeng" 返回:3
*/
String *st = [[String alloc] init];
char ch[100];
NSLog(@"请输入English:");
gets(ch);
NSString *string = [NSString stringWithFormat:@"%s",ch];
NSInteger i = [st countOfWordInString:string];
NSLog(@"其中单词的个数是:%ld",i);
/*
2. 取得文件的扩展名 (10分)
比如 传入字符串 @"/home/qianfeng/oc.txt" 返回:@"txt"
传入字符串 @"/usr/qianfeng/ios.m" 返回:@"m"
*/
char chOne[100];
NSLog(@"请输入文件路径:");
gets(chOne);
NSString *stringOne = [NSString stringWithFormat:@"%s",chOne];
NSString *stringTwo = [st extensionOfFilePath:stringOne];
NSLog(@"%@",stringTwo);
/*
3.将一个字符串数组中的元素组合成一个合法路径(10分)
已知一个数组存放的是目录名字,要求组合成一个合法路径
比如:数组中存放的是 home qianfeng iOS
返回 /home/qiangfeng/iOS
*/
NSArray *array = @[@"home",@"qianfeng",@"ios"];
NSString *stringThree = [st joinPathOfComponents:array];
NSLog(@"%@",stringThree);
/*
4.用NSLog打印九九乘法表(10分)
*/
[st print99Table];
}
return 0;
}
#import
@interface String : NSObject
//1.
- (NSUInteger)countOfWordInString:(NSString *)str ;
//2.
- (NSString *)extensionOfFilePath:(NSString *)path;
//3.
- (NSString *)joinPathOfComponents:(NSArray *)comp;
//4.
- (void)print99Table;
@end
#import "String.h"
@implementation String
//1.
- (NSUInteger)countOfWordInString:(NSString *)str {
NSArray *array = [str componentsSeparatedByString:@" "];
return array.count;
}
//2.
- (NSString *)extensionOfFilePath:(NSString *)path{
NSRange rang = [path rangeOfString:@"."];
NSString *string = [path substringFromIndex:rang.location+1];
return string;
}
//3.
- (NSString *)joinPathOfComponents:(NSArray *)comp{
NSString *string = [comp componentsJoinedByString:@"\\"];
return string;
}
//4.
- (void)print99Table{
NSMutableString *Mstr = [[NSMutableString alloc] init];
for (int i = 1; i < 10; i ++) {
for (int j=1; j <= i; j ++) {
[Mstr appendFormat:@"%d * %d = %d ",j,i,i*j];
}
[Mstr appendFormat:@"\n"];
}
NSLog(@"\n%@",Mstr);
}
@end
#import
#import "String.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
5.将指定字符串逆序(10分)
比如:传入字符串@"iphone" 返回:@"enohpi"
传入字符串@"beautiful" 返回:@"lufituaeb"
*/
String *string = [[String alloc] init];
NSString *sOne = [string reverseString:@"123456"];
NSLog(@"%@",sOne);
/*6.
// 根据子数组中的内容删除原数组的相应的元素 (10分)
//已知数组中存放的都是字符串
比如:可变数组中存放的是:
@"shenzhen" @"iOS" @"beijing" @"OC" @"UI" @"shanghai"
子数组中存放的是:@"shenzhen" @"UI"
可变数组根据子数组中的内容 删除相应的元素
结果可变数组内容变为 @"iOS" @"beijing" @"OC" @"shanghai"
*/
NSMutableArray *Marray = [[NSMutableArray alloc]initWithObjects:@"shenzhen", @"iOS", @"beijing", @"OC", @"UI", @"shanghai", nil];
NSArray *array = [[NSArray alloc]initWithObjects:@"shenzhen",@"UI", nil];
[string handleArray:Marray deleteSubArray:array];
/*
7.判断是否是一个合法的手机号 (10分)
要求:手机号以1开头总共有11位 并且手机号中不能有除了数字以外的其他字符
比如: 13812345678 是手机号
188a1234567 不是手机号
01381234567 不是手机号
188123456789 不是手机号
18912345 不是手机号
*/
NSString *sTow = [NSString stringWithFormat:@"a5832566127"];
BOOL result = [string isPhoneNumberOfString:sTow];
if (result) {
NSLog(@"是手机号");
}else
NSLog(@"不是手机号");
/*
8. 把字符串中的字母大小写反转(10分)
//将s中每个字母大写变成小写,小写变成大写,其他字符不动。返回值是修改后的字符串
*/
NSString *sThree = [NSString stringWithFormat:@"SLJsdj"];
NSString *sFour = [string reversalUpperAndLowerForString:sThree];
NSLog(@"%@",sFour);
}
return 0;
}
#import
@interface String : NSObject
//5.
- (NSString *)reverseString:(NSString *)str;
//6.
- (void) handleArray:(NSMutableArray *)arr deleteSubArray:(NSArray *)subArr;
//7.
- (BOOL)isPhoneNumberOfString:(NSString *)phoneString;
//8.
- (NSString *)reversalUpperAndLowerForString:(NSString *)s;
@end
#import "String.h"
@implementation String
//5.
- (NSString *)reverseString:(NSString *)str{
NSMutableString *Mstring = [[NSMutableString alloc] init];
for (int i = 0; i < str.length; i ++) {
unichar c = [str characterAtIndex:i];
NSString *s = [NSString stringWithFormat:@"%c",c];
[Mstring insertString:s atIndex:0];
}
return Mstring;
}
//6.
- (void) handleArray:(NSMutableArray *)arr deleteSubArray:(NSArray *)subArr{
NSMutableSet *mset = [NSMutableSet setWithArray:arr];
NSSet *set = [NSSet setWithArray:subArr];
[mset minusSet:set];
NSArray *array = [mset allObjects];
NSLog(@"%@",array);
}
//7.
- (BOOL)isPhoneNumberOfString:(NSString *)phoneString{
if (phoneString.length == 11) {
for (int i = 0; i< phoneString.length; i ++) {
unichar c = [phoneString characterAtIndex:i];
if (c > '9'|| c < '0') {
return NO;
}
}
return YES;
}else
return NO;
}
//8.
- (NSString *)reversalUpperAndLowerForString:(NSString *)s{
NSMutableString *Mstring = [[NSMutableString alloc] init];
for (int i = 0; i < s.length; i ++) {
unichar c = [s characterAtIndex:i];
if (c >= 97) {
c = c - 32;
}else
c = c + 32;
NSString *string = [NSString stringWithFormat:@"%c",c];
[Mstring appendString:string];
}
return Mstring;
}
@end
#import
#import "String.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
10. 查找子串出现次数(20分)
// 返回字符串s中出现子串substring的次数
*/
String *str = [[String alloc] init];
char ch[100];
scanf("%s",ch);
NSString *s1 = [NSString stringWithFormat:@"%s",ch];
//String *str = [[String alloc] init];
char ch1[100];
scanf("%s",ch1);
NSString *sub1 = [NSString stringWithFormat:@"%s",ch1];
// NSString *s = @"iamasupermaniamasuperman";
// NSString *substring = @"ia";
NSInteger i = [str countOfSubstring:sub1 inString:s1];
NSLog(@"%ld",i);
/*
11.
现有一个数组NSMutableArray,
数组有若干个NSString的元素,进行选择法排序(20分)
// 参数arr 表示数组对象地址
//参数 asc=YES 表示升序 asc=NO 表示降序
*/
NSMutableArray *MArray = [[NSMutableArray alloc] initWithObjects:@"2",@"5",@"8",@"6",@"7", nil];
[str selectionSort:MArray andAsc:NO];
/*
12.传入一个数组,其元素类型与个数皆未知,返回新数组,由原数组的元素正序反序拼接而成。
//参数arr 表示原数组地址
//返回值是新数组的地址
传入:@[@"one", @"Two", @"Three"]
返回:@[@"one", @"Two", @"Three", @"Three", @"Two", @"one"]
*/
NSArray *array = @[@"one", @"Two", @"Three"];
NSArray *arrayOne = [String symmetryArray:array];
NSLog(@"%@",arrayOne);
/*13
已知一个字符串对象中,英语单词用各种非字母字符分割,统计单词的个数。
如,传入:"Yes, she*is%my@love.";
返回:5(15分)。
*/
NSString *string = @"Yes, she*is%my@love.";
NSInteger iOne = [String countWord:string];
NSLog(@"单词个数是:%ld",iOne);
/*
14
已知千锋邮箱的用户名只能由数字字母下滑线组成,域名为@1000phone.com,判断一个字符串是否是千锋邮箱,是,返回1,不是返回0。(15分)
[email protected] 是
[email protected] 不是
[email protected] 不是
*/
NSString *stringOne = @"[email protected]";
BOOL result = [String is1000PhoneMail:stringOne];
if (result) {
NSLog(@"是前锋的邮箱");
}else
NSLog(@"不是前锋的邮箱");
}
return 0;
}
#import
@interface String : NSObject
//10.
- (NSInteger)countOfSubstring:(NSString *)substring inString:(NSString *)s;
//11.
- (void)selectionSort:(NSMutableArray *)arr andAsc:(BOOL)asc;
//12.
+(NSArray *)symmetryArray:(NSArray *)arr;
//13.
+(NSInteger)countWord:(NSString *)string;
//14.
+(BOOL)is1000PhoneMail:(NSString *)str;
@end
#import "String.h"
@implementation String
//10
- (NSInteger)countOfSubstring:(NSString *)substring inString:(NSString *)s{
int n = 0;
NSMutableString *MString = [NSMutableString stringWithString:s];
while (1) {
NSRange rang = [MString rangeOfString:substring];
if (!rang.length)
return n;
[MString deleteCharactersInRange:rang];
n++;
}
}
//11
- (void)selectionSort:(NSMutableArray *)arr andAsc:(BOOL)asc{
if (asc) {
for (int i = 0 ; i < arr.count ; i ++) {
for (int j = i; j < arr.count; j++) {
if (arr[i] > arr[j]) {
[arr exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
NSLog(@"%@",arr);
}
else
{
for (int i = 0 ; i < arr.count ; i ++) {
for (int j = i; j < arr.count; j++) {
if (arr[i] < arr[j]) {
[arr exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
NSLog(@"%@",arr);
}
}
//12
+(NSArray *)symmetryArray:(NSArray *)arr{
NSMutableArray *MArray = [[NSMutableArray alloc] init];
NSEnumerator *enumArray = [arr objectEnumerator];
id ch;
while (ch = [enumArray nextObject]) {
[MArray addObject:ch];
}
NSEnumerator *enumReverse = [arr reverseObjectEnumerator];
id ch1;
while (ch1 = [enumReverse nextObject]) {
[MArray addObject:ch1];
}
return MArray;
}
//13
+(NSInteger)countWord:(NSString *)string{
NSInteger count = 0;
for (int i = 0; i < string.length ; i ++) {
unichar c = [string characterAtIndex:i];
if ((c > 'a' && c < 'z')||( c > 'A' && c < 'Z')) {
for (i = i; ; i ++) {
c = [string characterAtIndex:i];
if(!((c > 'a' && c < 'z')||( c > 'A' && c < 'Z')))
break;
}
count ++;
}
}
return count;
}
//14
+(BOOL)is1000PhoneMail:(NSString *)str{
NSRange rangOne = [str rangeOfString:@"@1000phone.com"];
if (rangOne.location == NSNotFound) {
return NO;
}else
{
NSString *stringOne = [str substringToIndex:rangOne.location];
for (int i = 0; i < stringOne.length; i ++) {
unichar c = [stringOne characterAtIndex:i];
if (!(c == '_'||(c>'a'&&c<'z')||(c>'A'&&c<'Z')||(c>'0'&&c<'9')) ) {
return NO;
}
}
return YES;
}
}
@end
三
#import
#import "Test.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Test *test = [[Test alloc] init];
/* //1.
NSLog(@"%ld",[test countOfWordInString:@"welcom to qianfeng"]);
// 2
NSLog(@"%@",[test extensionOfFilePath:@"/home/qianfeng/oc.txt"]);
// 3
NSLog(@"%@",[test joinPathOfComponents:@[@"destop",@"mm",@"tt"]]);
// 7
NSLog(@"%d",[test isPhoneNumberOfString:@"12345678901"]);
// 8
NSLog(@"%@",[test reversalUpperAndLowerForString:@"lvJIAhAO"]);
// 10
NSLog(@"%ld",[test countOfSubstring:@"s" inString:@"subtsring"]);
// 11
NSMutableArray *arrayM = [[NSMutableArray alloc] initWithObjects:@"1",@"6",@"7",@"4", nil];
[test selectionSort:arrayM andAsc:YES];
//12
NSLog(@"%@",[Test symmetryArray:@[@"恒大",@"淘宝",@"京东",@"腾讯"]]);
*/
// 13
NSLog(@"%ld",[Test countWord:@"Yes, she*is%my@love."]);
// 14
// [Test is1000PhoneMail:@"[email protected]"];
}
return 0;
}
#import
@interface Test : NSObject
/*1. 输入一段字符串,已知字符串只由字母和空格构成,统计其中的单词个数 (10分)
比如:传入 @"welcom to qianfeng" 返回:3
*/
- (NSUInteger)countOfWordInString:(NSString *)str ;
/*
2. 取得文件的扩展名 (10分)
比如 传入字符串 @"/home/qianfeng/oc.txt" 返回:@"txt"
传入字符串 @"/usr/qianfeng/ios.m" 返回:@"m"
*/
- (NSString *)extensionOfFilePath:(NSString *)path;
/*
3.将一个字符串数组中的元素组合成一个合法路径(10分)
已知一个数组存放的是目录名字,要求组合成一个合法路径
比如:数组中存放的是 home qianfeng iOS
返回 /home/qiangfeng/iOS
*/
- (NSString *)joinPathOfComponents:(NSArray *)comp;
/*
4.用NSLog打印九九乘法表(10分)
*/
- (void)print99Table;
/*
5.将指定字符串逆序(10分)
比如:传入字符串@"iphone" 返回:@"enohpi"
传入字符串@"beautiful" 返回:@"lufituaeb"
*/
- (NSString *)reverseString:(NSString *)str;
/*6.
// 根据子数组中的内容删除原数组的相应的元素 (10分)
//已知数组中存放的都是字符串
比如:可变数组中存放的是:
@"shenzhen" @"iOS" @"beijing" @"OC" @"UI" @"shanghai"
子数组中存放的是:@"shenzhen" @"UI"
可变数组根据子数组中的内容 删除相应的元素
结果可变数组内容变为 @"iOS" @"beijing" @"OC" @"shanghai"
*/
- (void)handleArray:(NSMutableArray *)arr deleteSubArray:(NSArray *)subArr;
/*
7.判断是否是一个合法的手机号 (10分)
要求:手机号以1开头总共有11位 并且手机号中不能有除了数字以外的其他字符
比如: 13812345678 是手机号
188a1234567 不是手机号
01381234567 不是手机号
188123456789 不是手机号
18912345 不是手机号
*/
- (BOOL)isPhoneNumberOfString:(NSString *)phoneString;
/*
8. 把字符串中的字母大小写反转(10分)
//将s中每个字母大写变成小写,小写变成大写,其他字符不动。返回值是修改后的字符串
*/
- (NSString *)reversalUpperAndLowerForString:(NSString *)s;
/*
10. 查找子串出现次数(20分)
// 返回字符串s中出现子串subtsring的次数
*/
- (NSInteger)countOfSubstring:(NSString *)substring inString:(NSString *)s;
/*
11.
现有一个数组NSMutableArray,
数组有若干个NSString的元素,进行选择法排序(20分)
// 参数arr 表示数组对象地址
//参数 asc=YES 表示升序 asc=NO 表示降序
*/
- (void)selectionSort:(NSMutableArray *)arr andAsc:(BOOL)asc;
//12.传入一个数组,其元素类型与个数皆未知,返回新数组,由原数组的元素正序反序拼接而成。
//参数arr 表示原数组地址
//返回值是新数组的地址
//传入:@[@"one", @"Two", @"Three"]
//
//返回:@[@"one", @"Two", @"Three", @"Three", @"Two", @"one"]
//*/
+(NSArray *)symmetryArray:(NSArray *)arr;
/*13
已知一个字符串对象中,英语单词用各种非字母字符分割,统计单词的个数。
如,传入:"Yes, she*is%my@love.";
返回:5(15分)。
*/
+(NSInteger)countWord:(NSString *)string;
/*14
已知千锋邮箱的用户名只能由数字字母下滑线组成,域名为@1000phone.com,判断一个字符串是否是千锋邮箱,是,返回1,不是返回0。(15分)
[email protected] 是
[email protected] 不是
[email protected] 不是
*/
+(BOOL)is1000PhoneMail:(NSString *)str;
/*14
已知千锋邮箱的用户名只能由数字字母下滑线组成,域名为@1000phone.com,判断一个字符串是否是千锋邮箱,是,返回1,不是返回0。(15分)
[email protected] 是
[email protected] 不是
[email protected] 不是
*/
+(BOOL)is1000PhoneMail:(NSString *)str;
@end
#import "Test.h"
@implementation Test
- (NSUInteger)countOfWordInString:(NSString *)str
{
NSArray *array = [str componentsSeparatedByString:@" "];
return [array count];
}
- (NSString *)extensionOfFilePath:(NSString *)path
{
NSArray *array = [path componentsSeparatedByString:@"."];
return array[1];
}
- (NSString *)joinPathOfComponents:(NSArray *)comp
{
NSMutableString *strM = [[NSMutableString alloc] init];
for (NSString *str in comp) {
[strM appendFormat:@"/%@",str];
}
// 父类指针可以指向自类
NSString *strR = [NSString stringWithString:strM];
return strR;
// return strM;
}
- (void)print99Table
{
for (int i = 1; i < 10; i ++) {
NSMutableString *result = [[NSMutableString alloc] init];
for (int j = 1; j <= i; j ++) {
int s = i * j;
[result appendFormat:@"%d * %d = %d ",j,i,s];
}
NSLog(@"%@",result);
}
}
- (void)handleArray:(NSMutableArray *)arr deleteSubArray:(NSArray *)subArr
{
for (NSString *str in subArr) {
for (int i = 0; i < arr.count; i ++) {
if ([str isEqualToString:arr[i]]) {
[arr removeObject:arr[i]];
}
}
}
}
- (BOOL)isPhoneNumberOfString:(NSString *)phoneString
{
if (phoneString.length == 11 && [phoneString characterAtIndex:0] == '1') {// 以1开头,11位的字符串
for (int i = 0; i < 11; i ++) {
if ([phoneString characterAtIndex:i]< '0' || [phoneString characterAtIndex:i] > '9') {
return NO;
}
}
}else{
return NO;
}
return YES;
}
- (NSString *)reversalUpperAndLowerForString:(NSString *)s
{
NSMutableString *strM = [[NSMutableString alloc] init];
for (int i = 0; i < s.length; i ++) {
// 获取单个字符
unichar c = [s characterAtIndex:i];
// 判断当前字符的大小写并转换
if (c >= 'a' && c <= 'z') {//小写
// 小写转大写
c = c - 32;
}else if (c >= 'A' && c <= 'Z'){// 大写
// 大写转小写
c = c + 32;
}
// 存储更改完成的字符
[strM appendFormat:@"%c",c];
}
return strM;
}
- (NSInteger)countOfSubstring:(NSString *)substring inString:(NSString *)s
{
NSArray *array = [s componentsSeparatedByString:substring];
return [array count] - 1;
}
/*
11.
现有一个数组NSMutableArray,
数组有若干个NSString的元素,进行选择法排序(20分)
// 参数arr 表示数组对象地址
//参数 asc=YES 表示升序 asc=NO 表示降序
*/
- (void)selectionSort:(NSMutableArray *)arr andAsc:(BOOL)asc
{
if (asc) {//升序
for (int i = 0; i < [arr count] - 1; i ++) {
for (int j = i + 1; j < arr.count; j ++) {
if ([arr[i] compare:arr[j]]> 0) {
[arr exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
}else{ //降序
for (int i = 0; i < [arr count]; i ++) {
for (int j = i + 1; j < arr.count; j ++) {
if ([arr[i] compare:arr[j]] < 0) {
[arr exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
}
NSLog(@"%@",arr);
}
//12.传入一个数组,其元素类型与个数皆未知,返回新数组,由原数组的元素正序反序拼接而成。
//参数arr 表示原数组地址
//返回值是新数组的地址
//传入:@[@"one", @"Two", @"Three"]
//
//返回:@[@"one", @"Two", @"Three", @"Three", @"Two", @"one"]
//*/
+(NSArray *)symmetryArray:(NSArray *)arr
{
NSMutableArray *arrayM = [NSMutableArray arrayWithArray:arr];
NSEnumerator *enumerator = [arrayM reverseObjectEnumerator];
id obj;
while (obj = [enumerator nextObject]) {
[arrayM addObject:obj];
}
return arrayM;
}
/*13
已知一个字符串对象中,英语单词用各种非字母字符分割,统计单词的个数。
如,传入:"Yes, she*is%my@love.";
返回:5(15分)。
*/
+(NSInteger)countWord:(NSString *)string
{
// 1. 字母去切割
//用字母去切割,留下了字母符号和空(""); 并放入不可变数组中
NSArray *array = [string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"]];
// NSLog(@"%@",array);
// 2.获取除字母之外的符号
NSMutableString *strM = [[NSMutableString alloc] init];
for (NSString *str in array) {
if (![str isEqualToString:@""]) {
[strM appendString:str];
}
}
// 3. 根据符号切割字符串 存储到不可变数组当中
NSArray *arrayOne = [string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:strM]];
// 4. 去空和计算单词个数
NSInteger count = 0;
for (NSString *obj in arrayOne) {
if (![obj isEqualToString:@""]) {
count ++;
}
}
return count;
}
/*14
已知千锋邮箱的用户名只能由数字字母下滑线组成,域名为@1000phone.com,判断一个字符串是否是千锋邮箱,是,返回1,不是返回0。(15分)
[email protected] 是
[email protected] 不是
[email protected] 不是
*/
+(BOOL)is1000PhoneMail:(NSString *)str
{
if (![str hasSuffix:@"@1000phone.com"]) {
return NO;
}
NSString *subStr = [str substringToIndex:[str rangeOfString:@"@1000phone.com"].location];
for (int i = 0; i < subStr.length; i ++) {
unichar c = [subStr characterAtIndex:i];
if (!((c <= '9' && c >= '0') || (c >= 'a' && c <= 'z')|| (c <= 'Z' && c >= 'A') || (c == '_'))) {
return NO;
}
}
return YES;
}
@end