iOS開發-Day3-C的複習

複習c的循環控制(while();for();do)Xcode的調試方法,以及隨機數生成得一些問題,下面是實例和一些說明:

1、關於while與do while的細微區別:當控制條件爲0時,執行次數不一樣

2、break和continue

3、Xcode的調試:先加入斷點,lidb中可以用 po var輸出當前某變量的值

4、關於隨機數:

rand()無法真正的生成隨機數,因此可以使用下面兩種:

a、OC中可以使用

arc4random();

方法生成隨機數


b、根據time得出不同種子後生成隨機數

srand((unsigned)time(NULL));

5、今天的一些練習

//
//  main.m
//  C03
//
//  Created by 嚴誠 on 15/7/16.
//  Copyright (c) 2015年 嚴誠. All rights reserved.
//

#import <Foundation/Foundation.h>

int count100(){
    int i,result=0;
    for (i=0;i<100 ; i++) {
        result=result+i;
    }
    printf("%d",result);
    return 0;
}
void count13(){
    int i,result=0;
    for (i=0;i<100;i++){
        if (i%13==0) {
            result=result+i;
        }
    }
    printf("%d",result);
}
void print1to3(){
    int i=1;
    for (i=1; i<4; i++) {
        printf("%d ",i);
    }
}
void print1to33(){
    int i=1,j=1;
    for (j=1; j<4; j++){
        for (i=1; i<4; i++) {
            printf("%d ",i);
        }
        printf("\n");
    }
}
void print1to333(){
    int i=1,j=1;
    for (j=1; j<4; j++){
        for (i=1; i<=j; i++) {
            printf("%d ",i);
        }
        printf("\n");
    }
}
void print1to3333(){
    int i=1,j=1;
    for (j=1; j<4; j++){
        for (i=1; i<=j; i++) {
            printf("%d ",i);
            printf("%d ",j);
        }
        printf("\n");
    }
}

void printMultTable(){
    int i=1,j=1;
    for (j=1; j<=9; j++){
        for (i=1; i<=j; i++) {
            printf("%d*%d=%d  ",i,j,i*j);
            
        }
        printf("\n");
    }
}
void countNum(){
    int count=0;
    int num;
    printf("輸入一個整數");
    scanf("%d",&num);
    do{
        num = num/10;
        count++;
    }while (num);
    printf("位數爲%d",count);
}

//1、打印1 - 100中不能被7整除又不包含7的數。
void print7(){
    int i;
    for (i=1; i<=100; i++) {
        int j=i/10;
        int k=i%10;
        if (i%7!=0&&j!=7&&k!=7) {
           printf("%d  ",i);
        }
        
    }
}
/*2、輸入兩個數,求最大公約數和最小公倍數。(最大公約數,最大可以對兩個整數約分的數字)
 //    任意取出一個數,減減。兩個數對當前數取模爲0,則是最大公約數。
         提示:先找出最大公約數,兩個數的乘積除以最大公約數就是最小公倍數。*/
void divisor(){
    int a,b;
    printf("輸入兩個數,逗號分隔");
    scanf("%d,%d",&a,&b);
    int max,min;
    if(a>=b) {
        max=a;
        min=b;
    }else{
        max=b;
        min=a;
    }
    int temp;
    while(min){
        temp=max%min;
        max=min;
        min=temp;
    }
    min=a*b/max;
    printf("%d %d",max,min);
}
//3、隨機產生20個[10 , 100]的正整數,輸出這些數以及他們中的最大數
void print20(){
    int a[19],temp;
    for (int i=0; i<=19; i++) {
        a[i]=(arc4random()%90)+10;
    }
    for (int i=0; i<=19; i++) {
        printf("%d ",a[i]);
    }
    printf("\n");
    for(int j=0;j<=19;j++)
    {
        for (int i=0;i<20-j;i++)
        if (a[i]>a[i+1])
        {
            temp=a[i];
            a[i]=a[i+1];
            a[i+1]=temp;
        }
    }
        printf("%d ",a[19]);
    


}

//4、編程將所有“水仙花數”打印出來,並打印其總個數。 “水仙花數”是一個各個位立方之和等於該整數的三位數。
void shuixian(){
    for (int i=100; i<1000; i++) {
        int a,b,c;
        a=i/100;
        b=i%100/10;
        c=i%10;
        if (a*a*a+b*b*b+c*c*c==i) {
            printf("%d %d %d %d\n",a,b,c,i);
        }
    }
}
// 5、使用循環打印三角形
////  *
//    **
//    ***
//    ****
//    *****
void Tr(){
    for (int i=1; i<=5; i++) {
        for (int j=1; j<=i; j++) {
            printf("*");
        }
        printf("\n");
    }
}
//6、編寫程序,找出用戶輸入的一串數中的最大數。程序需要提示用戶一個一個地輸入。當用戶輸入0或負數時,程序必須顯示出已輸入的最大非負數。
void test0(){
    int a[100];
    int temp,count=0;
    for (int i=0; ;i++ ) {
        printf("輸入一個數字");
        scanf("%d",&a[i]);
        count++;
        if(a[i]<=0){
        for(int j=0;j<=count;j++)
        {
            for (int i=0;i<count-j;i++)
                if (a[i]>a[i+1])
                {
                    temp=a[i];
                    a[i]=a[i+1];
                    a[i+1]=temp;
                }
        }printf("%d",a[count]);
        }

    }
}
//7、求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一個數字,n表示a的位數例如:2+22+222+2222+22222(此時n=5),n和a都從鍵盤輸入。
void suma(){
    int a,n;
    int sum=0;
    printf("輸入兩個數,逗號分隔");
    scanf("%d,%d",&a,&n);
    for (int i=1;i<=n ; i++) {
        sum+=sum*10+a;
    }
    
    printf("累加結果爲%d",sum);
}
//8、求1!+2!+3!+4!+..+20!
void sumX(){
    long int sum=1,result=0;
    for (int i=1;i<=20;i++) {
        sum=sum*i;
        result+=sum;
    }
    printf("%ld\n",result);
}
//9、一個球從100m高度自由落下,每次落地後反跳回原來高度的一半,再落下,再反彈。求它在第10次落地時,共經過多少米?第10次反彈多高?
void hight(){
    float hight=100,sum=100;
    for (int i=1; i<=10; i++) {
        hight=hight*0.5;
        sum=sum+hight*2;
    }
    sum-=hight*2;
    printf("%f %f\n",hight,sum);
}
//10、猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃一個。以後每天    早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,就只剩一個桃子了。求第一天共摘多少個桃子.
void monkey(){
    long int count=1;
    for (int n=2; n<=10;n++) {
        count=(count+1)*2;
    }
    printf("%ld",count);
    
}


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //count100();
        //count13();
        //print1to3();
        //print1to33();
        //print1to333();
        //print1to3333();
        //printMultTable();
        //countNum();
        //print7();
        //divisor();
        //print20();
        //shuixian();
        //Tr();
        //test0();
        //suma();
        sumX();
        hight();
        //monkey();
    }
    return 0;
}



發佈了38 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章