李向东书法价格:VC程序出现死循环,高人帮忙指点一二

来源:百度文库 编辑:高校问答 时间:2024/05/02 09:57:05
#include<stdio.h>
struct xs
{
int xh,year;
char name[20],kc[20];
};
void jsyear(struct xs *p,int x);
void jsxh(struct xs *p,int x);
void main()
{
int i,u,n;
struct xs student[3];
struct xs *p;
p=student;
for(i=0;i<3;i++)
{
printf("输入学生学号:");
scanf("%d",&student[i].xh);
printf("输入学生名字:");
scanf("%s",&student[i].name);
printf("输入学生登记的课程:");
scanf("%s",&student[i].kc);
printf("输入学生入学年份:");
scanf("%d",&student[i].year);
printf("\n\n");
}
do
{
printf("请输入搜索学生入学年份:");
scanf("%d",&u);
if(u!='x')
{
jsyear(p,u);
}
}while(u != 'x');
do
{
printf("请输入搜索学生的学号:");
scanf("%d",&n);
if(n!='x')
{
jsxh(p,u);
}
}while(n != 'x');
}
void jsyear(struct xs *p,int x)
{
int i;
for(i=0;i<3;i++)
{
if((*(p+i)).year==x)
{
printf("学生的学号:%d \n",(*(p+i)).xh);
printf("学生的名字:%s \n",(*(p+i)).name);
printf("学生的登记课程:%s \n",(*(p+i)).kc);
printf("学生的入学年份:%d \n",(*(p+i)).year);
}
}
}
void jsxh(struct xs *p,int x)
{
int i;
for(i=0;i<3;i++)
{
if((*(p+i)).xh==x)
{
printf("学生的学号:%d \n",(*(p+i)).xh);
printf("学生的名字:%s \n",(*(p+i)).name);
printf("学生的登记课程:%s \n",(*(p+i)).kc);
printf("学生的入学年份:%d \n",(*(p+i)).year);
}
}
}
do...while循环出现死循环。。VC6.0的

按你的循环条件需要输入两个 'x' 才能分别退出两个循环。

修改:
(1)把 'x' 改用 99999
(2)合并两个do循环
do
{
printf("请输入搜索学生入学年份:");
scanf("%d",&u);
if(u!=99999) {jsyear(p,u);} else break;
printf("请输入搜索学生的学号:");
scanf("%d",&n);
if(n!=99999) {jsxh(p,u);} else break;
}while(u != 99999);

输入99999 则退出。

你定义的U是int形式的怎么会等于X呢? 除非U的值是X的ASII值,循环条件错了