ios学习记录 day4

作业:

1、打印1 - 100中不能被7整除又不包含7的数。

for (int i = 1;i < 101;i++){

  if(i % 7 != 0 && i / 10 != 7 && i % 10 != 7){

  printf("%2d    ",i);

  }

}

 

2、输入两个数,求最小公倍数和最大公约数。

int x = 0,y = 0,maxGY = 0,minGB = 0;

scanf("%d,%d",&x,&y);

for (int i = 1;i <= (x < y ? x : y);i++){

if(x % i == 0 && y % i == 0){

 maxGY = i;

 }

}

minGB = x * y / maxGY;

printf("最大公约数是%d,最小公倍数是%d\n",maxGY,minGB);


3、随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,第二大数。

    int max = 0,max2 = 0;
    for (int i = 0; i < 20; i++) {
        unsigned int k = arc4random() % (100 - 10 + 1) + 10;
        printf("%d  ",k);
        if (max < k) {
            max2 = max;
            max = k ;
        }else if (max2 < k){
            max2 = k;
        }
    }
    printf("最大值%d\n",max);
    printf("二大值%d\n",max2);

 

4、编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。

for(int i = 100;i < 1000;i++){

int gw = i % 10,sw = i /10 % 10,bw = i / 100;

if(gw*gw*gw+sw*sw*sw+bw*bw*bw == i){

printf("%d  ",i);

 }

}

(2)for (int i = 1;i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            for (int k = 0; k < 10; k++) {
                if (i*i*i + j*j*j + k*k*k == i * 100 + j * 10 + k) {
                    printf("%d ",i * 100 + j * 10 + k);
                }
            }
        }
    }
5、使用循环打印三角形
   *****
                                 _***
                                 __*
                                 _***
                                 *****

 (1) for (int i = 1; i < 3; i++) {
        for (int k = 1; k < i; k++) {
            printf("_");
        }
        for (int j = 5; j >= 2 * i - 1 ; j--) {
            printf("*");
        }
        printf("\n");
    }
    for (int i = 1; i < 4; i++) {
        for (int k = 3; k > i; k--) {
            printf("_");
        }
        for (int j = 1; j <= 2 * i - 1 ; j++) {
            printf("*");
        }
        printf("\n");
    }
(2)打印   *

            * *

           * * *

 for (int i = 0; i < 3; i++) {
        for (int k = 3; k > i + 1; k--) {
            printf(" ");
        }
        for (int j = 0; j < 2 * i + 1; j++) {
            if (j % 2 == 0) {
                printf("*");
            }else{
                printf(" ");
            }
        }
        printf("\n");
    }

 

 (3)  for (int i = 0 , a = 0 ,b = 2; i < 5; i++) {
        for (int j = 0; j < a + 1; j++) {
            printf("%3c",'*');
        }
        for (int j = 0; j < b * 2 - 1; j++) {
            printf("%3c",' ');
        }
        for (int j = 0; j < (5 - abs((b * 2 - 1))) / 2; j++) {
            printf("%3c",'*');
        }
        printf("\n");
        if (i < 2) {
            a++;
            b--;
        }
        else{
            a--;
            b++;
        }
    }//****输出横着的漏斗


6、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

char c = '\0';
    int zimu = 0,kongge = 0,shuzi = 0,qita = 0;
    while (c != '\n') {
        scanf("%c",&c);
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
            zimu ++;
        }else if (c == ' '){
            kongge ++;
        }else if (c >= '0' && c <= '9'){
            shuzi ++;
        }else{
            qita ++;
        }
    }
    printf("字母个数%d,空格个数%d,数字个数%d,其它字符个数%d\n",zimu,kongge,shuzi,qita);


7、求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。

    int n = 0,a = 0,an = 0,sn = 0;

    printf("输入位数n,数字a:");
    scanf("%d,%d",&n,&a);
    for (int i = 0; i < n; i++) {
        an = an * 10 + a;
        sn += an;

        if (i != n - 1) {
            printf("%d+",an);
        }else{
            printf("%d=",an);
        }
    }
    printf("%d\n",sn);

 

8、求1!+2!+3!+4!+..+20!

(1)long sum = 0,an = 1;
    for (int i = 1;i < 20 + 1;i++){
        an *= i;
        sum += an;
    }
    printf("%ld\n",sum);

(2 long sum1 = 1,sum2 = 0;
    for (int i = 1; i <= 20; i++) {
        sum1 = 1;
        for (int j = 1; j < i + 1; j++) {
            sum1 *= j;
        }
        sum2 += sum1;
    }
    printf("%ld\n",sum2);


9、一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?

    float height = 100,sum = 0;
    for (int i = 0; i < 10; i++) {
        sum += height * 2;
        height = height / 2;
    }
    sum -= 100;
    printf("经过的路径%f,第十次反弹%f\n",sum,height);

10、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。 

   (1) int x = 1;
    for (int i = 10; i > 1; i--) {
        x = (x + 1) * 2;
    }
    printf("第一次摘了%d个桃\n",x); 

(2)int x = 1;
    for (int i = 10; i > 0; i--) {
        printf("%d天剩%d个桃\n",i,x );
        x = (x + 1) * 2;
    }

(3)int x = 1;
    for (int i = 0; i < 10; i++) {
        printf("%d天剩%d个桃\n",10 - i,x );
        x = (x + 1) * 2;
    }

posted @ 2014-03-04 18:35  lxl奋小斗  阅读(263)  评论(0编辑  收藏  举报