|
4鱼币
定义了一个 输入学生信息的 结构体 通过比较 总成绩 排名 各个信息都要交换信息,我想定义另一个结构体 盛放它 完成交换
#include<stdio.h>
struct Student//定义储存学生信息的结构体
{
int num[20]; //定义一个存储学生学号的整型的数组
char name[20];//定义一个存储学生名字的字符类型的数组
int englishscore;//定义一个存储学生英语分数整型变量
int mathscore;//定义一个存储学生数学分数整型变量
int Cscore;//定义c语言分数变量
int all;
int average;
int place;
};
struct Student stu[4];//结构体中的变量数为4
struct temp//定义储存学生信息的结构体
{
int num1[20]; //定义一个存储学生学号的整型的数组
char name1[20];//定义一个存储学生名字的字符类型的数组
int englishscore1;//定义一个存储学生英语分数整型变量
int mathscore1;//定义一个存储学生数学分数整型变量
int Cscore1;//定义c语言分数变量
int all1;
int average1;
int place1;
};
struct temp stu1[4];//结构体中的变量数为4
void main(void)
{
struct Student *p;//申明指针指向结构体
struct temp;
int i,k,n;
p=stu;//将数组变量的初始地址赋予指针p
printf("请输入4学生的:\n");
printf("学号\t姓名\t英语成绩\t数学成绩\tC语言成绩\t总成绩\t平均成绩\t排名\n");
for(i=0;i<4;i++)//从键盘输入学生的信息
{
scanf("%6d %18s %3d %3d %3d",&stu[i].num,&stu[i].name,&stu[i].englishscore,&stu[i].mathscore,&stu[i].Cscore);
}
for(i=0;i<4;i++)
{
stu[i].all=stu[i].englishscore+stu[i].mathscore+stu[i].Cscore;
stu[i].average=stu[i].all/4;
}
for(int j=0;j<3;j++) /*外循环控制排序趟数,n个数排n-1趟*/
{
for(i=0;i<3-j;i++) /*内循环每趟比较的次数,第j趟比较n-j次*/
if(stu[i].all<stu[i+1].all) /*相邻元素比较,逆序则交换*/
{
stu1[i]=stu[i];
stu[i]=stu[i+1];
stu[i+1]=stu1[i];
}
}
printf("综合成绩排名信息/n");
printf("学号\t姓名\t英语成绩\t数学成绩\tC语言成绩\n");
for(i=1;i<4;i++)//从数组中读出学生的信息
{
stu[i].place=i+1;
printf(" %d %s %d %d %d %d %d %d",stu[i].num,stu[i].name,stu[i].englishscore,stu[i].mathscore,stu[i].Cscore,
stu[i].all,stu[i].average,stu[i].place);
}
printf("\n");
}
显示结果是:\c++\Microsoft Visual Studio\MyProjects\81\81.cpp(63) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct temp' (or there is no acceptable conversion)
执行 cl.exe 时出错.
自学 c对 结构体 交换 如何 定义 赋值 求大神了 求救
|
最佳答案
查看完整内容
删除学生记录只需要把该结构定义一下。。自己懂得就行。。以下两种
1: 可以把结构清0。。。比如原本已经有了3个学生信息。。s[0], s[1], s[2]
现在需要删除第二个。。。那么把s[1]清0就像。。memset(&s[1], 0, sizeof(s[1]));
你要查询学生信息。。如果发现该结构是0.。比如s[1]全是0..那么说明就没有这个学生。。。
2:在结构中多定义一个。。变量
|