// main.m
// C6– 函数多文件管理
//
// Created by dllo on 15/7/7.
// Copyright (c) 2015年 Gaozi. All rights reserved.
//
import
import “MyFunction.h”
//. 函数的定义 分四种形式.
//位置:在主函数的上面,#import的下面.
// 1 . 无返回值,无参数.
// 第一部分:void – 没有返回值.
// 买菜功能
// 第二部分:函数名,起名原则与变量名一样.
// 第三部分:参数
// 全局变量.
int g = 10;
void textnum(){
printf(“%d\n”,g);
}
// 数组作为参数进行传递
// 第一部分: 传第一个数组名,可以不写长度.
//第二部分:需要执行一个数组的有效长度.
void printArr(int arr[],int count){
for (int i = 0; i < count; i++) {
printf(“%d “,arr[i]);
}
printf(“\n”);
}
// 通过函数对一维数组冒泡
void bubblesort(int arr[], int count){
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int sumnum(int a, int b){
return a+b ;
}
int main(int argc, const char * argv[]) {
g++;
printf("%d\n",g);
textnum(); / g不安全谁都可以改变.
// 传递整个数组
int arr[5] = {1,2,3,4,5};
printf("%p\n",arr);
printf("%p\n",&arr[0]);
printf("%p\n",&arr[1]);
printf("%p\n",&arr[2]);
// 打印出0x7fff5fbff780--- 占区?(堆区,全静态区,常量区,代码区)
// & 取地址.
int arr[5] = {12, 22, 23, 24, 25};
printf("%ld\n",sizeof(arr));
printArr(arr, sizeof(arr)/sizeof(int));//防止long类型4或8节.
printArr(arr, 5);
// 冒泡
int arr[6] = {21,12,54,78,124,96};
bubblesort(arr, 6);
for (int i = 0; i < 6; i++) {
printf(“%d “,arr[i]);
}printf(“\n”);
// 多文件的时候,函数调用还是用函数名来进行.
printf(“%d\n”,sumvaule(100));
dayofyear(2015, 5, 12);
printf(“中间数为%d\n”,midnum(45, 56, 12)) ;
printf(“有 %d 位.\n”,numindex(2345));
numtwo(5,2);
int arr[9] = {11,6,4,8,9,17,79,51,45};
// 调用两个函数,排序和打印.
bubbleSort(arr,9);
printArr(arr,9);
// 就是节省代码,提高代码的重用.
//回文串.
if (palindrome(“lalakalal”)) {
printf(“是回文\n”);
}else{
printf(“不是回文\n”);
}
printf(“%d\n”,maxnum(20, 30));
text();
printf(“%d\n”,factorialNum(5));
int arr[5] = {2,6,4,9,7};
// 1.如果数组中有9这个数字,把这个数字变成100,并且把这个下表返回,没有的话返回5.
;
printf(“%d\n”,checkArr(arr, 5, 9));
return 0;
}
//
// MyFunction.h
// C6– 函数多文件管理
//
// Created by dllo on 15/7/7.
// Copyright (c) 2015年 Gaozi. All rights reserved.
//
import
import “MyFunction.h”
// 在.m 文件中写相应的函数的定义.
int sumvaule(int n){
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
// dayof year
void dayofyear(int year, int month, int day){
switch (month - 1) {
case 11:
day += 30;
case 10:
day += 31;
case 9:
day += 30;
case 8:
day += 31;
case 7:
day += 31;
case 6:
day += 30;
case 5:
day += 31;
case 4:
day += 30;
case 3:
day += 31;
case 2:
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
day += 29;
}else{
day += 28;
}
case 1:
day += 31;
}
printf(“是第%d天\n”,day);
}
int midnum(int a, int b, int c){
int max = a > b ? a : b;
max = max > c ? max : c;
int min = a < b ? a : b;
min = min < c ? min : c;
int mid = a + b + c - max - min;
return mid;
}
int numindex(int n){
int index = 0;
for (int i = 1; i > 0; i=i*10) {
if (n % i != n) {
index++;
}else{
break;
}
}
return index;
}
void numtwo(int num1, int num2){
int add = 0, sub = 0, mul = 0;
float div = 0;
add = num1 + num2;
sub = num1 - num2;
mul = num1 * num2;
div = num1 / num2 + (num1 % num2)/num2;
printf(“两个数和为%d\n”,add);
printf(“两个数差为%d\n”,sub);
printf(“两个数积为%d\n”,mul);
printf(“两个数商为%g\n”,div);
}
void bubbleSort(int arr[], int count){
for (int i = 0; i < count - 1; i++) {
for (int j= 0 ; j < count - i - 1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void printArr(int arr[], int count){
for (int i = 0; i < count; i++) {
printf(“%d “,arr[i]);
}
printf(“\n”);
}
BOOL palindrome(char str[]){
for (int i = 0; i < strlen(str)/2; i++) {
if (str[i] != str[strlen(str) - i - 1]) {
return NO;
}
}
return YES;
}
// 两个数中较大值,并返回.
int maxnum(int a, int b){
return a > b ? a : b;
}
int maxbig(int a, int b, int c){
//函数的嵌套调用.
int max =maxnum(a, b);
max = maxnum(max,c);
return max;
}
int maxfour(int a, int b, int c, int d){
int max = maxbig(a, b, c);
max = maxnum(max, d);
return max;
}
int maxfive(int a, int b, int c, int d, int e){
int max = maxfour(a, b, c, d);
max = maxnum(max, e);
return max;
}
// 如果写递归的话,一定要注意,在自己调用自己的时候一定要给程序留一个结束的出口.
void text(){
text();
}
int factorialNum(int n){
// 首先给函数找一个结束的出口.
if(n == 1){
return 1;
}
return factorialNum(n - 1) * n;
}
int checkArr(int arr[],int count, int num){
for (int i = 0; i < count; i++) {
if (arr[i] == num) {
arr[i] = 100;
return i;
}
}
return 5;
}