| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:初学者求助
只看楼主 加入收藏
lixueyong121
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-11-15
收藏
 问题点数:0 回复次数:3 
初学者求助

这是一道学生录入题,我用指针做的,结果很乱!请朋友们帮忙改改,谢谢了!(必须用指针做啊!呵!!!)

#include "stdio.h"
#define row 5
#define list 3

int main()
{
float (*p)[3];//五名学生,三门成绩指针
float *p_age,*p_sum;//每个学生的平均数,总成绩指针
float a[5][3];//五名学生,三门成绩;
float age[5],sum[5];//每个学生的平均数,总成绩
float l1[5],l2[5],l3[5];
float *pl_1,*pl_2,*pl_3;//二维数组给一维数组要用到指针
int i,j;
float s = 0,n,m,k,b,c,d;//交换成绩时要用到的数据
float age_all = 0,sum_all = 0;//五个学生的总平均数

//输入学生成绩函数
for(i = 0; i < row; i++)
{
printf("-----------请输入第%d个学生成绩--------------\n",i+1);
for(j = 0; j < list; j++)
{
printf("请输入成绩:","\n");
scanf("%f",&a[i][j]);
s = s + a[i][j];
sum[i] = s;
age[i] = s / 3;
}

sum_all +=sum[i];
s = 0;

}
age_all = sum_all / 5;
p = a;//初始化
p_age = age;//初始化
p_sum = sum;//初始化
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;

//把二维数组,按列分配给一维数组函数
for(i = 0; i < row; i++)
{
*(pl_1+i) = *(*(p+i)+0);
}
for(i = 0; i < row; i++)
{
*(pl_2+i) = *(*(p+i)+1);
}
for(i = 0; i < row; i++)
{
*(pl_3+i) = *(*(p+i)+2);
}

//每科成绩最高分函数
//语文成绩最高分
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;
b = 0;
for(i =0; i < row; i++)
{
if (b < *(pl_1+i))
{
b = *(pl_1+i);
}
}
//数学成绩最高分
c = 0;
for(i =0; i < row; i++)
{
if (c < *(pl_2+i))
{
c = *(pl_2+i);
}
}
//英语成绩最高分
d = 0;
for(i =0; i < row; i++)
{
if (d < *(pl_3+i))
{
d = *(pl_3+i);
}

}
p_age = age;//初始化
p_sum = sum;//初始化
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;

//按平成绩、总成绩排序函数
for(i =0; i < row; i++)
{
for(j =0; j < row-i-1; j++)
{
if ((*(p_age+j) < *(p_age+j+1)) && (*(p_sum+j) < *(p_sum+j+1)))
{
//交换平均数
n = *(p_age+j);
*(p_age+j) = *(p_age+j+1);
*(p_age+j+1)= n;

//交换总成绩
m = *(p_sum+j);
*(p_sum+j) = *(p_sum+j+1);
*(p_sum+j+1) = m;
//交换成绩
k = *(pl_1+i);
*(pl_1+i) = *(pl_1+i+1);
*(pl_1+i+1) = k;
//=================
k = *(pl_2+i);
*(pl_2+i) = *(pl_2+i+1);
*(pl_2+i+1) = k;
//=================
k = *(pl_3+i);
*(pl_3+i) = *(pl_3+i+1);
*(pl_3+i+1) = k;
}

}

p_age = age;//初始化
p_sum = sum;//初始化
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;

}


//把一维数组里的值再给二维数组函数
p_age = age;//初始化
p_sum = sum;//初始化
p = a;
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;
for(i = 0; i < row; i++)
{
*(*(p+i)+0) = *(pl_1+i) ;

}
for(i = 0; i < row; i++)
{
*(*(p+i)+1) = *(pl_2+i);
}
for(i = 0; i < row; i++)
{
*(*(p+i)+2)= *(pl_3+i);
}

//显示学生成绩函数
p_age = age;//初始化
p_sum = sum;//初始化
p = a;
printf("\n-------------按平成绩、总成绩排序---------------------------\n");
printf("语文\t数学\t英语\t平均成绩\t总成绩\n");
printf("\n");
for(i = 0; i < row; i++)
{
for(j = 0; j < list; j++)
{

printf("%.2f\t",*(*(p+i)+j));
}
printf("%.2f\t\t,%.2f\t",*(p_age+i),*(p_sum+i));
printf("\n----------------------------------------\n");
}
printf("语文成绩最高分是:%.2f\t",b);
printf("\n");
printf("数学成绩最高分是:%.2f\t",c);
printf("\n");
printf("英语成绩最高分是:%.2f\t",d);
printf("\n");
printf("五个学生的总平均成绩:%.2f\t",age_all);
printf("\n");
printf("\n");


//按语文成绩排序函数
p_age = age;//初始化
p_sum = sum;//初始化
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;
for(i =0; i < row; i++)
{
for(j =0; j < row-i-1; j++)
{
if (*(pl_1+i) < *(pl_1+i+1))
{
//交换平均数
n = *(p_age+j);
*(p_age+j) = *(p_age+j+1);
*(p_age+j+1)= n;

//交换总成绩
m = *(p_sum+j);
*(p_sum+j) = *(p_sum+j+1);
*(p_sum+j+1) = m;
//交换成绩
k = *(pl_1+i);
*(pl_1+i) = *(pl_1+i+1);
*(pl_1+i+1) = k;
//=================
k = *(pl_2+i);
*(pl_2+i) = *(pl_2+i+1);
*(pl_2+i+1) = k;
//=================
k = *(pl_3+i);
*(pl_3+i) = *(pl_3+i+1);
*(pl_3+i+1) = k;
}

}
p_age = age;//初始化
p_sum = sum;//初始化
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;
}
//把一维数组里的值再给二维数组函数
p_age = age;//初始化
p_sum = sum;//初始化
p = a;
pl_1 = l1;
pl_2 = l2;
pl_3 = l3;
for(i = 0; i < row; i++)
{
*(*(p+i)+0) = *(pl_1+i) ;

}
for(i = 0; i < row; i++)
{
*(*(p+i)+1) = *(pl_2+i);
}
for(i = 0; i < row; i++)
{
*(*(p+i)+2)= *(pl_3+i);
}
printf("\n-------------按语文成绩排序---------------------------\n");
printf("语文\t数学\t英语\n");
printf("\n");
for(i = 0; i < row; i++)
{
for(j = 0; j < list; j++)
{

printf("%.2f\t",*(*(p+i)+j));
}
printf("\n---------------------\n");
}

return 0;
}

搜索更多相关主题的帖子: 二维 录入 include color 
2006-11-15 09:52
lixueyong121
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-11-15
收藏
得分:0 

咋没人回复呀!很急的呀!

2006-11-16 16:14
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

如果学了结构体那就用上它.
代码比较散.

typedef struct{
//long num;
//char name[20];
double score[N];
double vag;
double sum;
}stu;


倚天照海花无数,流水高山心自知。
2006-11-16 16:27
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
晕!这么长的代码,我想没几个人会帮你看。

由于工作,N久都没来了!
2006-11-16 16:29
快速回复:初学者求助
数据加载中...
 
   



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

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