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;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值