程序代码是这样的
#include "stdio.h"
int main()
{ FILE *fp;
int num[100];
int score[100];
int i=0;//i值不变
int j=0,k=0;//用来控制循环
int a=0,b=0,c=0,l=0;
int max=0; //用来计算最大值
lap:printf("请输入学生数目:\n");
scanf("%d",&i);
j=i;//用来保留i的值
for(k=0;k<j;k++)
{
printf("请输入第%d个学生的学号和分数,中间用空格隔开:\n",l+k+1);
scanf("%d %d",&num[l+k],&score[l+k]);
}
l=l+i;//计数器
i=0;
printf("输入完成!请选择您需要的功能:\n");
lbp:printf("1.求出最高成绩及其拥有者:\n");
printf("2.增加新的成绩:\n");
printf("3.退出\n");
printf("4.保存到文件 成绩.txt\n");
loop:scanf("%d",&k);
switch(k)
{
case 1:for(k=0;k<l;k++)
{
if(max<score[k])
{
max=score[k];
}
}
printf("最高分为%d\n",max);
for(k=0;k<l;k++)
{
if(max==score[k])
{
printf("最高分的同学的学号是:%d\n",num[k]);
}
}
printf("请问您是否还需要继续计算么?\n1.Yes\n2.No");
scanf("%d",&a);
if(a==1)
goto lbp;
;break;
case 2:goto lap;break;
case 3:break;
case 4:if((fp=fopen("成绩.txt","w+"))=NULL)
{printf("文件打开失败!\n");}
for(k=0;k<l;k++)
{fprintf(fp,"%d%d",num[k],score[k]);}
default:printf("输入错误,请重新输入:\n");
goto loop;break;
}
}
就是下面这个语句,我怎么用都写不进去
{fprintf(fp,"%d%d",num[k],score[k]);}
运行之后就变这个了
主要原因是 if((fp=fopen("成绩.txt","w+"))=NULL)这句
= 要改为==
=意味着 把 NULL赋值为fp因此 fp则永远为空了
改过的代码如下:(我添加的部分有注释)
运行结果:
望采纳~