求教 为什么会出现乱码
#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef struct
{
char name[20];
char number[15];
float Chinese;
float Math;
float English;
float average;
}DATA;
typedef struct node
{
DATA data;
struct node *next;
}Linklist;
Linklist *LinklistAdd( Linklist *head, DATA data )
{
Linklist *node;
node = (Linklist*)malloc(sizeof(Linklist));
node->data.Chinese = data.Chinese;
node->data.Math = data.Math;
node->data.English = data.English;
strcpy(node->data.number, data.number);
strcpy(node->data.name, data.name);
if( head == NULL )
{
head = node;
head->next = NULL;
}
else
{
node->next = head->next;
head->next = node;
}
return head;
}
Linklist *LinklistFind( Linklist *head, char *findnumber )
{
Linklist *h;
h = head;
while( h )
{
if( strcmp(h->data.name, findnumber) == 0 )
return h;
h = h->next;
}
return NULL;
}
int LinklistDelete( Linklist *head, char *number )
{
Linklist *node, *h, *temp;
int flag = 1;
node = h = head;
while( h )
{
if( strcmp(h->data.name, number) == 0 )
{
if(flag == 1)
{
temp = h->next;
free(h);
h = temp;
return 1;
}
else
{
flag = 0;
temp = h->next;
free(h);
node->next = temp;
h = temp;
return 1;
}
}
else
{
if( flag == 1)
{
h = h->next;
flag = 0;
}
else
{
node = h;
h = h->next;
}
}
}
printf("\n没有找到姓名为%s的学生信息!\n", number);
return 0;
}
void LinklistDisplay(Linklist *head)
{
Linklist *h=head;
DATA *data;
while(h)
{
data=&h->data;
printf("%10s%10s%10s%10s%10s%10s\n","姓名","学号","语文成绩","数学成绩","英语成绩","平均成绩");
printf("**************************************************************\n");
printf("%10s%10s%10g%10g%10g%10g\n",data->name, data->number, data->Chinese, data->Math, data->English, data->average);
h=h->next;
}
}
Linklist* Input(Linklist *head)
{
Linklist *u = (Linklist*)malloc(sizeof(Linklist));
printf ("请输入添加学生的信息:\n");
printf("请输入姓名:");
scanf("%s",u->data.name);
printf("请输入学号: ");
scanf("%s",u->data.number);
printf("请输入语文成绩: ");
scanf("%f",&u->data.Chinese);
printf("请输入数学成绩: ");
scanf("%f",&u->data.Math);
printf("请输入英语成绩: ");
scanf("%f",&u->data.English);
u->data.average = (u->data.Chinese + u->data.English + u->data.Math)/3;
Linklist *h = head,*t = NULL;
while(h)
{
if(h->data.average < u->data.average)
break;
else
{
t = h;
h = h->next;
}
}
u->next = h;
if( !t )
return u;
t->next = u;
return head;
}
void Find(Linklist *head)
{
DATA data;
char name[20];
Linklist *h;
printf("请输入要查找的学生的姓名:");
scanf("%s", name);
h = LinklistFind(head, name);
if( h )
{
data = h->data;
printf("要查找的学生的信息为:\n");
printf("%10s%10s%10s%10s%10s%10s\n","姓名","学号","语文成绩","数学成绩","英语成绩","平均成绩");
printf("**************************************************************\n");
printf("%10s%10s%10g%10g%10g%10g\n",data.name, data.number, data.Chinese, data.Math, data.English, data.average);
}
else
{
printf("\t没有找到姓名为%s的学生信息!\n", name);
}
}
void Delete(Linklist *head)
{
char name[20];
printf("请输入要删除的学生的姓名:");
scanf("%s", name);
LinklistDelete(head, name);
}
void write(Linklist *head)
{
FILE *fp;
Linklist *p;
fp=fopen("c:\\1.txt","w");
p=head;
while(p!=NULL)
{
fprintf(fp,"%s %s %g %g %g %g\n",p->data.name, p->data.number, p->data.Chinese, p->data.Math, p->data.English, p->data.average);
printf("%s %s %g %g %g %g\n",p->data.name, p->data.number, p->data.Chinese, p->data.Math, p->data.English, p->data.average);
p=p->next;
}
fclose(fp);
}
Linklist* read(Linklist *head)
{
Linklist *p1,*p2;
FILE *fp;
fp=fopen("c:\\1.txt","r");
p1=p2=head=NULL;
int x=1;
while(!feof(fp))
{
p1=(Linklist *)malloc(sizeof(Linklist));
fscanf(fp,"%s%s%f%f%f%f",p1->data.name, p1->data.number, &p1->data.Chinese, &p1->data.Math, &p1->data.English, &p1->data.average);
if(p2) p2->next=p1;
if(x==1) head=p1;
x++;
p2=p1;
}
p2->next=NULL;
fclose(fp);
return head;
}
int main()
{
Linklist *head = NULL;
head=read(head);
int option=1;
while(option!=5)
{
printf("\n*********************************\n");
printf("|\t \t|\n");
printf("|\t1.添加学生的信息\t|\n");
printf("|\t \t|\n");
printf("|\t2.按成绩排序 \t|\n");
printf("|\t \t|\n");
printf("|\t3.查找学生的信息\t|\n");
printf("|\t \t|\n");
printf("|\t4.删除学生的信息\t|\n");
printf("|\t \t|\n");
printf("|\t5.退出 \t|\n");
printf("|\t \t|\n");
printf("*********************************\n");
printf("\n请选择:");
scanf("%d",&option);
switch(option)
{
case 1:
Input(head);
break;
case 2:
LinklistDisplay(head);
break;
case 3:
Find(head);
break;
case 4:
Delete(head);
break;
case 5:
break;
default:
break;
}
getchar();
}
write(head);
return 0;
}
#include <string.h>
#include <malloc.h>
typedef struct
{
char name[20];
char number[15];
float Chinese;
float Math;
float English;
float average;
}DATA;
typedef struct node
{
DATA data;
struct node *next;
}Linklist;
Linklist *LinklistAdd( Linklist *head, DATA data )
{
Linklist *node;
node = (Linklist*)malloc(sizeof(Linklist));
node->data.Chinese = data.Chinese;
node->data.Math = data.Math;
node->data.English = data.English;
strcpy(node->data.number, data.number);
strcpy(node->data.name, data.name);
if( head == NULL )
{
head = node;
head->next = NULL;
}
else
{
node->next = head->next;
head->next = node;
}
return head;
}
Linklist *LinklistFind( Linklist *head, char *findnumber )
{
Linklist *h;
h = head;
while( h )
{
if( strcmp(h->data.name, findnumber) == 0 )
return h;
h = h->next;
}
return NULL;
}
int LinklistDelete( Linklist *head, char *number )
{
Linklist *node, *h, *temp;
int flag = 1;
node = h = head;
while( h )
{
if( strcmp(h->data.name, number) == 0 )
{
if(flag == 1)
{
temp = h->next;
free(h);
h = temp;
return 1;
}
else
{
flag = 0;
temp = h->next;
free(h);
node->next = temp;
h = temp;
return 1;
}
}
else
{
if( flag == 1)
{
h = h->next;
flag = 0;
}
else
{
node = h;
h = h->next;
}
}
}
printf("\n没有找到姓名为%s的学生信息!\n", number);
return 0;
}
void LinklistDisplay(Linklist *head)
{
Linklist *h=head;
DATA *data;
while(h)
{
data=&h->data;
printf("%10s%10s%10s%10s%10s%10s\n","姓名","学号","语文成绩","数学成绩","英语成绩","平均成绩");
printf("**************************************************************\n");
printf("%10s%10s%10g%10g%10g%10g\n",data->name, data->number, data->Chinese, data->Math, data->English, data->average);
h=h->next;
}
}
Linklist* Input(Linklist *head)
{
Linklist *u = (Linklist*)malloc(sizeof(Linklist));
printf ("请输入添加学生的信息:\n");
printf("请输入姓名:");
scanf("%s",u->data.name);
printf("请输入学号: ");
scanf("%s",u->data.number);
printf("请输入语文成绩: ");
scanf("%f",&u->data.Chinese);
printf("请输入数学成绩: ");
scanf("%f",&u->data.Math);
printf("请输入英语成绩: ");
scanf("%f",&u->data.English);
u->data.average = (u->data.Chinese + u->data.English + u->data.Math)/3;
Linklist *h = head,*t = NULL;
while(h)
{
if(h->data.average < u->data.average)
break;
else
{
t = h;
h = h->next;
}
}
u->next = h;
if( !t )
return u;
t->next = u;
return head;
}
void Find(Linklist *head)
{
DATA data;
char name[20];
Linklist *h;
printf("请输入要查找的学生的姓名:");
scanf("%s", name);
h = LinklistFind(head, name);
if( h )
{
data = h->data;
printf("要查找的学生的信息为:\n");
printf("%10s%10s%10s%10s%10s%10s\n","姓名","学号","语文成绩","数学成绩","英语成绩","平均成绩");
printf("**************************************************************\n");
printf("%10s%10s%10g%10g%10g%10g\n",data.name, data.number, data.Chinese, data.Math, data.English, data.average);
}
else
{
printf("\t没有找到姓名为%s的学生信息!\n", name);
}
}
void Delete(Linklist *head)
{
char name[20];
printf("请输入要删除的学生的姓名:");
scanf("%s", name);
LinklistDelete(head, name);
}
void write(Linklist *head)
{
FILE *fp;
Linklist *p;
fp=fopen("c:\\1.txt","w");
p=head;
while(p!=NULL)
{
fprintf(fp,"%s %s %g %g %g %g\n",p->data.name, p->data.number, p->data.Chinese, p->data.Math, p->data.English, p->data.average);
printf("%s %s %g %g %g %g\n",p->data.name, p->data.number, p->data.Chinese, p->data.Math, p->data.English, p->data.average);
p=p->next;
}
fclose(fp);
}
Linklist* read(Linklist *head)
{
Linklist *p1,*p2;
FILE *fp;
fp=fopen("c:\\1.txt","r");
p1=p2=head=NULL;
int x=1;
while(!feof(fp))
{
p1=(Linklist *)malloc(sizeof(Linklist));
fscanf(fp,"%s%s%f%f%f%f",p1->data.name, p1->data.number, &p1->data.Chinese, &p1->data.Math, &p1->data.English, &p1->data.average);
if(p2) p2->next=p1;
if(x==1) head=p1;
x++;
p2=p1;
}
p2->next=NULL;
fclose(fp);
return head;
}
int main()
{
Linklist *head = NULL;
head=read(head);
int option=1;
while(option!=5)
{
printf("\n*********************************\n");
printf("|\t \t|\n");
printf("|\t1.添加学生的信息\t|\n");
printf("|\t \t|\n");
printf("|\t2.按成绩排序 \t|\n");
printf("|\t \t|\n");
printf("|\t3.查找学生的信息\t|\n");
printf("|\t \t|\n");
printf("|\t4.删除学生的信息\t|\n");
printf("|\t \t|\n");
printf("|\t5.退出 \t|\n");
printf("|\t \t|\n");
printf("*********************************\n");
printf("\n请选择:");
scanf("%d",&option);
switch(option)
{
case 1:
Input(head);
break;
case 2:
LinklistDisplay(head);
break;
case 3:
Find(head);
break;
case 4:
Delete(head);
break;
case 5:
break;
default:
break;
}
getchar();
}
write(head);
return 0;
}
...全文
相关推荐
为什么wireshark有的地方显示的是乱码报文
如果Wireshark在重组这些分片之前显示它们,可能会看到不完整的数据,表现为乱码。正确重组后,乱码通常会消失。5.
乱码解决 乱码解决 乱码解决 乱码解决 乱码解决
**重传或恢复文件**:如果是由于网络传输或文件损坏导致的乱码,尝试重新下载或恢复文件。三、预防乱码的策略1.
简易乱码解码器解析乱码
“简易乱码解码器”正是为了解决这类编码不兼容导致的乱码而设计的。该工具包含一系列有效的算法和功能,旨在帮助用户轻松地处理乱码问题。下面,将详细介绍该解码器的几个关键功能:1.
小结下MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法第1/3页
在IT领域,尤其是在数据库管理和Web开发中,遇到中文乱码问题是非常常见的。本文将深入探讨MySQL中文乱码、phpMyAdmin乱码以及PHP显示乱码的原因,并提供相应的解决方法。
VS调试解决中文乱码
VS调试解决中文乱码"这个主题就专门针对这一问题,提供了有效的解决方案。首先,我们要理解为什么会出现中文乱码。这主要是由于编码格式不一致导致的。


