在这段C语言代码中,加入判断成绩是否在0-100之间,如果不在,重新输入,请问怎么实现?

void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 将指针置于最末尾 */
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入数学成绩:");
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入英语成绩:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息输入已经完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;
}
}

void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 将指针置于最末尾 */
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}
p=(Node *)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();

do
{printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
}while(p->data.cgrade<0||p->data.cgrade>100);
do
{printf("请你输入数学成绩:");
scanf("%d",&p->data.mgrade);
getchar();
}while(p->data.cgrade<0||p->data.cgrade>100);
do
{printf("请你输入英语成绩:");
scanf("%d",&p->data.egrade);
getchar();
}while(p->data.cgrade<0||p->data.cgrade>100);

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息输入已经完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;
}
}追问

只有C语言成绩可以,其他的好像没有实现

追答

把while里边改成对应的成绩就行

我直接复制了,忘记了
do
{printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
}while(p->data.cgradedata.cgrade>100);
do
{printf("请你输入数学成绩:");
scanf("%d",&p->data.mgrade);
getchar();
}while(&p->data.mgradedata.mgrade>100);
do
{printf("请你输入英语成绩:");
scanf("%d",&p->data.egrade);
getchar();
}while(p->data.egradedata.egrade>100);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-04
电脑实现的
相似回答