鱼C论坛

 找回密码
 立即注册
查看: 3365|回复: 11

求解数据为什么是0.00

[复制链接]
发表于 2012-6-6 23:08:51 | 显示全部楼层 |阅读模式
50鱼币
文件1;
#include<stdio.h>
#define M 5
#define N 10
double score[N][M];
double ping[N],jun[M];
int r,c;
int main()
{

int i,j;
double h;
void intput(void);                            // 输入成绩
void aver1(void);                             // 学生平均成绩
void aver2(void);                             //课程平均成绩
double zuigao(double array[N][M]);            // 最高成句的学号
intput();                                     //输入成绩
aver1();
aver2();
printf("\n NO.    core1   core2    core3   core4    core5\n");
for(i=0;i<N;i++)
{printf("NO.%d",i+1);
for(j=0;j<M;j++)
  printf("%8.2f",score[i][j]);  //这里score[i][j]编译后全是0.00,为什么
printf("%8.2f\n",ping[i]);
}
printf("\n 平均成绩:");
for(j=0;j<M;j++)
  printf("%6.2f",jun[j]);
printf("\n");
h=zuigao(score);
printf("最高是%6.2f,学生号是%d,课程是%d",h,r,c);
return 0;
}
文件2;
#include<stdio.h>
#define M 5
#define N 10
extern score[N][M];
extern ping[N],jun[M];
extern r,c;
void intput(void)
{int i,j;
for(i=0;i<N;i++)
{printf("请输入学号和成绩%d:",i+1);
for(j=0;j<M;j++)
scanf("%lf",&score[i][j]);    // score[i][j] 没储存进去
}
}
void aver1(void)
{int i,j;
double s;
for(i=0;i<N;i++)
{
for(j=0,s=0;j<M;j++)
  s=s+score[i][j];
ping[i]=s/5.0;
}
}
void aver2(void)
{int i,j;
double s;
for(j=0;j<M;j++)
{ s=0;
for(i=0;i<N;i++)
s=s+score[i][j];
jun[j]=s/10.0;
}
}
double zuigao(double array[N][M])
{double high;
int i,j;
high=array[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(high<array[i][j])
{ high=array[i][j];
r=i+1;
c=j+1;
}
return high;
}
程序如果放在一个文件里就行 分开2个就不行 哎头疼 求个高手解答

最佳答案

查看完整内容

文件一文件二
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 23:08:52 | 显示全部楼层
文件一
  1. #include<stdio.h>
  2. #define M 5
  3. #define N 10
  4. char num[N][20];
  5. double score[N][M];
  6. double ping[N],jun[M];
  7. int r,c;
  8. int main()
  9. {

  10.         int i,j;
  11.         double h;
  12.         void intput(void);                            // 输入成绩
  13.         void aver1(void);                             // 学生平均成绩
  14.         void aver2(void);                             //课程平均成绩
  15.         double zuigao(double array[N][M]);            // 最高成句的学号
  16.         intput();                                     //输入成绩,学号
  17.         aver1();
  18.         aver2();
  19.         printf("\n NO.    core1   core2    core3   core4    core5\n");
  20.         for(i=0;i<N;i++)
  21.         {
  22.                 printf("NO.%d",i+1);
  23.                 for(j=0;j<M;j++)
  24.                   printf("%8.2f",score[i][j]);  //这里score[j]编译后全是0.00,为什么
  25.                 printf("%8.2f\n",ping[i]);
  26.         }
  27.         printf("\n 平均成绩:");
  28.         for(j=0;j<M;j++)
  29.         printf("%6.2f",jun[j]);
  30.         printf("\n");
  31.         h=zuigao(score);
  32.         printf("最高是%6.2f,学生号是%s,课程是%d\n",h,num[r],c+1);
  33.         return 0;
  34. }

  35. /*
  36. 001 90 90 90 90 90
  37. 001 90 90 90 90 90
  38. 003 90 90 90 90 90
  39. 004 90 90 90 90 90
  40. 005 90 90 90 90 90
  41. 006 90 90 90 90 90
  42. 007 90 90 90 90 90
  43. 008 90 90 90 90 90
  44. 009 90 90 90 90 90
  45. 010 90 90 90 90 90
  46. */
复制代码
文件二
  1. #include <stdio.h>

  2. #define M 5
  3. #define N 10
  4. extern char num[N][20];
  5. extern double score[N][M];
  6. extern double ping[N],jun[M];
  7. extern int r,c;

  8. void intput(void)
  9. {
  10.         int i,j;
  11.         for(i=0;i<N;i++)
  12.         {
  13.                 printf("请输入学号和成绩%d:",i+1);
  14.                 scanf("%s",num[i]);
  15.                 for(j=0;j<M;j++)
  16.                 scanf("%lf",&score[i][j]);    // score[i][j] 没储存进去
  17.         }
  18. }

  19.   void aver1(void)
  20. {
  21.         int i,j;
  22.         double s;
  23.         for(i=0;i<N;i++)
  24.         {
  25.                 for(j=0,s=0;j<M;j++)
  26.                                 s=s+score[i][j];
  27.                 ping[i]=s/5.0;
  28.         }
  29. }

  30. void aver2(void)
  31. {
  32.         int i,j;
  33.         double s;
  34.         for(j=0;j<M;j++)
  35.         {
  36.                 s=0;
  37.                 for(i=0;i<N;i++)
  38.                 s=s+score[i][j];
  39.                 jun[j]=s/10.0;
  40.         }
  41. }

  42. double zuigao(double array[N][M])
  43. {
  44.         double high;
  45.         int i,j;
  46.         high=array[0][0];
  47.         for(i=0;i<N;i++)
  48.         for(j=0;j<M;j++)
  49.         if(high<array[i][j])
  50.         {
  51.                 high=array[i][j];
  52.                 r=i+1;
  53.                 c=j+1;
  54.         }
  55.         return high;
  56. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 23:22:51 | 显示全部楼层
对 就是文件2 在编译的时候出现控制台程序\c0714\c02.c(24) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
E:\控制台程序\c0714\c02.c(35) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
但是能通过 说我精度错误 不明白 点了以后小箭头 分别出现在ping[i]=s/5.0;和jun[j]=s/10.0;前面 很奇怪
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-7 19:28:33 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-7 19:30:47 | 显示全部楼层
wangyexin 发表于 2012-6-7 12:46
文件一文件二

经过 思考 我发现 在文件2的时候 extern 后面 要加 变量的类型 然后就对了 郁闷 可是书上说 不需要加啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-7 19:55:29 | 显示全部楼层
猪八哥 发表于 2012-6-7 19:30
经过 思考 我发现 在文件2的时候 extern 后面 要加 变量的类型 然后就对了 郁闷 可是书上说 不需要加啊

extern后如果不加数据类型,直接加变量,等同于extern int
如果是int型的 不加没事 但是是其他类型 就必须要加
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-7 20:11:33 | 显示全部楼层
wangyexin 发表于 2012-6-7 19:55
extern后如果不加数据类型,直接加变量,等同于extern int
如果是int型的 不加没事 但是是其他类型 就必 ...

谢谢哦 弄了2个晚上明白了  出去锻炼了 88
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-7 20:12:05 | 显示全部楼层
wangyexin 发表于 2012-6-7 19:55
extern后如果不加数据类型,直接加变量,等同于extern int
如果是int型的 不加没事 但是是其他类型 就必 ...

50鱼币没了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-12 15:25:02 | 显示全部楼层
{:2_25:}哈哈我又来了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-12 15:25:33 | 显示全部楼层
真是太悲剧了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-12 15:32:41 | 显示全部楼层
哎鱼逼好难挣啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-12 15:34:07 | 显示全部楼层
高手们给点意见啊,难道每天灌水????俺不想也没那个钱去买啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-8 02:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表