忠义群英免费下载:vc++的一个问题!~我的程序只能计算最后一个输入的东西!~请大虾帮我改改!~我是新手

来源:百度文库 编辑:中科新闻网 时间:2024/04/20 08:38:00
#include<stdio.h>
#define n 500
struct xinxi
{
int xuehao;
char name[15];
float cj1;
float cj2;
float cj3;
float pcj;
};
void spjcj(struct xinxi p[],int k)
{
int j;
for(j=0;j<=k;j++)
{
p[j].pcj=(p[j].cj1+p[j].cj2+p[j].cj3)/3;
}
}
void paixu(struct xinxi p[],int k)
{
struct xinxi temp;
int b;
for(b=0;b<=k;b++)
{
if((p[b].pcj)>(p[b+1].pcj))
{
temp=p[b];
temp=p[b+1];
p[b+1]=temp;
}
}
}
void main()
{
struct xinxi p[n];
char ans;
int i,j,m,h,s,k;
printf("请输入学员信息:");
for(i=0;i<n,ans!='n';i++)
{
do{
printf("\n\n学号:");
scanf("%d",&p[i].xuehao);
printf("姓名:");
fflush(stdin);
gets(p[i].name);
printf("三门成绩:\n");
printf("成绩1:");
scanf("%f",&p[i].cj1);
printf("成绩2:");
scanf("%f",&p[i].cj2);
printf("成绩3:");
scanf("%f",&p[i].cj3);
// fflush(stdin);
printf("是否继续>(y or n)");
scanf(" %c",&ans);
}while(ans!='n');
}
spjcj(p,i);
printf("排序前的学员信息如下:\n");
printf("学号\t姓名\t平均成绩\n");
for(m=0;m<i;m++)
{
printf("%d\t%s\t%.2f\n",p[m].xuehao,p[m].name,p[m].pcj);
}
paixu(p,i);
printf("排序后的学员信息如下:\n");
printf("学号\t姓名\t平均成绩\n");
for(m=0;m<i;m++)
{
printf("%-d\t%s\t%-.2f\n",p[m].xuehao,p[m].name,p[m].pcj);
}
printf("是否要插入新学员?<y or n>");
scanf(" %c",&ans);
if(ans!='n')
{
if(ans!='n')
{
printf("\n学号:\n\n");
scanf("%d",&p[i+1].xuehao);
printf("姓名:");
fflush(stdin);
gets(p[i+1].name);
printf("三门成绩:\n");
printf("成绩1:");
scanf("%f",&p[i+1].cj1);
printf("成绩2:");
scanf("%f",&p[i+1].cj2);
printf("成绩3:");
scanf("%f",&p[i+1].cj3);
p[i+1].pcj=(p[i+1].cj1+p[i+1].cj2+p[i+1].cj3)/3;
}for(k=0;k<i;k++)
{
if(p[k].pcj<p[i+1].pcj)
break;
}
for(j=i;j>k;j--)
{
p[j]=p[j+1];
}
p[i]=p[i+1];
printf("插入新学员信息后的学员信息如下:\n");
for(m=0;m<i+1;m++)
{
printf("%d\t%s\t%.2f\n",p[m].xuehao,p[m].name,p[m].pcj);
}
}
printf("是否要删除某个学员?<y or n>");
scanf(" %c",&ans);
if(ans!='n')
{
printf("请输入要删除的学员的学号:");
scanf("%d",s);
for(m=0;m<=i+1;m++)
{
if(m==s)
continue;
printf("%d\t%s\t%.2f\n",p[m].xuehao,p[m].name,p[m].pcj);
}
}

}

最明显的问题:
怎么for{} 里还嵌入do{}while? 这样i是不会变化的……
乱……

把: for(i=0;i<n,ans!='n';i++)和一对花括号 去掉,换成 i=0;

然后在
printf("是否继续>(y or n)");
前面加上i++;

应该就可以了。
其他的粗看 好像没有问题,你试试看。