gpt4 book ai didi

c - 不允许用户输入重复的值

转载 作者:行者123 更新时间:2023-11-30 16:27:31 25 4
gpt4 key购买 nike

我正在编写一段代码来用 C 语言创建学生数据库。这不允许重复的卷号。我创建了一个结构数组,卷号是其中的一部分。

这是我到目前为止编写的代码。NOR 是编号。数据库中已有的记录和临时 ID 号。我此时正在输入的记录。卷号的重复检查第一次工作正常,但如果我重新输入相同的值则不行。有人可以帮助我吗?

for(i=*NOR;i<temp+*NOR;i++)     //For loop to enter student details
{
int j;
printf("\nFor student %d:\n",i+1);
printf("\tEnter the roll No.\n"); //Enter Roll No.
scanf("%d",&s[i].rollNo);
while(s[i].rollNo<0)
{
printf("\nPlease enter valid Roll No.\n");
scanf("%d",&s[i].rollNo);
}
if(i>0)
{
while(1)
{
for(j=0;j<i;j++) //Validation for duplicate Roll No.
{
if(s[i].rollNo==s[j].rollNo)
{
printf("\nPlease don't enter duplicate Roll No.s\n");
scanf("%d",&s[i].rollNo);
continue;
}
}
if(j==i)
break;
}

//Other code

}

最佳答案

问题是,在检测到重复的卷号并获取新值后,您需要对照所有现有值检查该新值。换句话说,您需要回到起点。

如果将继续更改为“中断”,检查应正确重新启动。

while(1)
{
for(j=0;j<i;j++) //Validation for duplicate Roll No.
{
if(s[i].rollNo==s[j].rollNo)
{
printf("\nPlease don't enter duplicate Roll No.s\n");
scanf("%d",&s[i].rollNo);
break; // check new rollNo against all other values
}
}
if(j==i)
break;
}

请注意,break 可以跳出 while 循环以及 for 循环。它总是会跳出最内层循环。因此,第一个 break 离开了 for 循环,第二个则脱离了 while

关于c - 不允许用户输入重复的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52705261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com