| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:这个程序错在哪?求指教
只看楼主 加入收藏
溘然旺旺
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-6-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
这个程序错在哪?求指教
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
struct student
{
 int  num;
 char name[20];
 float chinese;
 float math;
 float english;
}
studet[100];
int n;
void mycreat();/*录入数据*/
void mydisplay();/*浏览数据*/
void mysearch();/*查询数据*/
void mysort();/*数据排序*/
void mydelete();/*删除数据*/
void mymodify();/*修改数据*/
void mysave();/*保存数据*/
void myread();/*读取数据*/
void menu()
{
    int  key,password;
    while(key!=27)
    {
        printf("**********************学生成绩管理系统设计********************\n");
        printf("*************************请按提示运行*************************\n");
        pfintf("*                          1.按键1录入                       *\n");
        pfintf("*                          2.按键2浏览                       *\n");
        pfintf("*                          3.按键3查询                       *\n");
        pfintf("*                          4.按键4排序                       *\n");
        pfintf("*                          5.按键5删除                       *\n");
        pfintf("*                          6.按键6修改                       *\n");
        pfintf("*                          7.按键7保存                       *\n");
        pfintf("*                          8.按键8读取                       *\n");
        pfintf("*                             0.退出                         *\n");
        printf("**************************************************************\n");
        key=getch();
        switch(key)
        {
         case'1':
           mycreat();
           getch();
           break;
         case'2':
           mydisplay();
           getch();
           break;
         case'3':
           mysearch();
           getch();
           break;
         case'4':
           mysort();
           getch();
           break;
         case'5':
           mydelete();
           getch();
           break;
         case'6':
           mymodify();
           getch();
           break;
         case'7':
           mysave();
           getch();
           break;
         case'8':
           myread();
           getch();
           break;
        }
        if (password=='0') break;
    }
}
void mycreat()/*录入数据*/
{
    struct  student ;
    int  i=0;
    printf("请输入需要录入的学生人数:");
    scanf("%d",&n);
    printf("学号 姓名 语文 数学 英语\t\n");
    for(i=0;i<n;i++)
    scanf("%d %s %f %f %f",&stu.num,&stu.name,&stu.chinese,&stu.math,&stu.english);
    printf("请按任意键返回主菜单");
    fflush(stdin);
}
void mydisplay()/*浏览数据*/
{
 int i;
 printf("学号 姓名 语文 数学 英语\t\n");
 for(i=0;i<n;i++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f\t",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 printf("\n");
 }
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mysearch()/*查询数据*/
{
 int i=0,x;float j;char s;
 printf(" 查找菜单 \n");
 printf("a 按学号 \n");
 printf("b 按最高分 \n");
 printf(" 请输入选择:");
 scanf("%c",&s);
 if(s=='a')
 {
 printf("请输入所需要查询的学号:");
 scanf("%d",&x);
 printf("结果:\n");
 for(i=0;i<n;i++)
 if(x==stu.num)
 printf("%d %2s %4.1f %4.1f %4.1f\n",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 }
 else if(s=='b')
 {
 printf("语文最高分的同学信息是:\n");j=stu[0].chinese;
 for(i=0;i<n;i++)
 if(j<stu.chinese)
 j=stu.chinese;
 for(i=0;i<n;i++)
 if(stu.chinese==j)
 printf("%d %2s %4.1f %4.1f %4.1f\t\n",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 printf("数学最高分的同学信息是:\n");j=stu[0].math;
 for(i=0;i<n;i++)
 if(j<stu.math)
 j=stu.math;
 for(i=0;i<n;i++)
 if(stu.math==j)
 printf("%d %2s %4.1f %4.1f %4.1f\t\n",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 printf("英语最高分的同学信息是:\n");j=stu[0].english;
 for(i=0;i<n;i++)
 if(j<stu.english)
 j=stu.english;
 for(i=0;i<n;i++)
 if(stu.english==j)
 printf("%d %2s %4.1f %4.1f %4.1f\t\n",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 }
 else
 printf("wrong!\n");
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mysort()/*数据排序*/
{
 int i,j;float sum;struct student t;char s;
 printf(" 排序菜单 \n");
 printf("a 按总分排序(由高到低)\n");
 printf("b 按姓名排序 \n");
 printf("请输入选择:");
 scanf("%c",&s);
 if(s=='a')
 {
 printf("按总分排序:\n");
 for(i=0;i<n;i++)
 for(j=0;j<n-i;j++)
 if((stu[j].chinese+stu[j].math+stu[j].english)<(stu[j+1].chinese+stu[j+1].math+stu[j+1].english))
 {
 t==stu[j];
 stu[j]=stu[j+1];
 stu[j+1]==t;
 }
 for(j=0;j<n;j++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f 总分为%3.1f\t",stu[j].num,stu[j].name,stu[j].chinese,stu[j].math,stu[j].english,stu[j].chinese+stu[j].math+stu[j].english);
 printf("\n");
 }
 }
 else if(s=='b')
 {
 printf("按姓名排序:\n");
 for(i=0;i<n;i++)
 for(j=0;j<n-i;j++)
 if(strcmp(stu[j].name,stu[j+1].name)<0)
 {
 t==stu[j];
 stu[j]==stu[j+1];
 stu[j+1]==t;
 }
 for(j=0;j<n;j++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f\t",stu[j].num,stu[j].name,stu[j].chinese,stu[j].math,stu[j].english);
 printf("\n");
 }
 }
 else
 printf("wrong!\n");
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mydelete()/*删除数据*/
{
 int i,k,c;struct student t;
 printf("请输入需要删除的学号:");
 scanf("%d",&k);
 for(i=0;i<n;i++)
 {
 if(k==stu.num)
 {
 for(;i<n;i++)
 stu=stu;
 n=n-1;
 }
 }
 for(c=0;c<n;c++)
 {
 printf("%d %4s %4.1f %4.1f %4.1f\t",stu[c].num,stu[c].name,stu[c].chinese,stu[c].math,stu[c].english);
 printf("\n");
 }
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mymodify()/*修改数据*/
{
 int i,k,c;struct student t;
 printf("请输入需要修改的学号:");
 scanf("%d",&k);
 for(i=0;i<n;i++)
 if(k==stu.num)
 {
 printf("请输入修改后的学生信息\n");
 scanf("%d %s %f %f %f",&stu.num,&stu.name,&stu.chinese,&stu.math,&stu.english);
 for(i=0;i<n;i++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f\t",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 printf("\n");
 }
 }
 else
 {
 printf("查无此人\n");
 break;
 }
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mysave()/*保存数据*/
{
 FILE *stu;
 int i;
 stu=fopen("student.txt","wb");
 for(i=0;i<n;i++)
 fwrite(&stu,sizeof(struct student),1,stu);
 fclose(stu);
 printf("文件已保存\n");
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void myread()/*读取数据*/
{
 int i;FILE *fp;
 printf("输入数据:\n");
 if((fp=fopen("student.txt","rb"))==NULL)
 {
 printf("无法打开");
 exit(0); /* 退出 */
 }
 for(i=0;i<n;i++)
 fread(&stu,sizeof(struct student),1,fp);
 fclose(fp);
 printf("%-6s%-6s%-6s%-6s%-6s\n","学号","姓名","语文","数学","英语");
 for(i=0;i<n;i++)
 printf("%-6d%-6s%6.2f%6.2f%6.2f\n",stu.num,stu.name,stu.chinese,stu.math,stu.english);
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
搜索更多相关主题的帖子: password english include 
2014-06-04 20:41
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
去学校问老师吧

总有那身价贱的人给作业贴回复完整的代码
2014-06-05 09:28
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:4 
这风格有点晃眼

三十年河东,三十年河西,莫欺少年穷!
2014-06-05 12:46
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:4 
友情飘过...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2014-06-06 11:31
溘然旺旺
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-6-4
收藏
得分:0 
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
struct s
{
 int  num;
 char name[20];
 float chinese;
 float math;
 float english;
 float  sum;
}
s[100],*p=s;
int n;
void mycreat();/*录入数据*/
void mydisplay();/*浏览数据*/
void mysearch();/*查询数据*/
void mysort();/*数据排序*/
void mydelete();/*删除数据*/
void mymodify();/*修改数据*/
void mysave();/*保存数据*/
void myread();/*读取数据*/
void main()
{
    int key;
    while( key!=27)
    {
        system("cls");/*清屏*/
        printf("\n");
        printf("|**********************学生成绩管理系统设计********************|\n");
        printf("|***************************请按提示运行***********************|\n");
        printf("|                         1:按键1录入                          |\n");
        printf("|                         2:按键2浏览                          |\n");
        printf("|                         3:按键3查询                          |\n");
        printf("|                         4:按键4排序                          |\n");
        printf("|                         5:按键5删除                          |\n");
        printf("|                         6:按键6修改                          |\n");
        printf("|                         7:按键7保存                          |\n");
        printf("|                         8:按键8读取                          |\n");
        printf("|                           0:退出                             |\n");
        printf("|**************************************************************|\n");
        key=getch();
        switch(key)
        {
         case'1':
           mycreat();
           getch();
           break;
         case'2':
           mydisplay();
           getch();
           break;
         case'3':
           mysearch();
           getch();
           break;
         case'4':
           mysort();
           getch();
           break;
         case'5':
           mydelete();
           getch();
           break;
         case'6':
           mymodify();
           getch();
           break;
         case'7':
           mysave();
           getch();
           break;
         case'8':
           myread();
           getch();
           break;
        }
        if (key=='0')
            break;
    }
}
void mycreat()/*录入数据*/
{
    struct  s s1[40] ;
    int  i;
    printf("请输入需要录入的学生人数:");
    scanf("%d",&n);
    printf("学号 姓名 语文 数学 英语\t\n");
    for(i=0;i<n;i++)
    scanf("%d%s%f%f%f",&s1[i].num,&s1[i].name,&s1[i].chinese,&s1[i].math,&s1[i].english);
    printf("请按任意键返回主菜单");
    fflush(stdin);
}
void mydisplay()/*浏览数据*/
{
 struct  s s1[40] ;
 int i;
 printf("学号 姓名 语文 数学 英语\t\n");
 for(i=0;i<n;i++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f\t",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 printf("\n");
 }
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mysearch()/*查询数据*/
{
 struct  s s1[40];
 int i=0,x;
 float j;
 char s;
 printf(" 查找菜单 \n");
 printf("a 按学号 \n");
 printf("b 按最高分 \n");
 printf(" 请输入选择:");
 scanf("%c",&s);
 if(s=='a')
 {
 printf("请输入所需要查询的学号:");
 scanf("%d",&x);
 printf("结果:\n");
 for(i=0;i<n;i++)
 if(x==s1[i].num)
 printf("%d %2s %4.1f %4.1f %4.1f\n",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 }
 else if(s=='b')
 {
 printf("语文最高分的同学信息是:\n");
 j=s1[i].chinese;
 for(i=0;i<n;i++)
 if(j<s1[i].chinese)
 j=s1[i].chinese;
 for(i=0;i<n;i++)
 if(s1[i].chinese==j)
 printf("%d %2s %4.1f %4.1f %4.1f\t\n",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 printf("数学最高分的同学信息是:\n");
 j=s1[i].math;
 for(i=0;i<n;i++)
 if(j<s1[i].math)
 j=s1[i].math;
 for(i=0;i<n;i++)
 if(s1[i].math==j)
 printf("%d %2s %4.1f %4.1f %4.1f\t\n",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 printf("英语最高分的同学信息是:\n");
 j=s1[i].english;
 for(i=0;i<n;i++)
 if(j<s1[i].english)
 j=s1[i].english;
 for(i=0;i<n;i++)
 if(s1[i].english==j)
 printf("%d %2s %4.1f %4.1f %4.1f\t\n",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 }
 else
 printf("wrong!\n");
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mysort()/*数据排序*/
{
 struct  s s1[40];
float tem;
int i;
 char s;
 printf(" 排序菜单 \n");
 printf("a 按总分排序(由高到低)\n");
 printf("b 按姓名排序 \n");
 printf("请输入选择:");
 scanf("%c",&s);
 if(s=='a')
 {
struct  s s1[40];
 printf("按总分排序如下:\n");
 for(i=0;i<n;i++)
 s1[i].sum=s1[i].chinese+s1[i+1].math+s1[i+1].english;
 if(s1[i].sum<s1[i+1].sum)
 {
 tem=s1[i].sum;
 s1[i].sum=s1[i+1].sum;
 s1[i+1].sum=tem;
 }
 for(i=0;i<n;i++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f 总分为%3.1f\t",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english,s1[i+1].chinese+s1[i+1].math+s1[i+1].english);
 printf("\n");
 }
 }
 else if(s=='b')
 {
    struct  s s1[40];
     printf("按姓名排序如下:\n");
    for(i=1;i<=n;i++)
    if(strcmp(s1[i].name,s1[i+1].name)<0)
    {
        *p=s1[i];
        s1[i]=s1[i];
        s1[i]=*p;
    }
 for(i=1;i<=n;i++)
 {
 printf("%d %2s %4.1f %4.1f %4.1f\t",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 printf("\n");
 }
 }
 else
 printf("wrong!\n");
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mydelete()/*删除数据*/
{
 struct  s s1[40];
 int i,k,c,j;
 printf("请输入需要删除的学号:\n");
 scanf("%d",&k);
 for(i=0;i<n;i++)
for(j=0;j<n;j++)
 {
   if(k==s1[i].num)
 {
    for(;i<n;i++)
    s1[j]=s1[i];
    n=n-1;
 }
 }
    for(c=0;c<n;c++)
 {
 printf("%d %4s %4.1f %4.1f %4.1f\t",s1[c].num,s1[c].name,s1[c].chinese,s1[c].math,s1[c].english);
 printf("\n");
 }
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void mymodify()/*修改数据*/
{
 struct  s s1[40];
 int i,k;
 printf("请输入需要修改的学号:");
 scanf("%d",&k);
 for(i=0;i<n;i++)
 if(k==s1[i].num)
 {
 printf("请输入修改后的学生信息\n");
 scanf("%d %s %f %f %f",&s1[i].num,&s1[i].name,&s1[i].chinese,&s1[i].math,&s1[i].english);
 for(i=0;i<n;i++)
 {
    printf("%d %2s %4.1f %4.1f %4.1f\t",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
    printf("\n");
 }
 }
 else
 {
    printf("查无此人\n");
    break;
 }
    printf("请按任意键返回主菜单");
    fflush(stdin);
}
  void mysave()/*保存数据*/
{
 struct  s s1[40];
 FILE *stu;
 int i;
 stu=fopen("student.txt","wb");
 for(i=0;i<n;i++)
 fwrite(&stu,sizeof(struct s),1,stu);
 fclose(stu);
 printf("文件已保存\n");
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
void myread()/*读取数据*/
{
 struct  s s1[40];
 int i;FILE *fp;
 printf("输入数据:\n");
 if((fp=fopen("student.txt","rb"))==NULL)
 {
 printf("无法打开");
 exit(0); /* 退出 */
 }
 for(i=0;i<n;i++)
 fread(&s1,sizeof(struct s),1,fp);
 fclose(fp);
 printf("%-6s%-6s%-6s%-6s%-6s\n","学号","姓名","语文","数学","英语");
 for(i=0;i<n;i++)
 printf("%-6d%-6s%6.2f%6.2f%6.2f\n",s1[i].num,s1[i].name,s1[i].chinese,s1[i].math,s1[i].english);
 printf("请按任意键返回主菜单");
 fflush(stdin);
}
这个修改过后系统检测没有错误。但是执行第二步“浏览数据”时,为什么是乱码的?原因是什么?求指教
2014-06-06 19:30
YUN_P
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-6-4
收藏
得分:4 
这看的头晕啊
2014-06-07 21:18
律吕调阳
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:93
注 册:2014-6-9
收藏
得分:4 
你的数据都是储存在栈里,函数运行完栈清空了所以数据就没有了。
应该把数据存在全局变量中,即studet[100]这个结构体变量里。
2014-06-09 13:53
律吕调阳
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:93
注 册:2014-6-9
收藏
得分:0 
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
struct s
{
int  num;
char name[20];
float chinese;
float math;
float english;
float  sum;
}
s[100],*p=s;
int n = 3;
void mycreat();/*录入数据*/
void mydisplay();/*浏览数据*/
void mysearch();/*查询数据*/
void mysort();/*数据排序*/
void mydelete();/*删除数据*/
void mymodify();/*修改数据*/
void mysave();/*保存数据*/
void myread();/*读取数据*/

int main()
{
    int key;
    while( key!=27)
    {
        system("cls");/*清屏*/
        printf("\n");
        printf("|**********************学生成绩管理系统设计********************|\n");
        printf("|***************************请按提示运行***********************|\n");
        printf("|                         1:按键1录入                          |\n");
        printf("|                         2:按键2浏览                          |\n");
        printf("|                         3:按键3查询                          |\n");
        printf("|                         4:按键4排序                          |\n");
        printf("|                         5:按键5删除                          |\n");
        printf("|                         6:按键6修改                          |\n");
        printf("|                         7:按键7保存                          |\n");
        printf("|                         8:按键8读取                          |\n");
        printf("|                           0:退出                             |\n");
        printf("|**************************************************************|\n");
        key=getch();
        switch(key)
        {
         case'1':
           mycreat();
           getch();
           break;
         case'2':
           mydisplay();
           getch();
           break;
         case'3':
           mysearch();
           getch();
           break;
         case'4':
           mysort();
           getch();
           break;
         case'5':
           mydelete();
           getch();
           break;
         case'6':
           mymodify();
           getch();
           break;
         case'7':
           mysave();
           getch();
           break;
         case'8':
           myread();
           getch();
           break;
        }
        if (key=='0')
            break;
    }
    return 0;
}
void mycreat()/*录入数据*/
{
//    struct  s s1[40] ;
    int  i;
    printf("请输入需要录入的学生人数:");
    scanf("%d",&n);
    printf("学号 姓名 语文 数学 英语\t\n");
    for(i=0;i<n;i++)
    scanf("%d%s%f%f%f",&s[i].num,&s[i].name,&s[i].chinese,&s[i].math,&s[i].english);
    printf("请按任意键返回主菜单");
    fflush(stdin);
}
void mydisplay()/*浏览数据*/
{
//struct  s s1[40] ;
int i;
printf("学号 姓名 语文 数学 英语\t\n");
for(i=0;i<n;i++)
{
printf("%d %2s %4.1f %4.1f %4.1f\t",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);
printf("\n");
}
printf("请按任意键返回主菜单");
fflush(stdin);
}
void mysearch()/*查询数据*/
{
//struct  s s1[40];
int i=0,x;
float j;
char str;
printf(" 查找菜单 \n");
printf("a 按学号 \n");
printf("b 按最高分 \n");
printf(" 请输入选择:");
scanf("%c",&str);
if(str=='a')
{
    printf("请输入所需要查询的学号:");
    scanf("%d",&x);
    printf("结果:\n");
    for(i=0;i<n;i++)
    if(x==s[i].num)
    printf("%d %2s %4.1f %4.1f %4.1f\n",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);

}
else if(str=='b')
{
    printf("语文最高分的同学信息是:\n");
    j=s[i].chinese;
    for(i=0;i<n;i++)
    if(j<s[i].chinese)
    j=s[i].chinese;
    for(i=0;i<n;i++)
    if(s[i].chinese==j)
    printf("%d %2s %4.1f %4.1f %4.1f\t\n",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);

    printf("数学最高分的同学信息是:\n");
    j=s[i].math;
    for(i=0;i<n;i++)
    if(j<s[i].math)
    j=s[i].math;
    for(i=0;i<n;i++)
    if(s[i].math==j)
    printf("%d %2s %4.1f %4.1f %4.1f\t\n",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);
   
    printf("英语最高分的同学信息是:\n");
    j=s[i].english;
    for(i=0;i<n;i++)
    if(j<s[i].english)
    j=s[i].english;
    for(i=0;i<n;i++)
    if(s[i].english==j)
    printf("%d %2s %4.1f %4.1f %4.1f\t\n",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);
}
else
    printf("wrong!\n");
    printf("请按任意键返回主菜单");
    fflush(stdin);
}




void mysort()/*数据排序*/
{
//struct  s s1[40];
    float tem;
    int i;
    char str;
   
    printf(" 排序菜单 \n");
    printf("a 按总分排序(由高到低)\n");
    printf("b 按姓名排序 \n");
    printf("请输入选择:");
    scanf("%c",&s);

    if(str=='a')
    {
//    struct  s s1[40];
    printf("按总分排序如下:\n");
    for(i=0;i<n;i++)
    s[i].sum=s[i].chinese+s[i+1].math+s[i+1].english;

    if(s[i].sum<s[i+1].sum)
    {
        tem=s[i].sum;
        s[i].sum=s[i+1].sum;
        s[i+1].sum=tem;
    }
    for(i=0;i<n;i++)
    {
        printf("%d %2s %4.1f %4.1f %4.1f 总分为%3.1f\t",\
            s[i].num,s[i].name,s[i].chinese,s[i].math,\
            s[i].english,s[i+1].chinese+s[i+1].math+s[i+1].english);
        printf("\n");
    }
    }

    else if(str=='b')
    {
    //struct  s s1[40];
     printf("按姓名排序如下:\n");
    for(i=1;i<=n;i++)
    if(strcmp(s[i].name,s[i+1].name)<0)
    {
        *p=s[i];
        s[i]=s[i];
        s[i]=*p;
    }

    for(i=1;i<=n;i++)
    {
        printf("%d %2s %4.1f %4.1f %4.1f\t",\
            s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);
        printf("\n");
    }
    }

    else{
    printf("wrong!\n");
    printf("请按任意键返回主菜单");
    fflush(stdin);
    }
}


void mydelete()/*删除数据*/
{
    //struct  s s1[40];
    int i,k,c,j;
    printf("请输入需要删除的学号:\n");
    scanf("%d",&k);
    /*for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
    if(k==s[i].num)
    {
        for(;i<n;i++,j++)
        s[j]=s[i];
        n=n-1;
   
    }
    }
    */
    for(i = 0; i < n; i++)
    {
    if(k == s[i].num)
    {
        s[i] = s[i+1];
    }
    s[i] = s[i+1];
    }
    n = n-1;

    for(c=0;c<n;c++)
    {
    printf("%d %4s %4.1f %4.1f %4.1f\t",\
        s[c].num,s[c].name,s[c].chinese,s[c].math,s[c].english);
    printf("\n");
    }

    printf("请按任意键返回主菜单");
    fflush(stdin);
}


void mymodify()/*修改数据*/
{
//struct  s s1[40];
    int i,k;
    printf("请输入需要修改的学号:");
    scanf("%d",&k);
    for(i=0;i<n;i++)

    if(k==s[i].num)
    {
    printf("请输入修改后的学生信息\n");
    scanf("%d %s %f %f %f",&s[i].num,&s[i].name,&s[i].chinese,&s[i].math,&s[i].english);
    for(i=0;i<n;i++)
    {
        printf("%d %2s %4.1f %4.1f %4.1f\t",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);
        printf("\n");
    }
    }
    else
    {
    printf("查无此人\n");
    break;
    }
    printf("请按任意键返回主菜单");
    fflush(stdin);
}
 

void mysave()/*保存数据*/
{
    //struct  s s1[40];
    FILE *stu;
    int i;
    //char str[1000];

    stu=fopen("student.txt","wb");
    for(i=0;i<n;i++)
    {
    char * str = (char *)malloc( sizeof (struct s));
    sprintf(str
        ,"%d,%s,%f,%f,%f",s[i].num,s[i].name,s[i].chinese,s[i].math,s[i].english);
    fwrite(str,strlen(str),1,stu);
    free(str);
    }
    fclose(stu);
    printf("文件已保存\n");
    printf("请按任意键返回主菜单");
    fflush(stdin);
}
给你简单的改了一下
2014-06-09 19:50
快速回复:这个程序错在哪?求指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023694 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved