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;
}
// 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;
}
相关文章推荐
- HTTP POST GET 本质区别详解
- 理解RESTful架构
- HDNOIP201404最短路径
- 简单枚举的例子:生理周期
- Shell dev-null详解
- 后缀数组小结
- #Shell脚本 -- 由json文件生成sql
- LeetCode题解——3Sum Closest
- Ubuntu adb 找不到设备的解决方法
- mongodb实践
- shell脚本编程之“最简单的死循环”
- 【java】Thread类和Runnable接口
- [SHELL]监控LINUX目录文件变化
- 字典与model
- [LeetCode][Java] Rotate Image
- C10_动态内存分配
- 云计算和大数据时代网络技术揭秘(二)云与网的关系
- ssh连接远程主机执行脚本的环境变量问题
- cf dp B. Maximum Submatrix 2
- C语言--程序设计基础——4、5章