代码如下,当我输入
“z
15227036227
a
15227036227
b
13230602579
c
13230602579
d
134632026889”时运行接过如下,执行到最后z为什么不见了?
#include<stdio.h>
#include<string.h>
#define N 5
typedef struct {
char name[20];
char num[12];
}USER;
void getdata(USER* sp);
void getsort(USER* sp);
void outdata(USER *sp);
int main()//主函数
{
USER sp[N];
getdata(sp); outdata(sp);getsort(sp); putchar('\n');outdata(sp);printf("\n\n%s", sp[4].name);
return 0;
}
void getdata(USER* sp)//进行输入5个数据
{
int i;
for (i = 0; i < 5; i++)
scanf("%s%s", sp[i].name, sp[i].num);
}
void getsort(USER* sp)
{
int i, j;
char temp[20];
for (i=0;i<4;i++)
for(j=0;j<4-i;j++)
if (strcmp(sp[j].name, sp[j+1].name) > 0)//如果比后面一个名字大则替换两边数据
{ printf("%s交换%s\t", sp[j].name, sp[j+1].name);//在屏幕输出交换的双方
strcpy(temp, sp[j].name);
strcpy(sp[j].name, sp[j+1].name);
strcpy(sp[j+1].name, temp);
strcpy(temp, sp[j].num);
strcpy(sp[j].num, sp[j+1].num);
strcpy(sp[j+1].num, temp);
printf("%s已经和%s交换\t", sp[j+1].name, sp[j].name);//在屏幕输出已经交换成功了
}
}
void outdata(USER *sp)//进行输出5个数据
{
int i;
for (i = 0; i < 5; i++)
printf("\n%s:%s\n", sp[i].name, sp[i].num);
}