贵州省脱贫攻坚基金:请将这个C源程序添加一些注释

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 06:29:30
初学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");
}
}

我已添加了重要的注释,你看看,不行再和我联系,我是搞软件的

#include<stdio.h> //stdio.h头文件包含了输入、输出等命令
#include<stdlib.h> //stdlib头文件包含了cls清屏,exit退出
#define N 3 //定义常量
struct student //结构变量
{
int num; //定义一个整型变量num,存放学号
char name[20]; //定义一个字符型变量数组name,它有20个元素
int cj[N]; //定义一个整型变量数组cj,它有3个元素,分别存放三门成绩
int pingjun; //定义一个整型变量pingjun,存放平均分
}
stu[50],temp; //定义student型变量temp,和数组stu
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); //接受用户输入信息,保存在变量i中
switch (i) //比较i值
{
case 1: tianjia();break; //i=1,调用函数tianjia()
case 2: charu();break; //i=2,调用函数charu()
case 3: shanchu();break; //i=3,调用函数shanchu()
case 4: chakan();break; //i=4,调用函数chakan()
default :exit(0); //如果是其他值则退出
}
printf("继续吗?Y.N\n");
fflush(stdin);
c=getchar(); //接受用户输入的字符,保存到变量c中
}while(c=='y'||c=='Y');
} //do while循环,如果c=Y or y怎继续循环,否则退出

void tianjia()/* 录入 */
{
char a;
int i;
float sum;
printf("请输入学号:");
scanf("%d",&stu[n].num); //读入学号,保存到stu[n].num中
fflush(stdin);
printf("请输入姓名:");
gets(stu[n].name); //读入姓名,保存到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++; //n加一指向数组下个元素
}

void shanchu()/* 删除 */
{
int i,j,j1;
printf("请输入需要删除的学号:");
scanf("%d",&i);
for (j=0;j<n;j++) //通过循环找到与用户输入匹配的学生
{
if ((i)==stu[j].num)
j1=j;
} //找到了,记下学号,保存到j1中
for (j=j1;j<n;j++)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
} //把下个元素复制到刚找到的元素中,等于把它删除了
n--;
chakan(); //调用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");
} //将学生成绩在屏幕打印出来
}

&stu[N].num中间的点是结构成员运算符,用来访问结构成员的。
stu[N]表示结构数组,即每一个数组元素都是一个结构。