Day11_c语言_内存练习

//

//  main.m

//  Day11_内存

//

//  Created by 王佳兴 on 14-10-28.

//  Copyright (c) 2014 lanou3g.com 蓝鸥科技. All rights reserved.

//


#import <Foundation/Foundation.h>


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

    

1. (**)输入一个数组长度,动态创建数组,所有元素随机生成,输出元素

    中的最大值

    printf("请输入数组的长度:\n");

    int size;

    scanf("%d", &size);

    char *array = malloc(sizeof(int) * size);

    for (int i = 0; i < size; i++ ) {

        array[i] = arc4random() % 50;

        printf("%d ", array[i]);

    }

    printf("\n");

    int temp = 0;

    for (int i = 0; i < size; i++) {

        if (array[i] > temp) {

            temp = array[i];

        }

    }

    printf("最大值为:%d\n", temp);

    

    

    

2. (***)已知一个数组 20 个元素(随机 1 100 之间包含 1 100),求大

    于平均数的元素个数,并动态生成一个新数组保存(提示:malloc 20 个元素保存)

    int *str = malloc(sizeof(int) * 20);

    int sum = 0;

    for (int i = 0; i < 20; i++) {

        str[i] = arc4random() % (100 - 1 + 1) + 1;

        printf("%d ", str[i]);

        sum += str[i];

    }

    printf("\n");

    int avg = sum / 20;

    printf("sum is %d\n", sum);

    printf("avg is %d\n", avg);

    int temp = 0;

    for (int i = 0; i < 20; i++) {

        if (str[i] > avg) {

            temp++;

        }

    }

    printf("temp is %d\n", temp);

    int *stu = malloc(sizeof(int) * temp);

    int j = 0;

    for (int i = 0; i < 20; i++) {

        if (str[i] > avg) {

            stu[j] = str[i];

            printf("%d ", stu[j]);

            j++;

        }

    }

    printf("\n");

    

    


3. (****)有一段文本,将文本中的所有单词,存放到一个字符串数组中。 (要求占用内存最少)

    char *array = "There are 5 sb in my class, one of them is yy";

    printf("%s\n", array);

    char *temp = array;

    int sum1 = 0;

    int sum2 = 0;

    while (*temp != '\0') {

            sum1++;

            temp++;

    }

    while (*temp != '\0') {

        if ((*temp >= 'a' && *temp <= 'z') || (*temp >= 'A' && *temp <= 'Z')) {

            sum2++;

            temp++;

        }

    }

    char *dest = malloc(sizeof(char) * sum2 + 1);

    int j = 0;

    for (int i = 0; i < sum1; i++) {

        if ((array[i] >= 'a' && array[i] <= 'z') || (array[i] >= 'A' && array[i] <= 'Z')) {

            dest[j] = array[i];

            

            j++;

        }

    }

    printf("%s\n", dest);

    return 0;

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值