标题:请高手看一下 这个全局变量,那里有问题~!十万火急,谢谢~!
只看楼主
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
结帖率:88.89%
已结贴  问题点数:20 回复次数:6 
请高手看一下 这个全局变量,那里有问题~!十万火急,谢谢~!
#include<stdio.h>
#include<stdlib.h>

int add(int *stu,int student);
int del(int *stu,int student);
void print(int *stu,int student);
void esc();

int student=0;

void main()
{
    while(1)
    {
        int *stu=NULL;
        int option;
        printf("------------------请输入您进入的选项------------------\n");
        printf("1.新增学员人数  2.删除学员  3.打印学员成绩  4.退出程序\n ");
        scanf(" %d",&option);
        switch (option)
        {
            case 1:
                {
                    add(stu,student);
                    break;
                }
            case 2:
                {
                    del(stu,student);
                    break;
                }
            case 3:
                {
                    print(stu,student);
                    break;
                }
            case 4:
                {
                    esc();
                    break;
                }
        }
    free( stu);
    }
   
}
int add(int *stu,int student)
{
    int i;
    char a;
    int student_a;
    printf("请输入新增学员的人数\n");
    scanf(" %d",&student);
    while(student<=0)
    {
        printf("您输入有误,请从新输入\n");
        scanf(" %d",&student);
    }
    stu=(int *)malloc(student*sizeof(int));
    printf("请输入学员的成绩\n");
    for(i=0;i<student;i++)
    {
        scanf(" %d",stu+i);
    }
    printf("继续增加学员人数,请输入y,退出请输入n\n");
    scanf(" %c",&a);
    do
    {
        if(a=='y'||a=='Y')
        {
            printf("输入新增学员人数 \n");
            scanf(" %d",&student_a);
            while(student<0)
            {
                printf("您输入有误,请从新输入\n");
                scanf(" %d",&student_a);
            }
            student+=student_a;
            stu=(int *)realloc(stu,student*sizeof(int));
            printf("请输入新增学员的分数\n");
            for(i=student-student_a;i<student;i++)
            {
                scanf(" %d",stu+i);
            }
            printf("继续增加学员人数,请输入y,退出请输入n\n");
            scanf(" %c",&a);
        }
        if(a=='n'||a=='N')
        {
            //exit(0);
            return 0;
        }
    }
    while(a!='y');
    {
        exit(0);
    }
    return *stu;
}
int del(int *stu,int student)//这个全局变量为什么是零?而下面的打印函数的全局变量又是有的??
{
    int id;
    int i;
    printf("请输入要删除学生的学号\n");
    scanf(" %d",&id);
    while(id<=0||id>student)
    {
        printf("您输入有误,请从新输入\n");
        scanf(" %d",&id);
    }
    if(student==1)
    {
        free(stu);
    }
    if(id==student)
    {
        stu=(int *)realloc(stu,(student-1)*sizeof(int));
    }
    else
    {
        student=student-1;
        for(i=id;i<student+1;i++)
        {
            *(stu+i)=*(stu+i+1);
        }
        stu=(int *)realloc(stu,student*sizeof(int));
    }
    return *stu;
}
void print(int *stu,int student)
{
    int i;
    for(i=0;i<student;i++)
    {
        printf("第%d个学员的成绩:%d",i+1,*(stu+i));
    }
}
void esc()
{
    exit(0);
}
搜索更多相关主题的帖子: 全局 变量 
2009-11-10 23:27
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
得分:0 
大虾~!指点一下~~~谢谢了~~~
 
2009-11-10 23:59
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
得分:0 
各位大哥~!怎么看了一晚上的贴不回贴~~~~难道我的这个问题  你们不屑于回答吗~~~
       至少给个反应撒~~谢谢了~~~!
2009-11-11 07:23
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
得分:0 
太长了
没时间看

想象力征服世界
2009-11-11 12:58
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
得分:15 
简单说几句:
   因为你已经定义了student是全局变量,就没必要再在函数里传来传去了。你通过 形参传到一个子函数中的时候,它传过去的是一个初值,即student为0.
   全局变量是可以全局使用的。不需要那样做,去掉吧···
再者就是stu数组的处理问题,你这样处理是不行的···建议把stu也定义到全局···
    期待LZ改过来再发代码···
                                            end
2009-11-11 13:24
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
得分:5 
同意楼上所说的!!
全局变量是可以全局使用的。不需要那样做,去掉吧···
再者就是stu数组的处理问题,你这样处理是不行的···建议把stu也定义到全局···
2009-11-14 12:25
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
得分:0 
等我电脑修好了~就把改的发给你们看一下,谢谢给位大家的支持~~~
   同时请大家指点一下~~~~
  还有那些地方需要改进的地方   谢谢大家
2009-11-14 14:49



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




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

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