2012年1月29日 星期日

「學會Objective-C的24堂課」Ch12習題解答

答案如果有錯誤或有更好的方法,歡迎留言討論喔!

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{

    @autoreleasepool {
        
        //***********************ch12-hw1產生不重複亂數******************************
        srand((unsigned) time(NULL));
        int ran[6];
        bool isSame;
        for (int i=0; i<6; i++) 
        {
            do
            {
                ran[i]=rand()%49+1;
                isSame=false;
                for (int j=0; j<i; j++) 
                {
                    if (ran[i]==ran[j])
                    {
                        isSame=TRUE;
                        break;
                    }
                }
                    
            }while(isSame);
            
            printf("#%i:%i\n",i+1, ran[i]);
        }
        
        //***********************ch12-hw2產生亂數並找出質數******************************
        
        //取亂數
        printf("\nhw2:\n");
        int ran2[100],primeNumber=0;
        for (int i=0; i<100; i++) {
            
            ran2[i]=rand()%1000+1;
            printf("%5i",ran2[i]);
        
        }
        
        //找質數
        printf("\n");
        for (int i=0; i<100; i++) {
    
            bool isPrime=true;
            for (int x=2; x<ran2[i]; x++) {
            if (ran2[i]%x==0) {
                isPrime=false;
                }
            }
            if (isPrime) {
            primeNumber++;
            printf("%i個質數是:%4i\n",primeNumber,ran2[i]);
            }
        }
           
        
    }
    return 0;

}


2012年1月23日 星期一

「學會Objective-C的24堂課」Ch8習題解答

答案如果有錯誤或有更好的方法,歡迎留言討論喔!

#import <Foundation/Foundation.h>

//*******************ch8-hw1*******************************
//修改後的bubblesort
void bubble_sort(int data[],int n);
void printData(int data[], int n);

int main (int argc, const char * argv[])
{

    @autoreleasepool {
        
        int data[]={81,58,23,72,43};
        
        //印出資料
        printf("Unsorted data:");
        printData(data, 5);
        
        //氣泡排序
        bubble_sort(data, 5);
        
        //印出排序資料
        printf("排序完成:");
        printData(data, 5);
    }
    return 0;
}

void bubble_sort(int data[],int n)
{
    int i, j , temp, flag;
    
    //n-1pass
    for (i=0; i<n-1; i++) {
        flag=0;//輔助判斷資料是否對調
        //共有n-i-1compare
        for (j=0; j<n-i-1; j++) {
            if (data[j] > data[j+1]) {
                flag=1;
                //資料對調
                temp=data[j];
                data[j]=data[j+1];
                data[j+1]=temp;
                
                printf("After #%i-%i compare: ",i+1,j+1);
                printData(data, 5);
                
            }
        }
        printf("After #%i pass: ",i+1);
        printData(data, 5);

        
        //flag!=1時,表示資料已排序
        if (flag!=1) {
            break;
        }
        
    }
}

void printData(int data[],int n){
    
    //印出資料
    for (int i=0; i<n; i++) {
        printf("%4i",data[i]);
    }
    printf("\n\n");
    
}

2012年1月21日 星期六

推薦Objective-C入門好書「學會Objective-C的24堂課」

這本書非常適合沒有什麼程式開發經驗的人(像是我),
書裡用的文字淺顯易懂,觀念解釋條理清晰,搭配適當的例子,讓Objective-C學起來非常容易。
每章節最後搭配適當的習題,可以馬上測試自己的學習成果,可惜沒有附解答。
我會挑一些習題練習,並把答案附在這個網誌上,答案不一定完全正確。

書本購買連結:
博客來
pc home

「學會Objective-C的24堂課」Ch7習題解答

答案如果有錯誤或有更好的方法,歡迎留言討論喔!
//用printStar函式印出星星
// ****************ch7-hw1**********************
void printStar();

int main (int argc, const char * argv[])
{

    @autoreleasepool {
        

        int starQuantity;
        NSLog(@"請輸入想要幾顆星星:");
        scanf("%i", &starQuantity);
        
        printStar(starQuantity);
        for (int i=1; i<=9; i++) {
            for (int j=1; j<=9; j++) {
                printf("%i*%i=%2i ",j,i,j*i);
            }
            printf("\n");
        }
        printStar(starQuantity);
        
    }
    return 0;
}

void printStar(int starQuantity){
    for (int i = 1 ; i<=starQuantity; i++) {
        printf("*");
    }
    printf("\n");
}

// ****************ch7-hw2**********************
//double total;應改為int total;

2012年1月20日 星期五

「學會Objective-C的24堂課」Ch6習題解答

答案如果有錯誤或有更好的方法,歡迎留言討論喔!


        //不定數迴圈練習
        //********************ch6-hw1********************************
        int i=1, num, even=0, odd=0;
        while (1) {
            NSLog(@"\n#%i:請輸入一個整數,輸入0則結束:", i);
            scanf("%i", &num);
            i++;
            if (num==0) {
                break;
            }
            else if (num%2==0){
                even++;
            }
            else{
                odd++;
            }
            }
        NSLog(@"共輸入偶數有%i個,奇數有%i",even,odd);

「學會Objective-C的24堂課」Ch5習題解答

答案如果有錯誤或有更好的方法,歡迎留言討論喔!
        

        //找出500以內的所有質數
        //****************hw1***********************
        int x,y;
       
        for (x=2; x<=500; x++) {
             bool isPrime=true;
            for (y=2; y<x; y++) {
                if (x%y==0) {
                    isPrime=false;
                }
            }
            if (isPrime) {
                printf("%4i",x);
            }
        }
        
        //兩個分數相加,並約分
        //****************hw2***********************
        int a1, a2, b1, b2,c1,c2;
        NSLog(@"請輸入第1個分數(ex:分子/分母)");
        scanf("%i/%i", &a1, &a2);
        NSLog(@"請輸入第2個分數(ex:分子/分母)");
        scanf("%i/%i", &b1, &b2);
        
        c1=a1*b2+a2*b1;
        c2=a2*b2;
        
        int u=c2, v=c1, temp;
        while (v!=0) {
            temp=u%v;
            u=v;
            v=temp;
        }
        c1/=u;
        c2/=u;
        printf("%i/%i", c1, c2);

        

Hello, world!

在這裡,我將留下我的學習過程與心得!