├─◆ 狼盟首页 > 查看贴子 > 详细信息
楼主
数组问题

为什么我对数组排完序后,值都为0了,字符的都输不出来了呢#include"stdlib.h"#include"stdio.h"#include"string.h"#define M 50typedef struct stu{ char name[20]; int mark;}student;int input(student *data){ int i=1; char temp[20]; printf("You can input the information
"); printf("input the name of %d
",i); gets(temp); /*gets(data[i].name);*/ while(strcmp(temp,"end")!=0) { strcpy(data[i].name,temp); printf("input the mark
"); scanf("%d",&data[i].mark); i++; if(i>M) printf("the data is full"); printf("input the name of %d
",i); getchar(); gets(temp); } return i-1;}void straight(student *data){ int i,j; for(i=2;i<=M;i++) { data[0].mark=data[i].mark; j=i-1; while(data[0].mark<data[j].mark) { data[j+1].mark=data[j].mark; j--; } data[j+1].mark=data[0].mark; strcpy(data[j+1].name,data[0].name); }}void bubblesort(student *data){ int i,j; for(i=1;i<M;i++) for(j=1;j<=M-i;j++) if(data[j+1].mark<data[j].mark) { data[0]=data[j]; data[j]=data[j+1]; data[j+1]=data[0]; }}void print(student *data,int n){ int i; for(i=1;i<=n;i++) { puts(data[i].name); printf("%d
",data[i].mark); }}main(){ student data[M]={0}; int count; clrscr(); count=input(data);/*输入学生信息*/ printf("count is %d
",count); print(data,count); if(count!=0) { printf("Straight:
"); straight(data); print(data,count); } if(count!=0) { printf("Bubblesort:
"); bubblesort(data); print(data,count); } if(count==0) printf("No data!"); }