c语言实验答案
Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】
n\ printf(\number:\ scanf(\ printf(\number\ scanf(\ printf(\follows:\\n\ printf(\b); printf(\b); printf(\b); printf(\/b); .+1/n!的值。 #include<> void main() { int n,p=1,i; float sum=0; printf(\ scanf(\ for(i=1;i<=n;i++) { p=p*i; sum+=p; } printf(\ } .14 p=j; switch(p) umber); for(j=0;j<3;j++) printf(\); printf(\
ave=%.2f\\n\er);
printf(\ for(j=0;j<3;j++)
scanf(\ } }
void main() { struct student stu[3]; //定义结构体数组 input(stu); //数组名做参数,传递的是地址 output(stu); }
//静态链表的建立,有三个学生,包括学号(sno char(8)),姓名
(sname char(20)),分数(grade float[]),
//定义结构体类型数组存学生信息,使用链表所有学生,实现链表的输入输出。
//静态的书上有原题目,我写成动态的了,用子函数的方式实现 #include <> #include<> #include <>
struct stu //定义全局结构体 { char sno[8]; char sname[20]; float grade; struct stu *next; } ;
//////////////////////////////////////////////////////// void main( ) { struct stu *creat(struct stu *); void print(struct stu*); struct stu *head; head=NULL; head=creat(head); print(head); }
////////////////////////////////void print(struct stu *head) ///////////////////////// //输出链表 struct stu *creat(struct { stu*head) //建立链 struct stu *p; 表 //设游标指针 { p=head; struct stu *p,*q; //取得链表的头指针 q=(struct printf(\stu*)malloc(sizeof(struct stu)); -----------\\n\ //分配空间 printf(\sno:\ scanf(\ printf(\sname:\ scanf(\ printf(\grade:\ scanf(\ head=q; while(q->grade!=0) //当分数为0时结束 { p=(struct stu*)malloc(sizeof(struct stu)); printf(\sno:\ scanf(\ printf(\sname:\ scanf(\ printf(\grade:\ scanf(\>grade); q->next=p; q=p; } q->next=NULL; return head; //返回链表的头指针 } //////////////////////////////////////////////////////////
while(p->next!=NULL) { printf(\>sno); printf(\>sname); printf(\>grade); printf(\----------\\n\ p=p->next; } } //递归方法实现快速排序算法。快速排序的基本原理是: //(1)选择一个充当划分较小和较大元素的界限的元素,称其为基准值。 //(2)将数组中的元素重新排列使得较大元素向数组尾端移动,较小元素向数组首端移动。 //如此在形式上将数组分成两部分,界限左边元素都小于基准值,而界限右边元素都大于基准值,此过程称为分解。 //在分解完成后,充当界限的数组首元素可能需要和中间某元素对调。 //(3)排序两个子数组中元素。因为基准值左边元素都小于基准值右边元素,所以将两个子数组分别排序后即使得整个数组有序。 #include<> #define N 10 void main() {
void fun(int *,int,int); if(right>i) //当右边 int i,a[N]; 部分有值(right>i),递归右半边 printf(\ fun(p,i,right); array:\ } for(i=0;i void fun(int *p,int left,int right) { int i=left,j=right,middle,temp; middle=p[(left+right)/2]; //求中间值 while(i<=j) //如果两边扫描的下标交错,就停止 { while((p[i]