ios学习记录 day12
练习:
MyFunction.h
#import <Foundation/Foundation.h>
struct sanguosha
{
char name[20];
int
age;
float fighting;
};
typedef struct sanguosha
SGS;
//1.定义一个用来记录学生信息结构体,结构体有三个成员变量:姓名,年龄以及成绩
struct stu
{
char name[20];
char
sex;
int
age;
};
//2.定义一个结构体Node,结构体内有两个成员变量,一个是一个int类型的变量(名字自己取),另一个是Node类型的指针
struct
Node {
int num;
struct Node *
p;
};
//5.
void fuzhi(struct stu * p,int count);
//6.
void
move(char * s);
void insert(char *s1,char *s2,int pos);
//
void
printStruct(SGS *
per);
//1.定义一个用来存放学生信息的结构体,该结构体包含姓名,年龄,语文成绩,数学成绩,英语成绩,总成绩,平均成绩
struct
student {
char name[20];
int
age;
float chinese;
float
math;
float english;
float
sum;
float avg;
};
typedef struct student
Stu;
void inputStudent(Stu * arr,int count);
void bubbleSort(Stu *
p,int count);
void avgStu(Stu * arr,int
count);
//8.定义一个结构体node,其中含有一个Stu和一个node类型的结构体指针p。定义两个node类型的变量a和b。要求a中的p指向b,b中的p指向a。
struct
node1{
Stu stu;
struct node1 *
p;//结构体指针
};
typedef struct node1 nod;
MyFunction.m
#import "MyFunction.h"
void printStruct(SGS *
per){
printf("%s\n%d\n%.2f\n",per->name,per->age,per->fighting);
}
//5.定义一个形参为指针类型的自定义函数,其功能是为第三题所定义的结构体数组赋值
void
fuzhi(struct stu * p,int count){
for (int i = 0; i <
count; i++) {
scanf("%s
%c,%d",p->name,&p->sex,&p->age);//name是数组不用加&,sex age
需要用&取出地址
p++;
}
}
//6、编写函数insert(char *s1,char *s2,int
pos),实现在字符串s1中的指定位置pos处插入字符串s2。(花了我1天的编程时间2010.3.12)
//HappyYear
//New
//7
//Happy
New
Year
//思路:
//1.s1字符串找第pos个位置
//2.将pos位置后的元素顺移动一位,插入s2字符串中一个元素
//3.接着插入直到s2字符串结束
void
move(char * s){
char * p = s;
int
length = 0;
while (*p != ‘\0‘)
{
p++;
length++;
}
for (int i = 0; i <
length; i++) {
*(p + 1) =
*p;//*p往后一位*p+1移动
p--;
}
}
void insert(char *s1,char *s2,int
pos){
char * p = s1;
for (int i = 0;
i < pos - 1; i++) {
p++;
}
char * pp =
s2;
while (*pp != ‘\0‘)
{
move(p);
p++;
*p =
*pp;
pp++;
}
}
//4.定义一个函数用来实现对第二题定义数组中的内容赋值,形参为指针类型
void inputStudent(Stu *
arr,int count){
for (int i = 0; i <count; i++)
{
scanf("%d",&arr[i].age);
scanf("%s",arr[i].name);
scanf("%f",&arr[i].chinese);
scanf("%f",&arr[i].math);
scanf("%f",&arr[i].english);
}
}
//5.定义并实现一个函数,其功能为按照年龄从小到大的顺序为第二题定义的数组排序,形参为指针类型
void
bubbleSort(Stu * arr,int count){
for (int i = 0; i <
count - 1; i++) {
for (int j = 0;
j < count - i - 1; j++)
{
if
(arr[j].age > arr[j + 1].age)
{
Stu temp =
arr[j];
arr[j] = arr[j +
1];
arr[j + 1] =
temp;
}
}
}
}
//6.定义并实现一个函数,其功能为为第二题定义的数组中的每一个元素求出平均值
void avgStu(Stu * arr,int
count){//arr是结构体数组名,count是人数
for (int i = 0; i < count;
i++) {
arr[i].avg =
(arr[i].chinese + arr[i].english + arr[i].math) / 3.0;
}
}
//7.定义并实现一个函数,其功能为打印第二题中定义结构体的所有元素,参数类型为指针类型
void printStudent(Stu
* arr,int count){//数组基本形参里有个count
for (int i = 0; i <
count; i++) {
printf("%s\n%d\n%.2f\n%.2f\n%.2f\n%.2f\n%.2f\n",arr[i].name,arr[i].age,arr[i].chinese,arr[i].english,arr[i].math,arr[i].sum,arr[i].avg);
}
}
main.m
#import <Foundation/Foundation.h>
#import "MyFunction.h"
int
main(int argc, const char * argv[])
{
SGS per1 =
{"guansheng",33,39};
SGS per2 =
{"linchong",43,79};
SGS per3 =
{"qinming",53,69};
SGS per4 =
{"huyanzhuo",44,59};
SGS per5 =
{"dongping",33,89};
SGS per[5] =
{per1,per2,per3,per4,per5};
SGS * p =
per;
printf("%s\n",(p + 1)->name);//
p[1].name
printStruct(p + 4);
//3.定义一个长度为10的学生信息结构体数组
struct stu xuesheng[10]
= {"",‘ ‘,0};
//4.定义一个结构体指针,指向上一题的结构体数组
struct stu * pp
= xuesheng;
//5.
fuzhi(pp,3);
for (int i = 0; i < 3; i++)
{
printf("%s,%c,%d\n",pp->name,pp->sex,pp->age);
pp++;
}
//6.
char s1[] =
"HappyYear";
char s2[]=" New ";
insert(s1, s2, 5);
printf("%s\n",s1);
//2.定义一个长度为10的结构体(第一题定义的结构体)数组
Stu stu[10] =
{0};
//3.定义一个结构体指针指向上题所定义的结构体数组
Stu * p =
stu;
//4.
inputStudent(p,
10);//intputStudent(stu,10);
//5.
bubbleSort(p,
10);//bubbleSort(stu, 10);
//6.
avgStu(p,
10);//avgStu(stu,10);
//8.
nod a =
{0};
nod b = {0};
a.p =
&b;
b.p = &a;
return 0;
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。