C语言结构体判断
typedefstructstudent{//1、数据结构:学号姓名数学英语语文C语言总分平均分intnum;charname[10];intmath;intenglis...
typedef struct student
{
//1、数据结构:学号 姓名 数学 英语 语文 C语言 总分 平均分
int num;
char name[10];
int math;
int english;
int chinese;
int cl;
int mark;
double average;
} student;
void Student_file(student people[])
{
int i;
FILE *fpn;
int n;
if((fpn=fopen("n.dat","rb"))==NULL)
{
printf("Error!\n");
exit(0);
}
n=fgetc(fpn);
fclose(fpn);
for(i=0; i<n; i++)
{
system("cls");
printf("请输入第%d个同学的数据:\n",i+1);
printf("学号:");
scanf("%d",&people[i].num);
省略......
n是需要输入的人数
我就是想请教如何在每次输入学号的时候判断是否和之前的学号重复,如果要是重复就一直重复输入学号知道不重复为止
谢谢 展开
{
//1、数据结构:学号 姓名 数学 英语 语文 C语言 总分 平均分
int num;
char name[10];
int math;
int english;
int chinese;
int cl;
int mark;
double average;
} student;
void Student_file(student people[])
{
int i;
FILE *fpn;
int n;
if((fpn=fopen("n.dat","rb"))==NULL)
{
printf("Error!\n");
exit(0);
}
n=fgetc(fpn);
fclose(fpn);
for(i=0; i<n; i++)
{
system("cls");
printf("请输入第%d个同学的数据:\n",i+1);
printf("学号:");
scanf("%d",&people[i].num);
省略......
n是需要输入的人数
我就是想请教如何在每次输入学号的时候判断是否和之前的学号重复,如果要是重复就一直重复输入学号知道不重复为止
谢谢 展开
1个回答
展开全部
每次输入的时候遍历student数组,如果有重复就提示重新输入,如果没重复就插入到该数组下一个位置
更多追问追答
追问
问题是只能判断一次啊 下一次输入还是重复的就无法判断了 能不能写一个函数给我看看 谢谢
追答
for(i=0; i<n; i++)
{
system("cls");
printf("请输入第%d个同学的数据:\n",i+1);
printf("学号:");
scanf("%d",&NUM); //外面声明一个int型变量NUM
for(flag=0,j=0;j<i;j++){
if(people[j].num==NUM){
flag=1; //标志位,有重复就置1,需要外面声明
break;
}
}
if(flag==1){
i--;
printf("重复\n");
} else {
people[i].num = NUM;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询