struct Student_Info
{ char name[NAMESIZE];
int number;
int score[SCORENUM];
float ave;
} Student [NUM];
Student_Info CreatStudent()
{ Student_Info s;
int Studentlen, namelen,i=0,value=0,flag=1;
for(i=0;i<NUM;i++)
{ if((Student+i)->name[0]=='\0')
{ Studentlen=i;
break;
}
}
srand(time(0));
while(flag)
{ flag=0;
namelen=rand()%(NAMESIZE-1)+2;
for(i=0;i<namelen;i++)
{value=rand()%26;
value+=65;
s.name[i]=value;
}
s.name[namelen]='\0';
for(i=0;i<Studentlen;i++)
{ if(!strcmp(s.name,Student[i].name))
{flag=1;
}
}
}
flag=1;
while(flag)
{flag=0;
value=rand()&NUM+1;
for(i=0;i<Studentlen;i++)
{ if(value==Student[i].number)
{flag=1;
}
}
}
s.number=value;
value=0;
for(i=0;i<SCORENUM;i++)
{s.score[i]=rand()%100;
value+=s.score[i];
}
s.ave=(float)value/3;
return s;
}
void AddStudent(struct Student_Info s)
{ int i=0;
for (i=0;i<NUM;i++)
{ if((Student+i)->name[0]=='0')
{ break;
}
}
Student[i]=s;
}
int find (int number)
{ int i=0;
for(i=0;i<NUM;i++)
{ if((Student+i)->number==number)
{return i;
}
}
return -1;
}
void showAll()
{ int Studentlen,i=0,j=0;
for(i=0;i<NUM;i++)
{ if((Student+i)->name[0]=='0')
{ Studentlen =i;
break;
}
}
printf("\n共有%d名学生信息\n\n",Studentlen);
for(i=0;i<Studentlen;i++)
{ printf("\n***********第%d名学生信息***********\n\n",i+1);
printf("姓名:\t%s\n",(Student+i)->name);
printf("学号:\t%d\n",(Student+i)->number);
for(j=0;j<SCORENUM;j++)
{ printf("课程%d成绩:\t%d\n",j+1,(Student+i)->score[j]);
}
printf("平均成绩:\t%f\n",(Student+i)->ave);
printf("\n******************************\n\n",i+1);
}
}
void query(int number)
{ int i,j;
i=find(number);
if(i!=-1)
{ printf("\n***********查询学生信息如下:**********\n\n");
printf("姓名:\t%s\n",(Student+i)->name);
printf("学号:\t%d\n",(Student+i)->number);
for(j=0;j<SCORENUM;j++)
{ printf("课程%d成绩:\t%d\n",j+1,(Student+i)->score[j]);
}
printf("平均成绩:\t%f\n",(Student+i)->ave);
}
else
{printf("\n学号为%d的学生信息不存在\n\n",number);
}
}
void del(int number)
{
int i,j;
i=find(number);
if(i!=-1)
{
for(j=i;j<NUM;j++)
{(Student+j)=(Student+j+1);
if((Student+j+1)->name[0]=='\0')
{ break;
}
}
printf("\n学号为%d的学生信息已删除\n\n",number);
}
else
{
printf("\n %d \n\n",number);
}
}
void modify(int number)
{
int i,j;
float ave=0;
i=find(number);
if(i!=-1)
{printf("\n输入待修改的学生信息:\n\n");
printf("姓名:\t");
scanf("%s",&((Student+i)->name));
fflush(stdin);
printf(" :\t");
scanf("%d",&((Student+i)->number));
fflush(stdin);
for(j=0;j<SCORENUM;j++)
{ printf(" %d :\t",j+1);
fflush(stdin);
ave +=(Student+i)->score[j];
}
(Student+j)->ave = ave/SCORENUM;
printf("\n学号为%d的学生信息修改成功\n\n",number);
}
else
{
printf("\n学号为%d的学生信息不存在\n\n",number);
}
}
void main()
{
int i,j,number;
for(i=0;i<NUM;i++)
{
(Student+i)->name[0]= '\0';
(Student+i)->number = -1;
for(j=0;j<SCORENUM;j++)
{
(Student+i)->score[j]=-1;
}
(Student+i)->ave =-1;
}
for(i=0;i<N+3;i++)
{
AddStudent(CreatStudent());
}
showAll();
printf("\n输入需查找的学生学号:");
scanf("%d",&number);
fflush(stdin);
query(number);
printf("\n输入需删除的学生学号:");
scanf("%d",&number);
fflush(stdin);
del(number);
showAll();
printf("\n输入需修改的学生学号:");
scanf("%d",&number);
fflush(stdin);
modify(number);
showAll();
system("pause");
}
第8行和第172行有问题
error C2065: 'O' : undeclared identifier
define N O,这个表示 定义N的值是O,但是O在当前情况下是无法理解的
比如 define N 0 表示定义N的值是 0
这家代码有问题,你是想 define N 0 ????
大佬 那第一个问题出在哪里
是不是把#define和#include换一下位置
为什么我程序运行后是负的学生数(又出错了??????)
@爱吃代码的西瓜:
你是不是都没看明白我说的话。。。。
define N O 这一句错了, N 后面只能是常量,比如 0,1,2,3, "a","b","c"
@waiter: 您的意思我知道了。
只是后面运行程序时,学生数是负的
@爱吃代码的西瓜:
亲 代码太长了,把可能出现问题的地方定位到10行以内
@waiter 好像程序运行没有问题,只是结果不太对,我不知道怎么改,因为程序运行时学生数给我的就是一个负数
大佬可以加qq吗,初学c语言,感觉有很多疑惑。