
已解决问题
谷歌wang14816用户在2013.08.20提交了关于“宝格丽c 语言 无法解析的外部符号”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-12-25T11:43:49。执行如下程序,老报错误:错误1errorLNK2001:无法解析的外部符号"structstudents*stu"(?stu@@3PAUstudents@@A)test.obj哪位高手帮小弟解决下,必有重谢!
#include<stda**.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
structstudents
{
intno;
charname[8];
floatmaths,en,ch;
doublesum,**e;
}stu[];
structstudents1
{
intno;
charname[8];
floatmaths,en,ch;
doublesum,**e;
}stu1[];
intpeople_**m;//用来记录人数新加的
intme**_select()/*菜单函数*/
{
charc;
do
{
system("cls");/*运行前清屏*/
printf("\t\t****Students'GradeManagementSystem****\n");/*菜单选择*/
printf("\t\t|1.InputRecords\DisplayAllRecords|\n");
printf("\t\t|2.Sort|\n");
printf("\t\t|0.Quit|\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGiveyourChoice(0-2):");
c=getchar();/*读入选择*/
}while(c<'0'||c>'2');
return(c-'0');//返回选择(您的程序最后返回的是您输入的字符的ascii码减去0的ascii码的值也就是说如果选择0就返回0如果不减返回的是0的ascii值)
}
intInput(studentsstud[])/*输入若干条记录*///*结构名输入错误
{
inti=0,z=1,p;//z=1
doublemax=0;
charj;
for(;;)
{
i++;
printf("inputno\n");
scanf("%d",&stu[i].no);
printf("inputname\n");
scanf("%s",stu[i].name);
printf("inputmaths\n");
scanf("%f",&stu[i].maths);
printf("inputen\n");
scanf("%f",&stu[i].en);
printf("inputch\n");
scanf("%f",&stu[i].ch);
stu[i].sum=stu[i].ch+stu[i].en+stu[i].maths;
stu[i].**e=stu[i].sum/3.0;
printf("是否继续(y/n)?\n");
scanf("%s",&j);
z++;
if(j=='n'||j=='N')
{
bre**;
}
}
people_**m=z;
printf("\tno\tname\tmaths\ten\tch\tsum\t**e\n");
for(i=1;i<z;i++)
{
printf("\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].maths,stu[i].en,stu[i].ch,stu[i].sum,stu[i].**e);
}
returni-1;//随便返回的值
}
intSort(studentsstud[])//*结构名输入错误
{
doublemax=0;//*新定义的变量
for(inti=1;i<=people_**m;i++)//*新加一对括号
{
for(intp=i;p<=people_**m-i+1;p++)
{
if(stu[i].**e<stu[p+1].**e)
{
max=stu[p+1].**e;
stu[p+1].**e=stu[i].**e;
stu[i].**e=max;
}
}
}
printf("排序后的平均分\n");
for(inti=1;i<people_**m;i++)
{
printf("%.2f\n",stu[i].**e);
}
returnmax;
}
voidmain()/*主函数*/
{
intn=0;
for(;;)
{
switch(me**_select())/*选择判断*/
{
case1:
printf("\t\t\tInputRecords\n");/*输入若干条记录*/
n=Input(stu);
bre**;
case2:
printf("\t\t\tSort\n");
Sort(stu);/*按平均分排序*/
printf("\t\t\tSortSuceessed!\n");
printf("\t\t\t");
system("pause");/*而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Pressanykeytoexit”的字,等待用户按一个键,然后返回。*/
getchar();
bre**;
}
}
}希望大家能够帮助她。
详细问题描述及疑问:执行如下程序,老报错误:错误1errorLNK2001:无法解析的外部符号"structstudents*stu"(?stu@@3PAUstudents@@A)test.obj
哪位高手帮小弟解决下,必有重谢!
#include<stda**.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
structstudents
{
intno;
charname[8];
floatmaths,en,ch;
doublesum,**e;
}stu[];
structstudents1
{
intno;
charname[8];
floatmaths,en,ch;
doublesum,**e;
}stu1[];
intpeople_**m;//用来记录人数新加的
intme**_select()/*菜单函数*/
{
charc;
do
{
system("cls");/*运行前清屏*/
printf("\t\t****Students'GradeManagementSystem****\n");/*菜单选择*/
printf("\t\t|1.InputRecords\DisplayAllRecords|\n");
printf("\t\t|2.Sort|\n");
printf("\t\t|0.Quit|\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGiveyourChoice(0-2):");
c=getchar();/*读入选择*/
}while(c<'0'||c>'2');
return(c-'0');//返回选择(您的程序最后返回的是您输入的字符的ascii码减去0的ascii码的值也就是说如果选择0就返回0如果不减返回的是0的ascii值)
}
intInput(studentsstud[])/*输入若干条记录*///*结构名输入错误
{
inti=0,z=1,p;//z=1
doublemax=0;
charj;
for(;;)
{
i++;
printf("inputno\n");
scanf("%d",&stu[i].no);
printf("inputname\n");
scanf("%s",stu[i].name);
printf("inputmaths\n");
scanf("%f",&stu[i].maths);
printf("inputen\n");
scanf("%f",&stu[i].en);
printf("inputch\n");
scanf("%f",&stu[i].ch);
stu[i].sum=stu[i].ch+stu[i].en+stu[i].maths;
stu[i].**e=stu[i].sum/3.0;
printf("是否继续(y/n)?\n");
scanf("%s",&j);
z++;
if(j=='n'||j=='N')
{
bre**;
}
}
people_**m=z;
printf("\tno\tname\tmaths\ten\tch\tsum\t**e\n");
for(i=1;i<z;i++)
{
printf("\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].maths,stu[i].en,stu[i].ch,stu[i].sum,stu[i].**e);
}
returni-1;//随便返回的值
}
intSort(studentsstud[])//*结构名输入错误
{
doublemax=0;//*新定义的变量
for(inti=1;i<=people_**m;i++)//*新加一对括号
{
for(intp=i;p<=people_**m-i+1;p++)
{
if(stu[i].**e<stu[p+1].**e)
{
max=stu[p+1].**e;
stu[p+1].**e=stu[i].**e;
stu[i].**e=max;
}
}
}
printf("排序后的平均分\n");
for(inti=1;i<people_**m;i++)
{
printf("%.2f\n",stu[i].**e);
}
returnmax;
}
voidmain()/*主函数*/
{
intn=0;
for(;;)
{
switch(me**_select())/*选择判断*/
{
case1:
printf("\t\t\tInputRecords\n");/*输入若干条记录*/
n=Input(stu);
bre**;
case2:
printf("\t\t\tSort\n");
Sort(stu);/*按平均分排序*/
printf("\t\t\tSortSuceessed!\n");
printf("\t\t\t");
system("pause");/*而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Pressanykeytoexit”的字,等待用户按一个键,然后返回。*/
getchar();
bre**;
}
}
}期待您的答案,滴水之恩,来日我当涌泉相报
!