| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 918 人关注过本帖
标题:结构体,统计学生数据
只看楼主 加入收藏
tiw
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-2-13
收藏
 问题点数:0 回复次数:4 
结构体,统计学生数据
系统总是提示少了个括号 )
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#define F "%d\t%s\t%c\t%d\t%f\t%f\t%f\t%f\t%f\n"

struct studen
{  int num;
   char name[20];
   char sex;
   int age;
   float score[3];
   float total;
   float avg;

}stu[2];

cout(struct studen stu[].score,int x)//系统总提示这里少个括号
{  float total=0,avg,n;
   for(n=0;n<x;n++)
   total+=stu[].score[n];
   return total;
}

main()
{ int n,m;
  char ch;
  char str[n];
  printf("input学生人数n:\n");
  scanf("%d",&n);
  for(m=0;m<2;m++)
{
  printf("enter all data of stu[%d]:\n",m);
  gets(str);
  stu[m].num=atol(str);
  gets(stu[m].name);
  stu[m].sex=getchar();
  gets(str);
  stu[m].age=atoi(str);
  ch=getchar();
  for(m=0;m<3;m++)
  {  get(str);
     stu[m].score=atof(str);

  }
 
  stu[m].total=cout(stu[].score,3);
  stu[m].avg=stu[m].total/3;

}
  
printf("\n姓名\t学号\t年龄\t性别\t计算机\t数学\t英语\t总分\t平均分\n");
for(m=0;m<n;m++)
printf("F",stu[m].num,stu[m].name,stu[m].sex,stu[m].age,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].total,stu[m].avg);

}


在2楼的高手指点下,程序做了修改,但还是在调用函数那出了点问题~~
有一个warning:Suspicious pointer conversion   可疑的指针转换。通常是使用了基本类型不匹配的指针
新的程序如下:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define F "%d\t%s\t%c\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n"

struct studen
{
    int num;
    char name[20];
    char sex;
    int age;
    float score[3];
    float total;
    float avg;

}stu[1];

float cout(struct studen *stu,int x)
    float total=0;
    int n ;
    for(n=0;n<x;n++)
    total+=stu->score[n];
    return total;
}

int main()
{
    int n,m;
    char str[100];
    printf("input学生人数n:\n");
    for(m=0;m<1;m++)
    {
    printf("enter all data of stu[%d]:\n",m);
    gets(str);
    stu[m].num=atol(str);
    gets(stu[m].name);
    stu[m].sex=getchar();
    getchar();
    gets(str);
    stu[m].age=atoi(str);
    for(n=0;n<3;n++)
    { gets(str);
      stu[m].score[n]=atof(str);
    }

    stu[m].total=cout(stu->score,3);
    stu[m].avg=stu[m].total/3;

    }

    printf("\nnum\tname\tsex\tage\tcmptr\tmath\tEglish\ttotal\tavg\n");
    for(m=0;m<1;m++)
    printf( F,stu[m].num,stu[m].name,stu[m].sex,stu[m].age,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].total,stu[m].avg);
  return 0;
}

[[it] 本帖最后由 tiw 于 2008-3-30 21:56 编辑 [/it]]
搜索更多相关主题的帖子: 结构体 数据 学生 统计 
2008-03-27 16:14
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
哈哈,你的错误一大把啊……
我改的,可以编译,但是不知道功能怎么样:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define F "%d\t%s\t%c\t%d\t%f\t%f\t%f\t%f\t%f\n"

struct studen
{  
    int num;
    char name[20];
    char sex;
    int age;
    float score[3];
    float total;
    float avg;
    
}stu[2];

float cout(struct studen *stu,int x)//系统总提示这里少个括号
{
    float total=0;
    int n = 0;
    for(n=0;n<x;n++)
        total+=stu->score[n];
    return total;
}

main()
{
    int n,m;
    char ch;
    char str[1000];
    printf("input学生人数n:\n");
    scanf("%d",&n);
    for(m=0;m<2;m++)
    {
        printf("enter all data of stu[%d]:\n",m);
        gets(str);
        stu[m].num=atol(str);
        gets(stu[m].name);
        stu[m].sex=getchar();
        gets(str);
        stu[m].age=atoi(str);
        ch=getchar();
        for(m=0;m<3;m++)
        { // get(str);//get是什么函数呀?
        stu[m].score[0]=atof(str);
        
        }
        
        //stu[m].total=cout(stu[].score,3);有问题,我不知道你什么意思……

        stu[m].avg=stu[m].total/3;
        
    }
    
    printf("\n姓名\t学号\t年龄\t性别\t计算机\t数学\t英语\t总分\t平均分\n");
    for(m=0;m<n;m++)
        printf("F",stu[m].num,stu[m].name,stu[m].sex,stu[m].age,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].total,stu[m].avg);
    
}

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-03-27 18:00
shy1201
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-3-18
收藏
得分:0 
2楼高手啊
2008-03-27 19:38
tiw
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-2-13
收藏
得分:0 
回复 2# 的帖子
呵呵,我刚学到结构体的!~~~~谢谢flyue了
 for(m=0;m<3;m++)
        { // get(str);//get是什么函数呀?
        stu[m].score[0]=atof(str);
        
        }
我搞错了,是gets
//stu[m].total=cout(stu[].score,3);有问题,我不知道你什么意思……
这是用结构体数组和3 做实参
cout里做循环
*stu指针还没看~~~
2008-03-27 22:29
tiw
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-2-13
收藏
得分:0 
解决了~~~~但问题还在~~~就是结构体做实参或指针做实参的规则不知道
修改后的能用的程序如下:功能是,输入学生的数据,输出总分和平均分~~
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define F "%d\t%s\t%c\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n"

struct studen
{
    int num;
    char name[20];
    char sex;
    int age;
    float score[3];
    float total;
    float avg;

}stu[1];

float cout(/*struct studen *stu,*/int x)
{
    float total=0;
    int n ;
    for(n=0;n<x;n++)
    total+=stu->score[n];
    return total;
}

int main()
{
    int n,m;
    char str[100];
    printf("input学生人数n:\n");
    for(m=0;m<1;m++)
    {
    printf("enter all data of stu[%d]:\n",m);
    gets(str);
    stu[m].num=atol(str);
    gets(stu[m].name);
    stu[m].sex=getchar();
    getchar();
    gets(str);
    stu[m].age=atoi(str);
    for(n=0;n<3;n++)
    { gets(str);
      stu[m].score[n]=atof(str);
    }

       stu[m].total=cout(3);
    stu[m].avg=stu[m].total/3;

    }

    printf("\nnum\tname\tsex\tage\tcmptr\tmath\tEglish\ttotal\tavg\n");
    for(m=0;m<1;m++)
    printf( F,stu[m].num,stu[m].name,stu[m].sex,stu[m].age,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].total,stu[m].avg);
  return 0;
}
2008-03-30 15:44
快速回复:结构体,统计学生数据
数据加载中...
 
   



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

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