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