首页 > 用户发贴区 > 编程问题提问区 > 哥哥姐姐们给点帮助好吗?
2008
05-12

哥哥姐姐们给点帮助好吗?

我是个刚学程序新手.


在看一些程序时会有很多看不懂,比如下面这个程序,是个成绩管理的程序.


哥哥姐姐们能帮我加点解释的注释吗?


希望详细点,方便我能看的懂,可能有点笨,不好意思麻烦各位了


 


# include <stdio.h> 
# include <stdlib.h> 
# include <conio.h> 
# include <math.h> 
# include <string.h> 
struct student 

 int no; 
 char name[20]; 
 float score[2]; 
 float avg; 
 
}; 


struct student input( ); 
void display(struct student[],int); 
void sort(struct student[],int ); 
int find(struct student[],int ,int ); 
void query(struct student[],int ); 
void update(struct student[],int); 
void remove1(struct student[],int *); 
void main() 

 
 struct student stu[20]; 
 int count =0; 
 char sel=’1′,flag; 
 while(sel!=’7′) 
 { 
  system(“cls”); 
  printf(“\t_________________学员信息管理系统______________________\n\n”); 
  printf(“\t1.录入\t2.显示\t3.排序\t4.查询\t5.修改\t6.删除\t7.退除\t\n”); 
  printf(“\t_______________________________________________________\n\n”); 
  printf(“\t\t\t欢迎你使用学员信息管理系统\n”); 
  
  printf(“\n请选择你要的操作 “); 
  sel=getchar(); 
  switch(sel) 
  { 
  case ’1′: 
   system(“cls”); 
   do 
   { 
    stu[count]=input(); 
    count++; 
    printf(“‘是否继续输入(y/n):”); 
    fflush(stdin); 
    flag=getchar(); 
   }while(flag==’y'||flag==’Y'); 
   break; 
  case ’2′: 
   display(stu,count); 
   break; 
  case ’3′: 
   sort(stu,count); 
   break; 
  case ’4′: 
   query(stu,count); 
   break; 
  case ’5′: 
   update(stu,count); 
   break; 
  case ’6′: 
   remove1(stu,&count); 
   break; 
  } 
 } 
 getch(); 


/*单个学员信息录入*/ 
struct student input() 

 struct student stu; 
 float sum; 
 char k=0; 
 int j; 
 char ch[20]; 
 do{ 
  printf(“\n请输入学号:”); 
  scanf(“%s”,ch); 
  k=0; 
  stu.no=0; 
  for(j = strlen(ch)-1;j>=0;j–) 
  { 
   if(ch[j]<’0′||ch[j]>’9′) 
   { 
    k=1; break; 
   } 
   stu.no+=(ch[j]-48)*pow(10,j); 
  } 
  
  /*printf(“请输入数字\n”); */ 
 }while(k==1); 
 printf(“\n请输入姓名:”); 
 scanf(“%s”,&stu.name); 
 printf(“\n请输入两门成绩:\n”); 
 sum=0; 
 for(j=0;j<2;j++) 
 { 
  printf(“成绩%d:”,j+1); 
  scanf(“%f”,&stu.score[j]); 
  sum=sum+stu.score[j]; 
 } 
 stu.avg=sum/2.0; 
 return stu; 


/*显示所有学员信息*/ 


void display (struct student stud[],int count) 

 int i; 
 system(“cls”); 
 printf(“\t\n%-8s %-12s %-12s %-12s %-12s\n”,”学 号”,”姓 名”,”成绩一”,”成 绩二”,”平均成绩”); 
 printf(“\t\n%-8s %-12s %-12s %-12s %-12s\n”,”______”,”_______”,”_______”,”______”,”_________”); 
 for(i=0;i<count;i++) 
 { 
  
  printf(“%-12d”,stud[i].no); 
  printf(“%-12s”,stud[i].name); 
  printf(“%-12.2f”,stud[i].score[0]); 
  printf(“%-12.2f”,stud[i].score[1]); 
  printf(“%-.2f\n”,stud[i].avg); 
  printf(“\n”); 
 } 
 printf(“\n按任意键返回主菜单:”); 
 getch(); 


/*排序*/ 
void sort(struct student stud[],int count) 

 struct student t; 
 int i,j; 
 for(i=0;i<count-1;i++) 
 { 
  for(j=count-1;j>i;j–) 
  { 
   if(stud[j].avg>stud[j-1].avg) 
   { 
    t=stud[j]; 
    stud[j]=stud[j-1]; 
    stud[j-1]=t; 
   } 
  } 
 } 
 system(“cls”); 
 printf(“\n排序已经完成,按任意键返返回主菜单:”); 
 getch(); 


/*根据学号查找学员信息函数,找到返回该学员在数组中的上标,没找到返回*/ 
int find (struct student stud[],int count ,int no) 

 int i; 
 for(i=0;i<count;i++) 
 { 
  if(stud[i].no==no) 
  { 
   return i; 
  } 
 } 
 return -1; 


/*根据学号查询并显示学员信息*/ 


void query(struct student stud[],int count) 

 int dno,i; 
 system(“cls”); 
 printf(“\n主输入要查询的学员的学号:”); 
 scanf(“%d”,&dno); 
 i=find(stud,count,dno); 
 if(i==-1) 
 { 
  printf(“\n你所要查询的学员不存在!按任意键返回主菜单:”); 
  getch(); 
  return; 
 } 
 printf(“\n%-8s%-12s%-12s%-12s%s\n”,”学号”,”姓 名”,”成绩一”,”成绩二”,”平均成绩”); 
 printf(“\n%-8s%-12s%-12s%-12s%s\n”,”____”,”______”,”_______”,”______”,”_______”,”___________”,”_____________”); 
 printf(“%-8d”,stud[i].no); 
 printf(“%-12s”,stud[i].name); 
 printf(“%-12.2f”,stud[i].score[0]); 
 printf(“%-12.2f”,stud[i].score[1]); 
 printf(“%-.2f”,stud[i].avg); 
 printf(“\n”); 
 printf(“\n按任意键返回主菜单:”); 
 getch(); 

/*修改学员信息*/ 


void update(struct student stud[],int count) 

 int dno,i; 
 system(“cls”); 
 printf(“\n请输入要修改的学员的学号:”); 
 scanf(“%d”,&dno); 
 i=find(stud,count,dno); 
 if(i==-1) 
 { 
  printf(“\n你所要查询的学员不存在!按任意键返回主菜单:”); 
  getch(); 
  return; 
 } 
 stud[i]=input(); 
 printf(“\n修改成功!按任意键返回主菜单:”); 
 getch(); 


/*删除学员信息 */ 
void remove1(struct student stud[],int *count) 

 int dno,i,j; 
 system(“cls”); 
 printf(“\n请输入要删除的学员的学号:”); 
 scanf(“%d”,&dno); 
 i=find(stud,*count,dno); 
 if(i==-1) 
 { 
  printf(“\n你所要查询的学员不存在!按任意键返回主菜单:”); 
  getch(); 
  return; 
 } 
 for(j=i;j<*count-1;j++) 
 { 
  stud[j]=stud[j+1]; 
 } 
 (*count)–; 
 printf(“/n删除成功!按任意我键返回主菜单:”); 
}


哥哥姐姐们给点帮助好吗?》有 4 条评论

  1. powers7 说:

    自己慢慢就看懂了!!不用急!!

  2. 兰色基因 说:

    你是初学者,我晕!~~~!

  3. 天使部落 说:

    /*
     *程序说明:马克思
     *程序文件:马克思.cpp
     *程序日期:2006-04-18
     *版    本:1.0 Best
     *作    者:马晓萌
     *联系方式:windlanmail@163.com
    */
    /*马克思手稿中有一道趣味数学问题:有30个人,其中有男人,女人和小孩,在一家饭馆吃饭共花了
    50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人,女人和小孩各有几人?
    */
    #include <iostream.h>
    void main(void)
    {
     for(int n=1;n<=10;n++)
     {
      for(int v=1;v<=15;v++)
      {
       for(int x=1;x<=30;x++)
       {
        if(n+v+x==30 && n*3+v*2+x*1==50)
        {
         cout<<”n”<<n;
         cout<<”  v”<<v;
         cout<<”  x”<<x;
         cout<<endl;
        }
       }
      }
     }
    }

    请问为什么n只能取到10啊?还有v也不明白!这是在C/C++练习–趣味题中发现的

  4. 影之神001 说:

    这个不是很难啊,自己看看就明白了,好多看函数名就知道有什么用了

留下一个回复