| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1162 人关注过本帖
标题:对我来说是一道灰常有难度的题目,求看看
只看楼主 加入收藏
吕宏
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2016-4-12
结帖率:86.67%
收藏
已结贴  问题点数:20 回复次数:2 
对我来说是一道灰常有难度的题目,求看看
图片附件: 游客没有浏览图片的权限,请 登录注册

这是题目要求
图片附件: 游客没有浏览图片的权限,请 登录注册

这是想达到的效果
#include<stdio.h>
#define M 5
#define N 5
void averageput(float *);/*计算每个学生各门课程的平均成绩*/
float *averageall(float *);/*计算全班每门课程的平均成绩*/
void below(float *,float *);
int main()
{
    char a[M][10],(*pa)[10]=a;
    int i,j;
   
    for(j=0;j<M;j++)
    scanf("%s",*pa+j);
    float b[N][M];
    float *pb1=&b[0][0];
    float *pd;

    for(i=0;i<N;i++)
    for(j=0;j<M;j++)
    scanf("%f",pb1+M*i+j);
    averageput(pb1);
   
    pd=averageall(pb1);
    below(pb1,pd);
    return 0;
}
void averageput(float *p)
{
    float c[N],*pc=c,t=0,*pp=p;
    int i,j;
    for(i=0;i<N;i++)
    {
      for(j=0;j<M;j++)
      t+=*(pp+M*i+j);
      *(pc+i)=t/M;
      printf("Average score of is %.2f\n",*(pc+i));
      t=0;
    }
}
float *averageall(float *p)
{
    float c[M],*pc=c,*pc2=c,t=0,*pp=p;
    int i,j;
    for(i=0;i<M;i++)
    {
      for(j=0;j<N;j++)
      t+=*(pp+N*i+j);
      *(pc+i)=t/N;
      printf("Average score of is %.2f\n",*(pc+i));
      t=0;
    }
    return pc2;
}
void below(float *p,float *pd)
{
    int i,j,s[M],m[M],n[M],*ps=s,*pm=m,*pn=n;
    float *pp=p;
    for(i=0;i<M;i++)
    {
        *(ps+i)=0;
        *(pm+i)=0;
        *(pn+i)=0;
        for(j=0;j<N;j++){
        if(*(pp+N*i+j)<*(pd+i))
        *(ps+i)+=1;
        if(*(pp+N*i+j)<60.0)
        *(pm+i)+=1;
        if(*(pp+N*i+j)>=90.0)
        *(pn+i)+=1;}
        printf("Number of students lowber than avg of is %d\n",*(ps+i));
        
    }for(i=0;i<M;i++)
    {
        *(ps+i)=0;
        *(pm+i)=0;
        *(pn+i)=0;
        for(j=0;j<N;j++){
        if(*(pp+N*i+j)<*(pd+i))
        *(ps+i)+=1;
        if(*(pp+N*i+j)<60.0)
        *(pm+i)+=1;
        if(*(pp+N*i+j)>=90.0)
        *(pn+i)+=1;}
        
        printf("Number of students fail is %d\n",*(pm+i));
        
    }for(i=0;i<M;i++)
    {
        *(ps+i)=0;
        *(pm+i)=0;
        *(pn+i)=0;
        for(j=0;j<N;j++){
        if(*(pp+N*i+j)<*(pd+i))
        *(ps+i)+=1;
        if(*(pp+N*i+j)<60.0)
        *(pm+i)+=1;
        if(*(pp+N*i+j)>=90.0)
        *(pn+i)+=1;}
        
        printf("Number of students perfect is %d\n",*(pn+i));
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册

这是我能做到的,还大部分是从网上找的
现在有两个疑问想请教
1.该用什么形式输入学生姓名
2.在输出中怎么加入学科和学生姓名
搜索更多相关主题的帖子: include 课程 
2016-05-24 09:45
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
参考char a[M][10],(*pa)[10]=a;这个应该是用来保存科目名字的,再定一个char name[N][10]就行。

[此贴子已经被作者于2016-5-24 10:25编辑过]

2016-05-24 10:24
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:10 
学科和学生姓名可以定义为char型数组,或者你定义个结构体数组都可以;至于使用指针引用各数组的元素,就把指针指向数组的首地址,然后通过指针+不同数字,来指向需要引用的元素,只要注意指针移动的长度就差不多了;至于题目中的(1)(2)(3)不用看题目多就怕,无非是一个个函数而已,你分别定义一个自定义函数对应一个功能就可以解决的。加油,相信自己搞的定

[此贴子已经被作者于2016-5-24 10:28编辑过]

2016-05-24 10:27
快速回复:对我来说是一道灰常有难度的题目,求看看
数据加载中...
 
   



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

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