新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
/*接上一楼*/
创新互联是一家集网站建设,新和企业网站建设,新和品牌网站建设,网站定制,新和网站建设报价,网络营销,网络优化,新和网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
struct
Student
*create()
/*create函数定义,此函数实现创建单向动态链表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,链表的头指针;*p1,*p2,中间指针变量*/
puts("\n现在请输入学院名:");
scanf("%s",college);
puts("\n年级:");
scanf("%s",grade);
puts("\n专业和班级:");
scanf("%s",classname);
puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("输入第一个学生的学号:");
scanf("%ld",p1-num);
puts("输入此学生成绩:\n英语:");
scanf("%f",p1-score.english);
puts("数学:");
scanf("%f",p1-score.math);
puts("计算机:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1-grade=mark_grade(p1);
for(;p1-num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2-next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("输入下一个学生的学号:");
scanf("%ld",p1-num);
puts("输入此学生成绩:\n英语:");
scanf("%f",p1-score.english);
puts("数学:");
scanf("%f",p1-score.math);
puts("计算机:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1-grade=mark_grade(p1);
}
p2-next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函数定义,此函数实现从现有链表中删除一个结点*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,没有任何数据记录。\n");
else
{
for(p1=head;!(del_num==p1-num||p1-next==NULL);p2=p1,p1=p1-next);
if(del_num==p1-num)
{
if(p1==head)head=p1-next;
else
p2-next=p1-next;
printf("学号为%ld学生的数据删除成功。\n",del_num);
--len;
}
else
printf("未找到学号为%ld学生的记录。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函数定义,此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0-next=NULL;
puts("数据插入成功。\n");
}
else
{
for(;((*p0).num(*p1).num)(p1-next!=NULL);p2=p1,p1=p1-next);
if((*p0).num==(*p1).num)
{
printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入
Y
=覆盖原有数据\n输入其它=保留原有数据\n",p0-num);
FFLUSH;
scanf("%c",control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0-next=p1-next;}
else
{p2-next=p0;p0-next=p1-next;}
puts("数据已经更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num(*p1).num)
{
if(p1==head)head=p0;
else
p2-next=p0;
p0-next=p1;
puts("数据插入成功。\n");
}
else
{
p1-next=p0;
p0-next=NULL;
puts("数据插入成功。\n");
}
}
++len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函数定义,此函数实现对链表中的数据按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1-next!=NULL;p1=p1-next)
for(p2=p1-next;p2!=NULL;p2=p2-next)
{
if(p1-score.averagep2-score.average)
{
SWAP(p1-num,p2-num);
SWAP(p1-grade,p2-grade);
SWAP(p1-score.english,p2-score.english);
SWAP(p1-score.math,p2-score.math);
SWAP(p1-score.computer,p2-score.computer);
SWAP(p1-score.total,p2-score.total);
SWAP(p1-score.average,p2-score.average);
}
}
return
head;
}
/*接下一楼*/
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:int fun(){return 1;}。
3、编译器运行test.cpp文件,此时成功调用fun()函数输出了内容。
函数是用户与程序的接口,在定义一个函数前,首先要清楚以下三个问题。1) 函数的功能实现及算法选择。算法选择会在后续文章详细讲解,本节重点关注函数的功能实现。一般选取能体现函数功能的函数名,且见名知意,如求和函数的函数名可取为 add,求最大值的函数名可取为 max,排序函数可取名为 sort 等。2) 需要用户传给该函数哪些参数、什么类型,即函数参数。3) 函数执行完后返回给调用者的参数及类型,即函数返回值类型。 函教定义格式 函数定义的一般格式为: 返回类型 函数名 (类型参数1,类型参数2,…) {函数体 }也可以不含参数,不含参数时,参数表中可写关键字 void 或省略,为规范起见,教程中对没有参数的函数,参数表中统一写 void。例如: 类型 函数名 () {函数体 }等价于: 类型 函数名 (void) //建议的书写方式 {函数体 } 如果该函数没有返回类型,则为 void 类型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 类型外,在函数体中,均需要显式使用 return 语句返回对应的表达式的值。 函教返回值 函数的值是指调用函数结束时,执行函数体所得并返回给主调函数的值。 关于函数返回值说明如下。1) 带返回值的函数,其值一般使用 return 语句返回给调用者。其格式为: return 表达式;或者 return (表达式);例如: int add (int a, int b) {return (a + b); //return 后为表达式 } 函数可以含一个或多个 return 语句,但每次调用时只能执行其中一个 return 语句。例如,求整数绝对值的函数: int f (int n) //含多个return语句,但每次调用只执行一个 {if (n = 0)return n;elsereturn -n; }