您的位置:首页 > 其它

C10_动态内存分配练习

2015-07-14 19:59 288 查看
//

// MyFunction.h

// homeworkC10

//

// Created by dllo on 15/7/13.

// Copyright (c) 2015年 Clare. All rights reserved.

//

#import <Foundation/Foundation.h>

struct student{

float stuScore;

int stuAge;

char stuName[20];

char stuSex;
};
typedef
struct student Student;

//

// main.m

// homeworkC10

//

// Created by dllo on 15/7/13.

// Copyright (c) 2015年 Clare. All rights reserved.

//

#import <Foundation/Foundation.h>

#import "MyFunction.h"

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

// // 1.一个数组中有30个数(随机产生[0,30]),将数组中重复的数字去除,动态创建数组保存剩下的数字

int arr[30] = {};

for (int i =
0; i < 30; i++) {
arr[i] = arc4random() % (
30 + 1);
printf("%d ", arr[i]);
}
printf("\n");

int arr1[30] = {};

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

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

if (arr[i] == arr[j]) {
arr1[i] = -1;
printf("%d " ,arr[j]);

break;
}
else {
arr1[i] = arr[i];
}
}
}

int num = 0;

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

if (arr1[i] != -1) {
num++;
}
}

int *p = calloc(num,
sizeof(int));
num =
0;

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

if (arr1[i] != -1) {
p[num] = arr1[i];
num++;
}
}
printf("\n");

for (int i =
0; i < num ; i++) {
printf("%d ", p[i]);
}

// //2.已知一个数组20个元素(随机1到100之间包含1和100),求大于平均数的元素个数,并动态生成一个新数组保存(提示:malloc出20个元素保存).

// int *p = malloc(20 * sizeof(int));

// int num = 0, j = 0;

// int *pNew = malloc(num * sizeof(int));

// float aversum = 0;

// int sum = 0;

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

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

// printf("%d ", p[i]);

// }

// printf("\n");

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

// sum = sum + p[i];

// }

// aversum = sum / 20;

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

// if (p[i] >= aversum) {

// num++;

// pNew[j++] = p[i];

// }

// }

// for (int i = 0; i < num; i++) {

// printf("%d ",pNew[i]);

// }

// printf("\n");

// free(pNew);

// free(p);

// //3.输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值

// int length = 0;

// scanf("%d", &length);

// int *p = malloc(length * sizeof(int));

// for (int i = 0; i < length; i++) {

// p[i] = arc4random();

// p[i] = p[i] > p[i + 1] ? p[i] : p[i + 1];

// }

// printf("%d ", *p);

// free(p);

// //4.写一个学生类型的结构体,然后把学生类型的结构体变量保存在堆空间,然后找到成绩最好的那个学生(学生包含成绩,年龄,姓名,性别)

// Student per1 = { 82.5, 28, "zhangsan",'w'};

// Student per2 = { 77.5, 23, "lisi",'m'};

// Student per3 = { 93, 18, "wangwu",'w'};

// Student per4 = { 65, 26, "maliu",'m'};

// Student per[4] = {per1, per2, per3, per4};

// Student *p = malloc(4 * sizeof(Student));

// memcpy(p, per, 4 * sizeof(Student));

// float max = 0;

// for (int i = 0; i < 4; i++) {

// max = max > p[i].stuScore ? max : p[i].stuScore;

// }

// for (int j = 0; j < 4; j++) {

// if (max == p[j].stuScore) {

// printf("%g %d %s %c", p[j].stuScore, p[j].stuAge, p[j].stuName,p[j].stuSex);

// }

// }

// printf("\n");

// free(p);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: