字符串數組、預處理、多文件編程

1、字符串數組

多個字符串構成的集合
存儲方式
    二維字符數組
    字符指針數組
一次從鍵盤 輸入多個字符串是時,需要使用二維字符數組來接收
        char str[5][5] = {"aaa","bbb","ccc","ddd","eee"};


        char* str1[5] = {"aaa","bbb","ccc","ddd","eee"};
        //從鍵盤輸入三個人的名字然後將其輸出
        char name[3][100];
        for (int i = 0; i < 3; i ++) {
            NSLog(@"請輸入第%d個人的名字",i+1);
            scanf("%s",name[i]);
        }
        NSLog(@"這三個人是:");
        for (int i = 0; i < 3; i ++) {
            printf("%s\n",name[i]);
        }

2、預處理

在編譯之前對源程序進行的處理工作
import:將其後的.h文件包含進來
    <>:直接到系統文件夾中找要包含的.h文件
    “”:先到工程文件夾中找.h文件,如果沒有再到系統文件夾中找
宏:本質上是一種替換操作
    無參宏,也叫作宏常量、宏指令
    帶參宏,宏函數
    帶參宏的使用注意事項
#import <Foundation/Foundation.h>
#define MIN(x,y)(x<y?x:y)
#define IS_ODD(x)(x%2!=0)
#define LOWER(ch)(ch>=65&&ch<90?ch+32:ch)
#define PRINT(a,b) printf(#a"=%d,"#b"=%d\n",a,b);

int main()
{
    @autoreleasepool {
        NSLog(@"%d",MIN(3,5));
        if (IS_ODD(55)) {
            NSLog(@"YES");
        }
        int a;
        NSLog(@"請輸入一個整數");
        scanf("%d",&a);
        if (IS_ODD(a)) {
            NSLog(@"YES");
        }
        else
            NSLog(@"NO");
        NSLog(@"%c",LOWER('D'));
        PRINT(3,5);
    }
    return 0;
}
條件編譯指令
#import <Foundation/Foundation.h>

#define SQUARE(x) ((x)*(x))
#define SUM(x,y) ((x)+(y))
#define SWAP(T,x,y) {T (t) = (x);(x)=(y);(y)=(t);}
#define MAX(x,y) ((x)>(y)?(x):(y))
int main()
{
    @autoreleasepool {
        //宏函數中的參數一定要用括號括起來,以防止替換後的優先級問題
        NSLog(@"%d",SQUARE(5));
        NSLog(@"%d",SQUARE(2+3));

        //宏函數中的整個表達式也需要用括號括起來,以防止替換後的優先級問題
        NSLog(@"%d",SUM(1, 1));
        NSLog(@"%d",SUM(2, 3)*5);

        //宏函數中有多條語句時,應寫成複合語句,以防止變量重定義
        int a = 10;
        int b = 20;
        NSLog(@"a = %d b = %d",a,b);
        SWAP(int,a,b);
        NSLog(@"a = %d b = %d",a,b);
        a = 30;
        b = 40;
        SWAP(int, a, b);
        NSLog(@"a = %d b = %d",a,b);

        //調用宏函數時,不要用++、--作爲實參
        a = 3;
        b = 4;
        NSLog(@"a = %d b = %d %d",a,b,MAX(++a,++b));

    }
    return 0;
}
#import <Foundation/Foundation.h>

#define DEBUG1 0
#define IA64
#define IA32

int main()
{
    @autoreleasepool {
        int sum = 0;
        for (int i = 1; i <= 100; i ++) {
            sum += i;
#if DEBUG1
            NSLog(@"i = %d sum = %d",i,sum);
#endif
        }
        NSLog(@"sum = %d",sum);

#ifdef IA64
        NSLog(@"系統是64位的");
#else
        NSLog(@"系統是32位的");
#endif


#ifndef IA32
        NSLog(@"系統是64位的");
#else
        NSLog(@"系統是32位的");
#endif


#ifdef LLVM4
        NSLog(@"LLVM4.0");
#elseif defined LLVM3
        NSLog(@"LLVM3.0");
#elseif defined LLVM2
        NSLog(@"LLVM2.0");
#endif

#undef IA32 
#ifndef IA32
        NSLog(@"系統是64位的");
#else
        NSLog(@"系統是32位的");
#endif
    }
    return 0;
}

3、多文件編程

每日一練
用多文件(4個人)編程方式打印如下圖形
圖形

zhangsan:

#ifndef exe_zhangsan_h
#define exe_zhangsan_h

void printStar(int n);

#endif /* exe_zhangsan_h */
#import <Foundation/Foundation.h>
void printStar(int n)
{
    for (int i = 0; i < n; i ++) {
        printf("*");
    }
}

lisi:

#ifndef exe_lisi_h
#define exe_lisi_h

void printSpace(int n);

#endif /* exe_lisi_h */
#import <Foundation/Foundation.h>
void printSpace(int n)
{
    for (int i = 0; i < n; i ++) {
        printf(" ");
    }
}

wangwu:

#ifndef exe_wangwu_h
#define exe_wangwu_h

void Test1(int n);

#endif /* exe_wangwu_h */
#import <Foundation/Foundation.h>
#import "exe_zhangsan.h"
#import "exe_lisi.h"

void Test1(int n)
{
    for (int k = n; k >= 1; k--) {
        printStar(1);
        printSpace(2*(k - 1)-1);
        if(k != 1)
            printStar(1);
        printf("\n");
    }
}

zhaoliu:

#ifndef exe_zhaoliu_h
#define exe_zhaoliu_h

void Test2(int n);

#endif /* exe_zhaoliu_h */
#import <Foundation/Foundation.h>
#import "exe_zhangsan.h"
#import "exe_lisi.h"
void Test2(int n)
{
    for (int k = 1,j = n; k <= n; k ++,j--) {//n層
        printSpace(2*j-1);//前面的空格
        printStar(1);//第一個星
        printSpace(2*(k - 1)-1);//中間的空格
        printSpace(2*(k - 1));
        if (k > 1) {
            printStar(1);//後面的星
        }
        printf("\n");
    }
}

main:

#import <Foundation/Foundation.h>
#import "exe_zhangsan.h"
#import "exe_lisi.h"
#import "exe_wangwu.h"
#import "exe_zhaoliu.h"
int main()
{
    @autoreleasepool {
        Test1(10);
        printf("----------------\n");
        Test2(10);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章