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是需要输入的人数
我就是想请教如何在每次输入学号的时候判断是否和之前的学号重复,如果要是重复就一直重复输入学号知道不重复为止
谢谢
展开
 我来答
RU恶魔猎手SH
2017-12-31 · TA获得超过433个赞
知道小有建树答主
回答量:363
采纳率:85%
帮助的人:226万
展开全部
每次输入的时候遍历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;
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式