调试不出来啊 有谁能解答下吗

xun0525 2010-12-20 04:54:33
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "stdlib.h"
#define N 1000
#define M 30
void input();
void asfun();
void tasfun();
void sortfun();
void output();
int n,m;
struct stt
{
int num;
char*name;
float score[M];
} sta[N];
char sname[M][16];
float avs1[M],svs1[M];
float total[N],avs2[N],svs2;
int sort[N];

void main()/*主控函数*/
{
input();
asfun();
tasfun();
sortfun();
output();
}

void input()/*获取数据*/
{
char ch ;
int i,j;
char *ps;
FILE*fps;
printf("请选择数据源(K-键盘输入 F-磁盘文件读取): \n");
ch=getch();
switch (ch)
{
case'K':/*数据源从键盘输入*/
case 'k':
{printf("请输入实际学生人数:");
scanf("%d",&n);
printf("请输入实际课程门数:");
scanf("%d",&m);
if(n<=0||n>1000||m<=0||m>30)
{printf("数据无效!");
exit(0);
}
printf("请输入%d门课程名称:",m);
for(j=0;j<m;j++)
scanf("%s",sname[j]);
for(i=0;i<n;i++)
{printf("请输入第%d个学生学号,姓名,%d门课程成绩:",i+1,m);
scanf("%d%s",&sta[i].num,sta[i].name);
for(j=0;j<m;j++)
scanf("%f",&sta[i].score[j]);
}

ps="SCORE.DAT";/*送磁盘文件保存*/
if((fps=fopen(ps,"wb"))==NULL)
{ printf("文件建立错误!");
exit(0);
}
fwrite(&n,2,1,fps);
fwrite(&m,2,1,fps);
fwrite(sname,16,m,fps);
fwrite(sta,sizeof(struct stt),n,fps);
fclose(fps);
break;
}
case'F':/*数据从磁盘文件读取*/
case'f':
{printf("请输入数据文件名:");
scanf("%s",&ps);
if((fps=fopen(ps,"rb"))==NULL)
{printf("文件打开错误!");
exit(0);
}
fread(&n,2,1,fps);
fread(&m,2,1,fps);
fread(sname,16,m,fps);
fread(sta,sizeof(struct stt),n,fps);
fclose(fps);
break;
}
default:
{printf("数据源选择错误!");
exit(0);
}
}
}



void asfun()/*计算每门课程的平均分和方差*/
{ int i,j;
float t [M],ts[M];
for(j=0;j<m;j++)
{t[j]=0;ts[j]=0;

for(i=0;i<n;i++)
{t[j]+=sta[i].score[j];
ts[j]+=sta[i].score[j]*sta[i].score[j];
}
avs1[j]=t[j]/n;
svs1[j]=ts[j]/n-avs1[j]*avs1[j];
}

}



void tasfun()/*计算每个学生的总分、平均分和方差*/
{ int i,j;
float ta=0,ts=0;
for(i=0;i<n;i++)
{total[i]=0;
for(j=0;j<m;j++)
total[i]+=sta[i].score[j];
avs2[i]=total[i]/n;
ta+=avs2[i]; ts+=avs2[i]*avs2[i];
}
svs2=ts/n-(ta/n)*(ta/n);
}


void sortfun()/*按总分排序*/
{ int i,j,k;
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<m;j++)
if(total[j]>total[k]) k=j;
sort[i]=k+1;
}
}



void output()/*输出数据*/
{int i,l,j;
int is;
char*pt;
FILE*fpt;
system("cls");/*输出数据送屏幕*/
printf("%d个学生%d门课程成绩数据如下:\n");
printf(" 学号 姓名 ");
for(j=0;j<m;j++)
printf("%16s",sname[j]);
printf("| 总分 平均分 名次\n");
for(i=0;i<n;i++)
{for(l=0;l<n;l++)
if(sort[l]==i+1) is=1;
printf("%8d%12s",sta[is].num,sta[is].name);
for(j=0;j<m;j++)
printf("%16.2f",sta[is].score[j]);
printf("|%8.2f%8.2f%6d\n",total[is],avs2[is],sort[is]);
}
printf(" 课程平均分 ");
for(j=0;j<m;j++)
printf("%16.2f",avs1[j]);
printf("\n");
printf(" 方差 ");
for(j=0;j<m;j++)
printf("%16.2f",svs1[j]);
printf("%16.2\n",svs2);
pt="STUDENT.DAT";/*输出数据送磁盘*/
if((fpt=fopen(pt,"wb"))==NULL)
{printf("文件建立错误!");
exit(0);
}
fwrite(&n,2,1,fpt);
fwrite(&m,2,1,fpt);
fwrite(sname,16,m,fpt);
for(i=0;i<n;i++)
{fwrite(&sta[i],sizeof(struct stt),1,fpt);
fwrite(&total[i],4,1,fpt);
fwrite(&avs2[i],4,1,fpt);
fwrite(&sort[i],2,1,fpt);
}
fwrite(avs1,4,m,fpt);
fwrite(&svs2,4,1,fpt);
fclose(fpt);

}
...全文
155 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sea_spray 2011-01-04
  • 打赏
  • 举报
回复
写程序也是一个细心活~~~~
grf9527 2011-01-04
  • 打赏
  • 举报
回复
找到原因就好
xun0525 2011-01-04
  • 打赏
  • 举报
回复
谢谢谢谢[
疯狂石头_ 2010-12-24
  • 打赏
  • 举报
回复
什么错误啊?
见习学术士 2010-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bragi523 的回复:]
printf("%d个学生%d门课程成绩数据如下:\n",num,num);
[/Quote]

格式化都不带参数呢!
jyh_baoding 2010-12-24
  • 打赏
  • 举报
回复
只能信息查以下逻辑错误
Eleven 2010-12-24
  • 打赏
  • 举报
回复
多Debug几下就找到问题了
bragi523 2010-12-24
  • 打赏
  • 举报
回复
printf("%d个学生%d门课程成绩数据如下:\n",num,num);
sparrow429 2010-12-24
  • 打赏
  • 举报
回复
...这样也行啊
wonder2008 2010-12-24
  • 打赏
  • 举报
回复
printf("%d个学生%d门课程成绩数据如下:\n");


这里面有输出格式符,但是没有输出数据

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧