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