| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1299 人关注过本帖
标题:学生成绩管理系统第一个函数就卡住了,,大家帮看看
只看楼主 加入收藏
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
学生成绩管理系统第一个函数就卡住了,,大家帮看看
程序代码:
#include<stdio.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i=1,q=0;
    char c;
    struct student *p;
    p=stu;
    printf("请输入%d学生的成绩:\n",i);
    while(q==0)
    {
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)scanf("%5.2f",&p->score[j]);
        p++,i++;
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c!='N'||c!='n'&&i<=N)q=1;
     }
}
void main()
{
int n;
     do
{     
printf(" 主菜单\n");
printf("======================\n");
printf(" 1.输入学生成绩\n"); 
printf(" 2.按姓名查询学生成绩\n");
printf(" 3.按学号查询学生成绩\n");
printf(" 4.打印输出成绩\n");
printf(" 0.退出系统\n");
printf("======================\n");
printf(" 请选择(0~4):\n");
scanf("%d",&n);  
switch(n)
     {
     case 0:break;
     case 1:sr();break;
     case 2:printf("请输入姓名:\n");break;
     case 3:printf("请输入学号:\n");break;
     case 4:printf("成绩输出为:\n");break;
    default:printf("输入错误,请重新输入\n");break;
     }
}
while(n!=0);
printf("谢谢使用\n");
} 
搜索更多相关主题的帖子: 管理系统 
2011-09-29 14:54
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
你是在网上的教程视频里看的这个作业吧,呵呵,内容一模一样呀,只可惜我刚学到,还没开始研究呢
2011-09-29 15:55
正电子
Rank: 3Rank: 3
来 自:江苏常州
等 级:论坛游侠
帖 子:30
专家分:112
注 册:2011-7-26
收藏
得分:0 
运行了一下,没什么问题呀?
2011-09-29 16:10
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
刚除了链表别的几个函数都做出来了,,但是输入函数还是不行,,每次输入第一个成绩就跳转,不能正常输入
程序代码:
#include<stdio.h>
#include<string.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i=1,q=0;
    char c;
    struct student *p;
    p=stu;
    printf("请输入%d学生的成绩:\n",i);
    while(q==0)
    {
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)scanf("%5.2f",&p->score[j]);
        p++,i++;
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c!='N'||c!='n'&&i<=N)q=1;
     }
}
void namecx(void)
{
    int q=0;
    struct student *p;
    char name[20];
    printf("请输入要查询姓名:\n");
    scanf("%s",name);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(name,p->name)==0)
        printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
          q=1;break;
     }
    if(q==1)printf("查找不到这个姓名!\n");
}
void numcx(void)
{
    int q=0;
    struct student *p;
    char num[10];
    printf("请输入要查询学号:\n");
    scanf("%s",num);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(num,p->num)==0)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
    q=1;break;
     }
    if(q==1)printf("查找不到这个学号!\n");
}
void aver(struct student *p)
{
    float s=0;
    int i;
    for(i=0;i<4;i++)
    s+=p->score[i];
    p->aver=s/4;
}
void dysc(void)
{
    int i=1;
    struct student *p;
    printf("输出的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
    for(p=stu;p<p+N;p++)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],aver);
}    
void main()
{
    int n;
     aver(stu);
     do
     {     
          printf(" 主菜单\n");
          printf("======================\n");
          printf(" 1.输入学生成绩\n"); 
          printf(" 2.按姓名查询学生成绩\n");
          printf(" 3.按学号查询学生成绩\n");
          printf(" 4.打印输出成绩\n");
          printf(" 0.退出系统\n");
          printf("======================\n");
          printf(" 请选择(0~4):\n");
          scanf("%d",&n);  
          switch(n)
          {
               case 0:break;
           case 1:sr();break;
               case 2:namecx();break;
               case 3:numcx();break;
           case 4:dysc();break;
              default:printf("输入错误,请重新输入\n");break;
          }
     }
     while(n!=0);
     printf("谢谢使用\n");
} 

Sickcat
2011-09-29 16:33
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:5 
把5.2去掉
2011-09-29 16:42
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 
回复 楼主 鸿飞冥冥
scanf( " %5.2f " ,&p->score[j]);输入能限制精度吗? p++,i++;这哪个老师教你的,况且你达不到你想要的结果,调用函数使用后,会释放其,空间 看了你的代码,我就像打开了了另一个,地狱如此可怕

[ 本帖最后由 A13433758072 于 2011-9-29 16:57 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 16:52
honey536
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:68
专家分:76
注 册:2010-4-20
收藏
得分:5 
#include<stdio.h>
#define N 50             /***定义有50个学生***/
struct student
{
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i;
    char ch;
    struct student *p;
    p=stu;
 for(i=0;i<N;i++)
    {  printf("请输入第%d位学生的成绩:\n",i+1);
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)
        scanf("%5.2f",p->score[j]);
         p++;
     printf("请选择是否继续(y/n):");
           fflush (stdin);
           ch=getchar();
           if (ch=='N'||ch=='n')
           break;
    }
}
void main()
{
int n;
     do
{     
printf(" 主菜单\n");
printf("======================\n");
printf(" 1.输入学生成绩\n");
printf(" 2.按姓名查询学生成绩\n");
printf(" 3.按学号查询学生成绩\n");
printf(" 4.打印输出成绩\n");
printf(" 0.退出系统\n");
printf("======================\n");
printf(" 请选择(0~4):\n");
scanf("%d",&n);  
switch(n)
     {
     case 0:break;
     case 1:sr();break;
     case 2:printf("请输入姓名:\n");break;
     case 3:printf("请输入学号:\n");break;
     case 4:printf("成绩输出为:\n");break;
    default:printf("输入错误,请重新输入\n");break;
     }
}
while(n!=0);
printf("谢谢使用\n");
} /*再试试看
2011-09-29 17:12
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i,q=0;
    char c;
    struct student *p;
    p=stu;
    for(i=0;i<N;i++)
    {
        printf("请输入%d学生的成绩:\n",i+1);
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)scanf("%f",&p->score[j]);
        p++;
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c=='N'||c=='n')break;
     }
}
void namecx(void)
{
    int q=0;
    struct student *p;
    char name[20];
    printf("请输入要查询姓名:\n");
    scanf("%s",name);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(name,p->name)==0)
        printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
          q=1;break;
     }
    if(q!=1)printf("查找不到这个姓名!\n");
}
void numcx(void)
{
    int q=0;
    struct student *p;
    char num[10];
    printf("请输入要查询学号:\n");
    scanf("%s",num);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(num,p->num)==0)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
    q=1;break;
     }
    if(q!=1)printf("查找不到这个学号!\n");
}
void aver(struct student *p)
{
    float s=0;
    int i;
    for(i=0;i<4;i++)
    s+=p->score[i];
    p->aver=s/(float)4;
}
void dysc(void)
{
    int i=1;
    struct student *p;
    printf("输出的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
    for(p=stu;p<p+N;p++)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
}    
void main()
{
    int n;
     do
     {     
          printf(" 主菜单\n");
          printf("======================\n");
          printf(" 1.输入学生成绩\n"); 
          printf(" 2.按姓名查询学生成绩\n");
          printf(" 3.按学号查询学生成绩\n");
          printf(" 4.打印输出成绩\n");
          printf(" 0.退出系统\n");
          printf("======================\n");
          printf(" 请选择(0~4):\n");
          scanf("%d",&n);  
          switch(n)
          {
               case 0:break;
              case 1:sr();aver(stu);break;
               case 2:namecx();break;
               case 3:numcx();break;
              case 4:dysc();break;
              default:printf("输入错误,请重新输入\n");break;
          }
     }
     while(n!=0);
     printf("谢谢使用\n");
} 

我本就水人一个,,现在1-4除了4不能用(输出满屏乱码),,别的都行了,,不过链表没做,排序没做

Sickcat
2011-09-29 18:04
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 7楼 honey536
请告诉我        scanf("%s",p->num);哪里有问题,

[ 本帖最后由 A13433758072 于 2011-9-29 19:17 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 19:01
编程的乐趣
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:229
专家分:1027
注 册:2011-4-4
收藏
得分:0 
.
2011-09-29 19:03
快速回复:学生成绩管理系统第一个函数就卡住了,,大家帮看看
数据加载中...
 
   



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

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