(C语言)有四个警告warning C4033: 'main' must return a value,不能出运行结果,请帮忙看下
#include<stdio.h>
#include<string.h>
struct student
{
char no[10],name[10],易做图[4];
float t[4],ave;
}
main()
{
FILE *fp1;
int i,k,j;
float sum;
struct student z;
struct student b[3];
struct student w[3];
struct student s[3]={{"100101","阎 旭","男",88,92,78,86},{"100102","王珊珊","女",78,95,76,87},{"100103","姚彦兆","男",82,89,86,90}};
if((fp1=fopen("d:\\student.dat","wb"))==NULL)
{
printf("file can not open!\n");
return;
}
for(i=0;i<3;i++)
{
fwrite(&s[i],sizeof(s),1,fp1);
}
fclose(fp1);
if((fp1=fopen("d:\\student.dat","rb"))==NULL)
{
printf("file can not open!\n");
return;
}
for(i=0;i<3;i++)
{
fread(&b[i],sizeof(s),1,fp1);
}
fclose(fp1);
printf("\n");
for(i=0;i<3;i++)
printf("%s%s%s%.2f%.2f%.2f%.2f",b[i].no,b[i].name,b[i].易做图,b[i].t[0],b[i].t[1],b[i].t[2],b[i].t[3]);
for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<4;j++)
{
sum=sum+s[i].t[j];
}
s[i].ave=sum/4;
}
for(i=1;i<3;i++)
{
k=i;
for(j=k+1;j<3;j++)
{
if(s[j].ave>s[k].ave)
k=j;
}
if(k!=j)
{
z=s[i];
s[i]=s[k];
s[k]=z;
}
}
if((fp1=fopen("d:\\stusort.dat","wb"))==NULL)
{
printf("file can not open!\n");
return;
}
for(i=0;i<3;i++)
{
fwrite(&s[i],sizeof(s),1,fp1);
}
fclose(fp1);
if((fp1=fopen("d:\\stusort.dat","rb"))==NULL)
{
printf("file can not open!\n");
return;
}
for(i=0;i<3;i++)
{
fread(&w[i],sizeof(s),1,fp1);
}
fclose(fp1);
printf("\n");
for(i=0;i<3;i++)
printf("%s%s%s%.2f%.2f%.2f%.2f%.2f",w[i].no,w[i].name,w[i].易做图,w[i].t[0],w[i].t[1],w[i].t[2],w[i].t[3],w[i].ave);
}
追问:加上之后,错误出现啊也不对啊,现在变成错误了……
答案:int main() /*声明返回int*/
{
.......
return 0; /*main 最后返回0*/
}
其他:void main(void) 你还没有明白函数的定义:
返回值 函数名 参数
int fun ( int a )
你的返回值声明了什么类型,return时的类型必须相同
void main(void)
{
return 0;
}
上面的返回值和声明的不同,所以会报错,你可以改为
int main(void)
{
return 0;
}
或
void main(void)
{
return;
}
上一个:急求c语言详解,关于for语句的嵌套
下一个:C语言小问题 在线等