函数递归?
99表
int main(int argc, const char * argv[])
{
// 外循环控制行数
for (int i = 1; i <=9; i++) {
// 内循环控制列数
for (int j = 1; j <= i; j++) {
// 输出结果
printf("%d * %d = %d\t", i, j, i*j);
}
// 换行
printf("\n");
}
return 0;
}
//写一个函数,如果找到返回key的索引,如果没有找到就返回-1
折半查找
int binarySearch(int array[],int length,int key)
{
int low = 0;
int high = length - 1;
while (low <= high) {
int mid = (low + high) / 2;
// 如果找到了就直接返回找到的索引(下标)
if (array[mid] == key) {
return mid;
}else if(array[mid] > key){
high = mid - 1;
}else{
low = mid + 1;
}
}
return -1;
}
编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
int main(int argc, const char * argv[])
{
int unit = 0; //个位
int decade = 0; //十位
int hundred = 0; //百位
int count = 0; //总个数
for (int i = 100; i < 1000; i++) {
unit = i%10;
decade = (i%100)/10;
hundred = i/100;
if (i == (hundredhundredhundred + decadedecadedecade + unitunitunit)) {
printf("%d\n", i);
count++;
}
}
printf("count = %d\n", count);
return 0;
}
6、用obj-c写一个冒泡排序 -(void)mySort:(NSMutableArray *)mutArray {
id tmpObj = nil;
unsigned long flag = mutArray.count-1;//flag :最大脚标 while (flag > 0) {
int k = flag;
flag = 0;
for (int j = 0 ; j < k ; j++) {
int order = NSOrderedAscending;// 或 NSOrderedDescending
if ([[mutArray[j] description] compare:[mutArray[j+1] description]] == -order) {
tmpObj = mutArray[j]; mutArray[j] = mutArray[j+1]; mutArray[j+1] = tmpObj; flag = j;
} }
} }
延伸:C语言的冒泡排序: (1)冒泡法对一维数组中的元素进行排序 void sort(int arr[],int arr_len)
{
for(int i=0;i<arr_len-1;i++)//外层循环 {
for(int j=0;j<arr_len-1-i;j++)//借助j实现一趟的次数 {
if(arr[j]>arr[j+1]) {
int temp=0; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp;
} }
} }
•什么是Runloop
*Runloop是程序启动后建立的一个主运行循环,保证程序不退出,而且还负责监听事件,如触摸,定时器、网络请求完成。
*没有事件时,进行休眠。
*有事件时,被唤醒,接收事件,找到最合适的处理对象。
•主线程和子线程的运行循环
1)主线程和子线程都有运行循环
2)主线程的运行循环是工作的 主线程中是有autoreleasepool的
3)使用GCD和NSOperation创建的线程会添加自动释放池
4)使用NSThread的线程不会自动添加autoreleasepool
NSThread和NSObject如果在后台创建了autorelease对象 "需要使用自动释放池 否则会出现内存泄漏",所以前面的代码要加上autoreleasespool
•NSObject的多线程方法注意事项
*NSObject的多线程方法使用的是NSThread的多线程技术
*而NSThread的多线程技术不会自动使用@autoreleasepool
*在使用NSObject或NSThread的多线程技术时,如果涉及到对象分配,需要手动添加@autoreleasepool
KVO - 即:Key-Value Observing
KVC NSKey Value Coding