| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:学生考试成绩信息登记的程序,出了点问题,帮帮忙吧。
只看楼主 加入收藏
姚杰
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:169
专家分:477
注 册:2010-6-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
学生考试成绩信息登记的程序,出了点问题,帮帮忙吧。
我不用函数调用时可以运行的结果如下:
/*在VC++6.0中的输出结果为:
-------------------------------
请输入学生的个数
len=3
请输入第1个学生信息
age=22
name=li
score=66.6

请输入第2个学生信息
age=21
name=ki
score=55.5
  
请输入第3个学生信息
age=12
name=ni
score=77
   
      
请输出学生信息
        
请输出第1个学生信息
age=12
name=ni
score=77.000000
         
请输出第2个学生信息
age=22
name=li
score=66.599998
            
请输出第3个学生信息
age=21
name=ki
score=55.500000
 -----------------------
              */

下面是改用函数写的
程序如下,有点错误,要不就是运行结果出错,帮忙看错在哪里,怎么改

#include<stdio.h>
#include<malloc.h>

struct Student
{
    char name[20];
    int age;
    float score;
};

void input (struct Student *);
void input2(struct Student *);
void output(struct Student *);

int main(void)
{
    struct Student  pArr;
    int i,j,len;
    struct Student t;
   
    input ( &pArr);

    for(i=0;i<len;i++)   
   {
     input2( &pArr);
    }  
   
     printf("\n\n");
     printf("请输出学生信息\n");
     printf("\n\n");

   for(i=0;i<len;i++)
    {   
     printf("请输出第%d个学生信息\n",i+1);
     output( &pArr);
    }
   
    return 0;
}

void input( struct Student *pArr)
{
    int len;
    printf("请输入学生的个数\n");
    printf("len=");
    scanf("%d",&len);
    pArr=(struct Student *)malloc(len*sizeof(struct Student ));
}

void input2(struct Student *pArr)
{     
    int i;
        printf("请输入第%d个学生信息\n",i+1);
        printf("age=");
        scanf("%d",&pArr[i].age);
        printf("name=");
        scanf("%s",pArr[i].name);
        printf("score=");
        scanf("%f",&pArr[i].score);
        printf("\n");
   
}



void output(struct Student *pArr)
{
           
        printf("age=");
        printf("%d\n",pArr[i].age);
        printf("name=");
        printf("%s\n",pArr[i].name);
        printf("score=");
        printf("%f\n",pArr[i].score);
        printf("\n");
    }
}
搜索更多相关主题的帖子: 考试成绩 age 信息 
2012-03-07 22:08
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:2 
struct Student  pArr;
上面不是结构指针呢。。。

你对他malloc 不是内存泄露吗!!!!!!

用心做一件事情就这么简单
2012-03-07 22:12
姚杰
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:169
专家分:477
注 册:2010-6-1
收藏
得分:0 
回复 2楼 小鱼儿c
但是加*后,外部函数,是不是要定义为**类型呢?我试过了都是有错的,我也知道是这一块出错,但是学不到家,改不了啊

[ 本帖最后由 姚杰 于 2012-3-7 22:36 编辑 ]

持之以恒,别留遗憾,加油
2012-03-07 22:33
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:15 
#include<stdio.h>
#include<malloc.h>

struct Student
{
    char name[20];
    int age;
    float score;
};

void input2(struct Student *,int i);
void output(struct Student *,int i);

int main(void)
{
    struct Student  *pArr;
    int i,len;
    printf("请输入学生的个数\n");
    printf("len=");
    scanf("%d",&len);
    pArr=(struct Student *)malloc(len*sizeof(struct Student ));

  

    for(i=0;i<len;i++)   
   {
     input2( pArr,i);
    }  
   
     printf("\n\n");
     printf("请输出学生信息\n");
     printf("\n\n");

   for(i=0;i<len;i++)
    {   
     printf("请输出第%d个学生信息\n",i+1);
     output( pArr,i);
    }
   
    return 0;
}


void input2(struct Student *pArr,int i)
{     
      
        printf("请输入第%d个学生信息\n",i+1);
        printf("age=");
        scanf("%d",&pArr[i].age);
        printf("name=");
        scanf("%s",pArr[i].name);
        printf("score=");
        scanf("%f",&pArr[i].score);
        printf("\n");
   
}



void output(struct Student *pArr,int i)
{
      
        printf("age=");
        printf("%d\n",pArr[i].age);
        printf("name=");
        printf("%s\n",pArr[i].name);
        printf("score=");
        printf("%f\n",pArr[i].score);
        printf("\n");
   
}
2012-03-07 23:25
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:0 
这个代码可以完成你的要求,但是有点麻烦,不够简洁。
2012-03-07 23:25
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:1 
我觉得吧,您的头文件应该把<malloc.h>改为<stdlib.h>;
struct Student  pArr;中的pArr应该改成pArr[3];
另外不要在主函数里写一些分支函数应该写的东西,有点乱。
具体的写法楼主应该会的,加油!!
 
2012-03-07 23:37
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:0 
嗯,顶二楼
2012-03-07 23:41
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:2 
好多变量定义了却没去使用, 有的变量使用了却未定义, 有的变量定义后使用了却未初始化,要求循环的地方却没处理。好好检查下吧。

梅尚程荀
马谭杨奚







                                                       
2012-03-08 11:15
姚杰
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:169
专家分:477
注 册:2010-6-1
收藏
得分:0 
回复 8楼 有容就大
我也发现了,外部函数的*根本就没用到,导致外部函数值是局部函数,没有起到预期的效果,哎,我的函数学得还是有大问题呀。还是要慢慢研究呀

持之以恒,别留遗憾,加油
2012-03-08 11:26
姚杰
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:169
专家分:477
注 册:2010-6-1
收藏
得分:0 
回复 5楼 sunlang1234
谢谢咯。。。知道怎么错了。。。。。。。。。。。。

持之以恒,别留遗憾,加油
2012-03-08 11:46
快速回复:学生考试成绩信息登记的程序,出了点问题,帮帮忙吧。
数据加载中...
 
   



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

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