| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 371 人关注过本帖
标题:我这个程序不能运行
只看楼主 加入收藏
颜建林
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2010-10-24
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:4 
我这个程序不能运行
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

struct student
{int num;
 char name[8];
 int yingyu;
 int shuxue;
 int yuwen;
};
void main()
{int i;
 struct student stu[5];
 struct student *p;
 void input(struct student stu1[]);
 void zongchengji(struct student *p );
 void pingjun(struct student *p);
 void gaofen(struct student *p);
 void syxinxi(struct student *p);
 void tianjia(struct student stu1[]);
 void shanchu(struct student *p);
 
 while(1)
 {printf("**********************************\n");
  printf("******欢迎登陆学生查询系统********\n");
  printf("******[1]输入学生信息*************\n");
  printf("******[2]打印四门课的总成绩*******\n");
  printf("******[3]打印出平均成绩***********\n");
  printf("******[4]打印最高分学生信息*******\n");
  printf("******[5]显示所有学生信息*********\n");
  printf("******[6]添加一个学生记录*********\n");
  printf("******[7]删除一些学生记录*********\n");
  printf("******[0]退出*********************\n");
  scanf("%d",&i);
  switch(i)
  {case 1:input(stu);break;
  case 2:zongchengji(stu);break;
  case 3:pingjun(stu);break;
  case 4:gaofen(stu);break;
  case 5:syxinxi(stu);break;
  case 6:tianjia(stu);break;
  case 7:shanchu(stu);break;
  case 0:exit(0);
  default:printf("error\n");
  }
 }
}
void input(struct student  stu1[])
{int i;
 for(i=0;i<5;i++)
 {printf("\ninput scores of student %d:\n",i+1);
 printf("num:");
  scanf("%d",&(stu1[i].num));
  printf("name:");
  scanf("%s",&(stu1[i].name));
  printf("yingyu:");
  scanf("%d",&(stu1[i].yingyu));
  printf("shuxue:");
  scanf("%d",&(stu1[i].shuxue));
  printf("yuwen:");
  scanf("%d",&(stu1[i].yuwen));}
}
void zongchengji(struct student *p) /*各科总成绩*/
{
 int i,m1=0,m2=0,m3=0;

 for(i=0;i<5;i++)
  { m1=m1+(p+i)->yingyu;
     m2=m2+(p+i)->shuxue;
      m3=m3+(p+i)->yuwen; }
     clrscr();
     printf("zongchengji:yingyu=%dshuxue=%dyuwen=%d\n",m1,m2,m3);



}
void pingjun(struct student *p)       /*各科平均成绩*/
{int i,m1=0,m2=0,m3=0;
float p1,p2,p3;
 for(i=0;i<5;i++)
  { m1=m1+(p+i)->yingyu;
     m2=m2+(p+i)->shuxue;
      m3=m3+(p+i)->yuwen; }
      p1=m1/5;p2=m2/5;p3=m3/5;
      clrscr();
     printf("pingjunfen%f\n",p1,p2,p3);/*平均成绩p1为英语,p2为数学,p3为语文*/
}
void gaofen(struct student *p)      /*打印出总评分平均分最高的学生信息 */
{ int i,j,sum1=0,sum2=0,sum3=0,sum,ping;
  for(i=0;i<5;i++)
    sum1+=(p+i)->yingyu;
    sum2+=(p+i)->shuxue;
    sum3+=(p+i)->yuwen;
    sum=sum1+sum2+sum3;
    ping[i]=sum/3;
    max=ping[0];
  if(max<ping[i])
     {max=ping[i] ;j=i;
     pringtf("max=%d%d",max,j);}
  else
    {j=0; printf("max=%d",max) ;}
}










}
void syxinxi(struct student *p) /* 显示所有学生信息*/
{
int i,j;
clrscr();
printf("\n") ;
printf("************学生信息*********\n");
printf("-----------------------------\n");
printf("|%s|%s|%s|%s|%s|\n","num","name","yingyu","shuxue","yuwen");
printf("-----------------------------\n");
for(i=0;i<5;i++)
{ printf("|%d|%s|%d|%d|%d|\n",(p+i)->num,(p+i)->name,(p+i)->yingyu,(p+i)->shuxue,(p+i)->yuwen);}

printf("------------------------\n");




}
void tianjia(struct student *p)  /* 添加一个学生的记录*/
{int y=1,n;

do{printf("-----------------");
   printf("请输入学生学号:");
   scanf("%d",&p->num);
   printf("请输入学生姓名");
   scanf("%s",&p->name);
   printf("请输入学生的英语:");
   scanf("%d",&p->yingyu);
   printf("请输入学生的数学:");
   scanf("%d",&p->shuxue);
   printf("请输入学生的语文:");
   scanf("%d",&p->yuwen);
   n++;
   p++;
   printf("\n1.继续输入.\n0.输入完毕.\n");
   printf("请选择:");
   scanf("%d",&y);
  }
while(y==1);
printf("提示:输入完毕!你一共输入%d个\n",n);



}


void shanchu(struct student stu1[]) /*  删除一个学生的记录 */
{  int num;
   int i,j,e,n;
   if(n!=0)
{
printf("学号\t姓名\t英语\t数学\t语文\t\n");
  printf("-----------------------------------------------------\n");
  for(i=0;i<n;i++)
  printf("%d%s%d%d%d\n",stu1[i].num,stu1[i].name,stu1[i].yingyu,stu1[i].shuxue,stu1[i].yuwen);
  printf("请输入您要删除的学生的学号:");
  scanf("%d", &num);
  printf("\n");
  for(i=0;i<n;i++)
  if(num==stu1[i].num)
    j=i;
  if(j!=(n-1))
    {
     for(e=i-1;e<n;e++,j++)
     {
      stu1[j].num=stu1[j+1].num;
      strcpy(stu1[j].name,stu1[j+1].name);


      stu1[j].yuwen=stu1[j+1].yuwen;
      stu1[j].shuxue=stu1[j+1].shuxue;
      stu1[j].yingyu=stu1[j+1].yingyu;
      n--;
     }
    }else n--;
  printf("提示:删除完毕!");
  }
}



删除不了学生个人信息和求平均分最高的学生信息
2011-01-11 21:43
颜建林
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2010-10-24
收藏
得分:0 
删除不了学生个人信息和打印不出求平均分最高的学生信息
2011-01-11 21:45
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
建意楼主,你自己可以用编译器进行调试(debug),它们有存储状况都有得看。

小代码,大智慧
2011-01-11 22:16
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
printf("name:");
 scanf("%s",&(stu1[i].name)); //改为scanf("%s",stu1[i].name); 输入字符串不要加&,记好了哦。

   唯实惟新 至诚致志
2011-01-11 22:54
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:10 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct student
{
int num;
char name[10];
int yingyu;
int shuxue;
int yuwen;
}stu[100];

void main()
{

for(int j=0;j<100;j++)
stu[j].num=0;
int i=10;
struct student *p=(student*)malloc(sizeof(student));
p=&stu[0];
void input();
void zongchengji(struct student *p );
void pingjun(struct student *p);
void gaofen(struct student *p);
void syxinxi(struct student *p);
void tianjia(struct student *p);
void shanchu(struct student *p);

while(i!=0)
{
  printf("**********************************\n");
  printf("******欢迎登陆学生查询系统********\n");
  printf("******[1]输入学生信息*************\n");
  printf("******[2]打印四门课的总成绩*******\n");
  printf("******[3]打印出平均成绩***********\n");
  printf("******[4]打印最高分学生信息*******\n");
  printf("******[5]显示所有学生信息*********\n");
  printf("******[6]添加一个学生记录*********\n");
  printf("******[7]删除一些学生记录*********\n");
  printf("******[0]退出*********************\n");
  scanf("%d",&i);
  switch(i)
  {
  case 1:input();break;
  case 2:zongchengji(p);break;
  case 3:pingjun(p);break;
  case 4:gaofen(p);break;
  case 5:syxinxi(p);break;
  case 6:tianjia(p);break;
  case 7:shanchu(p);break;
  case 0: exit(0); break;
  default:printf("error\n"); break;
   }
}
}

void input()
{
int i;
for(i=0;i<5;i++)
{
  printf("\ninput scores of student %d:\n",i+1);
  printf("num:");
  scanf("%d",&stu[i].num);
  printf("name:");
  scanf("%s",stu[i].name);  //输入字符串不要加&
  printf("yingyu:");
  scanf("%d",&stu[i].yingyu);
  printf("shuxue:");
  scanf("%d",&stu[i].shuxue);
  printf("yuwen:");
  scanf("%d",&stu[i].yuwen);
  }
}

void zongchengji(struct student *p) /*各科总成绩*/
{
int i,m1=0,m2=0,m3=0;

for(i=0;(p+i)->num!=0;i++)
  {
      m1=m1+(p+i)->yingyu;
      m2=m2+(p+i)->shuxue;
      m3=m3+(p+i)->yuwen;
  }
     printf("zongchengji:yingyu=%d shuxue=%d yuwen=%d\n",m1,m2,m3);
}

void pingjun(struct student *p)       /*各科平均成绩*/
{
  int i,m1=0,m2=0,m3=0;
  double p1,p2,p3;
  for(i=0;(p+i)->num!=0;i++)
  {
      m1=m1+(p+i)->yingyu;
      m2=m2+(p+i)->shuxue;
      m3=m3+(p+i)->yuwen;
   }
     p1=m1*1.0/(i-1); p2=m2*1.0/(i-1); p3=m3*1.0/(i-1);
     printf("pingjunfen: yingyu=%.2f shuxue=%.2f yuwen=%.2f\n",p1,p2,p3);/*平均成绩p1为英语,p2为数学,p3为语文*/
}

void gaofen(struct student *p)      /*打印出平均分最高的学生信息 */
{
   int i,j,k,sum[100]={0},temp;
   for(i=0;(p+i)->num!=0;i++)
   sum[i]=(p+i)->yingyu+(p+i)->shuxue+(p+i)->yuwen;

   for(j=0;j<=(i-2);j++)
    for(k=j+1;k<=(i-1);k++)
      if(sum[i]>sum[j])
        { temp=sum[i]; sum[i]=sum[j]; sum[j]=temp; }
    printf("max=%.2f\n",sum[k-1]/3.0);
}

void syxinxi(struct student *p) /* 显示所有学生信息*/
{
  int i;
  printf("\n") ;
  printf("************学生信息*********\n");
  printf("-----------------------------\n");
  printf("|%s|%s|%s|%s|%s|\n","num","name","yingyu","shuxue","yuwen");
  printf("-----------------------------\n");
 for(i=0;(p+i)->num!=0;i++)
 {
   printf("|%d|%s|%d|%d|%d|\n",(p+i)->num,(p+i)->name,(p+i)->yingyu,(p+i)->shuxue,(p+i)->yuwen);
   printf("------------------------\n");
 }
}

void tianjia(struct student *p)  /* 添加一个学生的记录*/
{
  int y=1,n=0;
  for(;p->num!=0;p++);  //指针走到第一个空白处加信息
  do
  {
     printf("-----------------");
     printf("请输入学生学号:");
     scanf("%d",&p->num);
     printf("请输入学生姓名");
     scanf("%s",p->name);
     printf("请输入学生的英语:");
     scanf("%d",&p->yingyu);
     printf("请输入学生的数学:");
     scanf("%d",&p->shuxue);
     printf("请输入学生的语文:");
     scanf("%d",&p->yuwen);
     n++;
     p++;
    printf("\n1.继续输入.\n0.输入完毕.\n");
    printf("请选择:");
    scanf("%d",&y);
  }while(y==1);
   printf("提示:输入完毕!你一共输入%d个.\n",n);
}

void shanchu(struct student *p) /*  删除一个学生的记录 */
{  
   int nu; //最好不要与student中的变量一样的
   int i,j,l,e;
   if(p->num!=0)
  {
   printf("学号\t姓名\t英语\t数学\t语文\t\n");
   printf("-----------------------------------------------------\n");
   for(i=0;(p+i)->num!=0;i++)
   printf("%d%s%d%d%d\n",(p+i)->num,(p+i)->name,(p+i)->yingyu,(p+i)->shuxue,(p+i)->yuwen);
  }
   printf("请输入您要删除的学生的学号:");
   scanf("%d", &nu);
   printf("\n");
   l=i-1;
  for(i=0;i<100;i++)
  if(nu==stu[i].num)
    { j=i; break; }
  if(j!=l)
    {
     for(e=j;e<=l-1;e++)
     {
      stu[e].num=stu[e+1].num;
      strcpy(stu[e].name,stu[e+1].name);
      stu[e].yuwen=stu[e+1].yuwen;
      stu[e].shuxue=stu[e+1].shuxue;
      stu[e].yingyu=stu[e+1].yingyu;
     }
    }
  else
   stu[l].num=0;
   printf("提示:删除完毕!");
}
运行成功了
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 qq1023569223 于 2011-1-12 22:10 编辑 ]

   唯实惟新 至诚致志
2011-01-11 23:40
快速回复:我这个程序不能运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019315 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved