初学C语言.便弄来了一些源程序,自己琢磨,可惜有些看不大懂,尤其是这个程序的自定义函数部分,比如说这一句scanf("%d",&stu[n].num); 中间&stu[N].num这个点号是什么东西?stu[N].num表示的是什么?
特来求助,希望大哥大姐们在每一条语句后加上注释。说说程序的流程.越详细越好. 让小弟我快快学好C语言.
如果回答得非常好。小弟我愿意再附加分。万分感谢.
#include<stdio.h>
#include<stdlib.h> //stdlib头文件包含了cls清屏,exit退出
#define N 3 //定义常量
struct student //结构变量
{
int num;
char name[20];
int cj[N];
int pingjun;
}
stu[50],temp;
int n=0;/* 学员个数 */
/* /////////////////////函数声明 */
void tianjia();
void shanchu();
void charu();
void chakan();
/* /////////////////////////////// */
void main()
{
int i;
char c;
do
{
system("cls");/*我认为还是清一下屏为好*/
printf("学员成绩管理系统\n");
printf(" 1.添加\n");
printf(" 2.插入\n");
printf(" 3.删除\n");
printf(" 4.查看\n");
printf(" 5.退出\n");
printf("请选择:\n");
scanf("%d",&i);
switch (i)
{
case 1: tianjia();break;
case 2: charu();break;
case 3: shanchu();break;
case 4: chakan();break;
default :exit(0);
}
printf("继续吗?Y.N\n");
fflush(stdin);
c=getchar();
}while(c=='y'||c=='Y');
} /*do while循环*/
void tianjia()/* 录入。 */
{
char a;
int i;
float sum;
printf("请输入学号:");
scanf("%d",&stu[n].num);
fflush(stdin);
printf("请输入姓名:");
gets(stu[n].name);
for(i=0;i<N;i++)
{
printf("第%d门成绩:",i+1);
scanf("%d",&(stu[n].cj[i]));
sum+=stu[n].cj[i];
}
stu[n].pingjun=sum/N;
n++;
/* printf("%d",n); */
}
void shanchu()/* 删除 */
{
int i,j,j1;
printf("请输入需要删除的学号:");
scanf("%d",&i);
for (j=0;j<n;j++)
{
if ((i)==stu[j].num)
j1=j;
}
/* printf("%d",j1);*/
for (j=j1;j<n;j++)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
n--;
chakan();
}
void charu()/* 插入 */
{
tianjia();
}
void chakan()/* 查看,按平均值排序(大到小) */
{
int j,j1;
int i;
for (j=0;j<n;j++)
{
for (j1=j+1;j1<n;j1++)
{
if (stu[j].pingjun<stu[j1].pingjun)
{
temp=stu[j];
stu[j]=stu[j1];
stu[j1]=temp;
}
}
}
for (j=0;j<n;j++)
{
printf("%d\t%s\t",stu[j].num,stu[j].name);
for(i=0;i<N;i++)printf("%d\t",stu[j].cj[i]);
printf("\n");
}
}