| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:这个程序错在哪?求指教
取消只看楼主 加入收藏
溘然旺旺
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-6-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
这个程序错在哪?求指教
#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
溘然旺旺
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
快速回复:这个程序错在哪?求指教
数据加载中...
 
   



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

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