标题:学生成绩系统,语义有错误吗?
只看楼主
邪七
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-16
结帖率:100%
已结贴  问题点数:20 回复次数:2 
学生成绩系统,语义有错误吗?
做的成绩系统的初步,做出了一个框架,然而在完善功能时,可以编译,但先输入成绩后,运行这个 void score_inquiry(struct STUD *Wstu, int *num); 时 ,运行不了,求帮助!!!



代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define   N   100
void meun();
void yesorno();

struct STUD
{
    long long stu_ID;
    char stu_name;
    float stu_score;
}student[N];

void grade_add(struct STUD *Wstu, int *num);
void score_inquiry(struct STUD *Wstu, int *num);
void score_modify();
void grade_delete();
void grade_all();
void grade_statisticsc();

int main()
{
   meun();
    return 0;
}

void (*select)(struct STUD *Wstu,int *num);

void meun()
{
    int n;
    static int num = 1;
   printf (" 1:学生成绩新增\n 2:学生成绩查询\n 3:学生成绩修改\n 4:学生成绩删除\n 5:学生成绩全览\n\
 6:班级成绩统记\n 0:退出\n");
   void *choice[6] = {grade_add,score_inquiry,score_modify,grade_delete,grade_all,grade_statisticsc};
   printf ("请输入你的选择\n");
   scanf("%d",&n);
   while(n != 0)
   {
       select = choice[n - 1];
      (*select)(student, &num);
      meun();
   }
    printf ("%d\n", num);
   yesorno();
}

void grade_add(struct STUD *Wstu, int *num)
{
    printf("1\n");
    int i;
    printf("********成绩新增*********\n");
    printf ("请输入班级人数:");
    scanf("%d",&*num);
    printf("请输入%d个学生的学号,姓名,成绩:\n",*num);
    for(i = 0; i < *num; i++)
    {
        scanf("%lld%s%f",&Wstu[i].stu_ID,&Wstu[i].stu_name,&Wstu[i].stu_score);
    }
    printf("成绩录入已完成!\n");
    /*
   for(i = 0; i < *num; i++)
    {
        printf("%lld%s%.1f\n",Wstu[i].stu_ID,Wstu[i].stu_name,Wstu[i].stu_score);
    }
*/
}

void score_inquiry(struct STUD *Wstu, int *num)//可能错误存在的地方
{
     printf("2\n");
     int i;
     for(i = 0; i < *num; i++)
     {
         printf("%lld %s %f",Wstu[i].stu_ID,Wstu[i].stu_name, Wstu[i].stu_score);
     }
}

void score_modify()
{
     printf("3\n");
}

void grade_delete()
{
     printf("4\n");
}

void grade_all()
{
     printf("5\n");
}

void grade_statisticsc()
{
     printf("6\n");
}

void yesorno()
{
     char ch;
      printf ("确定退出系统?(Y/N)\n");
    getchar();
    ch  = getchar();
    if(ch == 'Y'|| ch == 'y')
        {
            printf ("OVER!\n");
            exit(0);
        }
    else if (ch == 'N' || ch == 'n')
        meun();
}

感谢帮忙!!!!

搜索更多相关主题的帖子: 成绩 void int num printf 
2017-12-13 23:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
修改的语句用//注释
试试:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define   N   100
void meun();
void yesorno();

struct STUD
{
    long long stu_ID;
    //char stu_name;
    char stu_name[20];
    float stu_score;
} student[N];

void grade_add(struct STUD *Wstu, int *num);
void score_inquiry(struct STUD *Wstu, int *num);
void score_modify();
void grade_delete();
void grade_all();
void grade_statisticsc();

int main()
{
    meun();
    return 0;
}

void (*select)(struct STUD *Wstu,int *num);

void meun()
{
    int n;
    static int num = 1;
    printf (" 1:学生成绩新增\n 2:学生成绩查询\n 3:学生成绩修改\n 4:学生成绩删除\n 5:学生成绩全览\n\
 6:班级成绩统记\n 0:退出\n");
    void *choice[6] = {grade_add,score_inquiry,score_modify,grade_delete,grade_all,grade_statisticsc};
    printf ("请输入你的选择\n");
    scanf("%d",&n);
    while(n != 0)
    {
        select = choice[n - 1];
        (*select)(student, &num);
        meun();
    }
    printf ("%d\n", num);
    yesorno();
}

void grade_add(struct STUD *Wstu, int *num)
{
    printf("1\n");
    int i;
    printf("********成绩新增*********\n");
    printf ("请输入班级人数:");
    //scanf("%d",&*num);
    scanf("%d",num);
    printf("请输入%d个学生的学号,姓名,成绩:\n",*num);
    for(i = 0; i < *num; i++)
    {
        //scanf("%lld%s%f",&Wstu[i].stu_ID,&Wstu[i].stu_name,&Wstu[i].stu_score);
        scanf("%lld%s%f", &Wstu[i].stu_ID, Wstu[i].stu_name, &Wstu[i].stu_score);
    }
    printf("成绩录入已完成!\n");
    /*
    for(i = 0; i < *num; i++)
    {
        printf("%lld%s%.1f\n",Wstu[i].stu_ID,Wstu[i].stu_name,Wstu[i].stu_score);
    }
    */
}

void score_inquiry(struct STUD *Wstu, int *num)//可能错误存在的地方
{
    printf("2\n");
    int i;
    for(i = 0; i < *num; i++)
    {
        //printf("%lld %s %f",Wstu[i].stu_ID,Wstu[i].stu_name, Wstu[i].stu_score);
        printf("%lld %s %.1f\n",Wstu[i].stu_ID,Wstu[i].stu_name, Wstu[i].stu_score);
    }
}

void score_modify()
{
    printf("3\n");
}

void grade_delete()
{
    printf("4\n");
}

void grade_all()
{
    printf("5\n");
}

void grade_statisticsc()
{
    printf("6\n");
}

void yesorno()
{
    char ch;
    printf ("确定退出系统?(Y/N)\n");
    getchar();
    ch  = getchar();
    if(ch == 'Y'|| ch == 'y')
    {
        printf ("OVER!\n");
        exit(0);
    }
    else if (ch == 'N' || ch == 'n')
        meun();
}
2017-12-14 06:14
邪七
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-16
得分:0 
可以了,谢谢大神了,
2017-12-14 09:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483357-1-1.html




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

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