鱼C论坛

 找回密码
 立即注册
查看: 5070|回复: 27

还是谭浩强7章14题目

[复制链接]
发表于 2012-6-6 19:54:35 | 显示全部楼层 |阅读模式
20鱼币
文件1:
#include<stdio.h>
#define M 5
#define N 10
int num[M];
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:
extern num[M];
extern score[N][M];
extern ping[N],jun[M];
int 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[j];
r=i+1;
c=j+1;
}
return high;
编译通过显示错误E:\控制台程序\c0714\c02.c(35) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
[/i][/i][/i][/i][/i][/i][/i][/i][/i]
[i][i][i][i][i][i][i][i][i][i]:\控制台程序\c0714\c02.c(35) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
但是能编译,输入数据后感觉又没储存到score[j]里,不知道为什么,请注意是2个文件


[/i][/i][/i][/i][/i][/i][/i][/i][/i]

最佳答案

查看完整内容

1>d:\c++\c文件存储\1234\1234\1.c(13) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : 参见“scanf”的声明 说scanf的使用有错!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 19:54:36 | 显示全部楼层

1>d:\c++\c文件存储\1234\1234\1.c(13) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : 参见“scanf”的声明
说scanf的使用有错!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 19:55:31 | 显示全部楼层
补充。文件2 我写个#include<stdio.h>
#define M 5
#define N 10
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 20:09:58 | 显示全部楼层
for(i=0;i<N;i++) {printf("请输入学号和成绩%d:",i+1); for(j=0;j<M;j++) scanf("%lf",&score[j]);    // 输入调试的时候发现score[j] 没储存进去 }
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 20:10:49 | 显示全部楼层
没发现学号的输入部分·
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 20:46:47 | 显示全部楼层
akon 发表于 2012-6-6 20:10
没发现学号的输入部分·

学号 多写了一个 就输入成绩就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 21:39:34 | 显示全部楼层
对了 上面的 int num[]多写的 没事 别管他  谁告诉我 为什么 输入的时候全是0.00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 21:46:23 | 显示全部楼层
猪八哥 发表于 2012-6-6 21:39
对了 上面的 int num[]多写的 没事 别管他  谁告诉我 为什么 输入的时候全是0.00

score定义的是一个二维数组,之后你输入的时候为什么是score【j】?看看这样写行不!score[i][j];
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 21:50:28 | 显示全部楼层
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 郁闷 写错了 问题还是上面问的 为什么全是0.00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 21:51:05 | 显示全部楼层
akon 发表于 2012-6-6 21:46
score定义的是一个二维数组,之后你输入的时候为什么是score【j】?看看这样写行不!score[j];

额  复制 错了 呵呵  不是这个原因导致的0.00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 22:05:58 | 显示全部楼层
猪八哥 发表于 2012-6-6 21:51
额  复制 错了 呵呵  不是这个原因导致的0.00

我用vs2008编译不能通过啊~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 22:09:02 | 显示全部楼层
文件二? 是保存在两个文件里?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 22:13:10 | 显示全部楼层
wangyexin 发表于 2012-6-6 22:09
文件二? 是保存在两个文件里?

对啊 对啊对啊 对啊对啊 对啊对啊 对啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 22:14:09 | 显示全部楼层
文件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;
}

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

使用道具 举报

 楼主| 发表于 2012-6-6 22:15:29 | 显示全部楼层
akon 发表于 2012-6-6 22:05
我用vs2008编译不能通过啊~

VC 通过了啊 但是 数据全是0.00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 22:23:37 | 显示全部楼层
你两个都是.h吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 22:25:01 | 显示全部楼层
wangyexin 发表于 2012-6-6 22:23
你两个都是.h吗

对啊对啊对啊对啊对啊对啊对啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 22:26:00 | 显示全部楼层
akon 发表于 2012-6-6 22:23
1>d:\c++\c文件存储\1234\1234\1.c(13) : warning C4996: 'scanf': This function or variable may be un ...

我也发现了 好像是 但是不知道为什么错。。
假如啊 for(i=0;i<M;i++)
                        for(j=0;j<N;j++)
                                scnaf("%d",&a[i][j]);  我发现 这个好像不能用 只能输入一维数组  二维 数组 输入不进去
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-6 22:28:53 | 显示全部楼层
猪八哥 发表于 2012-6-6 22:25
对啊对啊对啊对啊对啊对啊对啊

两个文件的扩展名是?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-6 22:33:22 | 显示全部楼层
wangyexin 发表于 2012-6-6 22:28
两个文件的扩展名是?

晕 是 C呗。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-13 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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