任务09_1
根据已知的数据结构和main函数,完成create、sort和visit函数,严格按照运行效果进行数据的输入和输出,数据结构如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
int no;
char name[15];
int score;
}STU;
create、sort、visit和main函数如下:
STU * create(int n)//创建数组
{
}
void sort(STU *a,int n)//排序
{
}
void visit(STU*p,int len)//遍历
{
}
int main(void)
{
STU *arr;
int num;
scanf("%d",&num);
arr=create(num);
visit(arr,num);
sort(arr,num);
visit(arr,num);
return 0;
}
编程要求:
- 只能需要实现create、sort、visit这三个函数的函数体,其他不允许修改;
- 严格按照输入输出效果;
- 任务提交代码时需保证其符合行业代码规范,需进行必要的缩进及换行。(影响成绩评定)
运行效果举例:
输入举例:
4
101
chen
77
102
liu
99
103
zhang
85
104
zhao
65
输出效果:
no:101,name:chen,score:77
no:102,name:liu,score:99
no:103,name:zhang,score:85
no:104,name:zhao,score:65
no:104,name:zhao,score:65
no:101,name:chen,score:77
no:103,name:zhang,score:85
no:102,name:liu,score:99
这道题还是比较简单的,注意地址如果是几个变量相加的形式,那就不能够放在表达式的左边,不能够作为左值。这时需要利用取址来进行值的交换。
代码
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
int no;
char name[15];
int score;
}STU;
STU * create(int n)//创建数组
{
int i;
STU *p=(STU *)malloc(n*sizeof(STU));//指向数组首元素
if(p==NULL)
printf("内存分配失败!\n");
else
{
for(i=0;i<n;i++)
{
scanf("%d",&(p+i)->no);
scanf("%s",(p+i)->name);
scanf("%d",&(p+i)->score);
}
}
return p;
}
void sort(STU *a,int n)//排序
{