| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 516 人关注过本帖
标题:大家看看 怎么编
只看楼主 加入收藏
s水
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-7
收藏
 问题点数:0 回复次数:6 
大家看看 怎么编
2个学生  4门课   用函数调用   (结构体数组变量体类型)
1.从键盘上输入(学号,姓名,4门课成绩),计算每人的平均成绩
2.根据平均成绩排名,安名次输出所有的数据(学号,姓名,4门课的成绩,平均成绩及名次)
搜索更多相关主题的帖子: 多多方法 
2008-12-08 11:19
qiuqiu123456
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-1-24
收藏
得分:0 
main()
{ int number;
  char(name);
  float a,b,c,d,e;
  printf("---"\n,)
  scanf("%d%d%d%d",a,b,c,d);
  e=(a+b+c+d)/4
  
}
本人也是刚学,就会一点点。献丑了
2008-12-08 14:00
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第2楼 qiuqiu123456 的帖子
支持一下,虽然您的回答是错误的,但您初学就乐于帮助别人,对您表示敬意。

PS:楼主,这是很简单的结构体题目,看看书自己就能写出这个程序来。您最好亲自试一试,然后有不明白的地方再来求助。
2008-12-08 19:35
jinboagg
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-9
收藏
得分:0 
个人拙见,我觉得如果用结构体的话会比较方便做。。
2008-12-08 19:47
jinboagg
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-9
收藏
得分:0 
#include <stdio.h>
#define stnum 2
#define scnum 4

typedef struct
{
    char* name;
    char* ID;
    int score[scnum];
    float avg;
}stinfo;


int input (stinfo* stu)
{
    int i = 0;
    int j ;
    float sum;

    while(i < stnum-1)
    {
        sum = 0;
        printf("Name:\n");
        scanf("%s",stu[i].name);
        printf("\nID\n");
        scanf("%s",stu[i].ID);
        printf("");
        for(j=0;j<scnum;j++)
        {
            scanf("%d",&stu[i].score[j]);
            sum = sum +stu[i].score[j];
        }
        stu[i].avg = sum/scnum;
    }
    return 0;
}
int sort(stinfo* stu)
{
    stinfo temp;
    int i,j;
    for(i = 0;i < scnum;i++)
    {
        for(j = 0;j < i;j++)
        {
            if(stu[j].avg < stu[j+1].avg)
            {
                temp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = temp;
            }
        }
    }
    return 0;
}

int output(stinfo* stu)
{
    int i,j;
    printf("\n");
    for(i = 0;i<stnum;i++)
    {
        printf("%s\t",stu[i].name);
        printf("%s\t",stu[i].ID);
        for(j = 0;j<scnum;j++)
        {
            printf("%d ",stu[i].score);
        }
        printf("\t");
        printf("%3f",stu[i].avg);
        printf("\n");
    }
    return 0;
}

int main()
{
    stinfo stu[stnum];
    input(stu);
    sort(stu);
    output(stu);
    getchar();
    return 0;
}
收到的鲜花
  • 广陵绝唱2008-12-09 03:46 送鲜花  41朵   附言:学习态度很好,值得加分。
2008-12-08 21:27
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
楼主写的程序自己没运行过吧?我试验了一下,不能运行成功。下面把你的程序小改了一下,你参照一下。
程序代码:
/*--------------------------------------------------------

       你所定义的几个函数都是不需要返回值的,所以帮你改回来了,全是
    void 型的函数。

        另外排序函数应该是输出函数的前面,不然得加上函数声明,也
    帮你改过来了。

-------------------------------------------------------*/
#include <stdio.h>
#define stnum 2
#define scnum 4

typedef struct
{
    /*char* name;
    char* ID;
    这里不应该是这样子定义滴,这里应该是数组,不是指针*/
    char name[30];
    char ID[20];
    int score[scnum];
    float avg;
}stinfo;
void sort(stinfo* stu)
{
    stinfo temp;
    int i,j;
    for(i = 0;i < scnum;i++)
    {
        /*for(j = 0;j < i;j++)
        {
            if(stu[j].avg < stu[j+1].avg)
            {
                temp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = temp;
            }              改为 */
        for(j = i+1;j<scnum;++j)
            if(stu[i].avg<stu[j].avg)
            {
                temp=stu[i];
                stu[i]=stu[j];
                stu[j]=temp;
             }

    }
  /*  return 0;        */
}

void input (stinfo* stu)
{
    int i = 0;
    int j ;
    float sum;

    while(i<stnum)    /*  此处i值未改变,死循环 */
    {
        sum = 0;
        printf("Name:\n");
        scanf("%s",stu[i].name);
        printf("\nID\n");
        scanf("%s",stu[i].ID);
        printf("input score[]\n");/* 此处是什么意思?为你加上点语句吧 */
        for(j=0;j<scnum;j++)
        {
            scanf("%d",&stu[i].score[j]);
            sum = sum +stu[i].score[j];
        }
        stu[i].avg = sum/scnum;
        i++;  /* 加上自加语句 */
    }
     /*return 0; why???  */
}
void output(stinfo* stu)
{
    int i,j;
    printf("\n");
    for(i = 0;i<stnum;i++)
    {
        printf("%s\t",stu[i].name);
        printf("%s\t",stu[i].ID);
        for(j = 0;j<scnum;j++)
        {
            printf("%d ",stu[i].score/* 少了变量值 j */[j]);
        }
        printf("\t");
        printf("%3f",stu[i].avg);
        printf("\n");
    }
  /*  return 0;        */
}

int main(void)
{
    stinfo stu[stnum];
    input(stu);
    sort(stu);
    output(stu);
    getchar();
    return 0;
}
2008-12-09 03:45
s水
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-7
收藏
得分:0 
开始努力的学了
我想问问什么时候返回的值不需要在定义一个新的字母,什么时间只是引用函数名加变量!
2008-12-09 12:48
快速回复:大家看看 怎么编
数据加载中...
 
   



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

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