谁能帮我注释一下这段程序(C)

程序一次粘不过来,一会我再补充。有“//”的地方注释下,谢谢了~~想用Q说的Hi我,给你Q号~
-------------------------------------------------------------
#include<iostream> //尖括号里什么意思?
#include<stdlib.h> //尖括号里什么意思?
#include<iomanip> //尖括号里什么意思?
using namespace std; //
class student //
{
char name[30];
int number;
char sex[20];
char contact[30];
char birthday[30];
int judge;
public: //
student()
{
judge=0;
}
void set(char *a,int b,char *c,char *d,char *e); //
void show(); //
void Delete();
char *getname(); //
int jud();
};

int student::jud() //双冒号什么意思?
{
return judge; //
}

char *student::getname() //
{
return name;
}
void student::set(char *a,int b,char *c,char *d,char *e) //
{
strcpy(name,a); //
number=b; //
strcpy(sex,c); //
strcpy(contact,d);
strcpy(birthday,e);
}

void student::show() //
{
cout<<name<<setw(15-strlen(name))<<number<<setw(15)<<sex<<setw(15)<<contact
<<setw(15)<<birthday<<endl; //
}

void student::Delete()
{
judge=1;
}

int main()
{
int b,choice,count=0,i; //
char a[30],c[20],d[30],e[30]; //
student s[100];
loop: printf("*****************************************************\n"); //loop什么意思
printf("| |\n");
printf("| 学生学籍管理 |\n");
printf("| ^_^ =_=| |\n");
printf("| 1.信息录入 |\n");
printf("| 2.信息修改 |\n");
printf("| 3.信息删除 |\n");
printf("| 4.退出 |\n");
printf("| |\n");
printf("*****************************************************\n");
printf("请输入序号,按回车确定\n");
cin>>choice; //
switch(choice)
{
case 1:printf("下面开始录入信息:\n");
printf("姓名: \n");
cin>>a; //
printf("学号: \n");
cin>>b;
printf("性别: \n");
cin>>c;
printf("联系方式: \n");
cin>>d;
printf("出生日期: \n");
cin>>e;
s[count++].set(a,b,c,d,e); //
printf("录入成功\n");
system("pause"); //
system("cls"); //
goto loop;
break;
实在不好意思,百度不让粘这么多字,补充之后也写不下。大家就到我空间里看吧。
http://hi.baidu.com/%C3%BB%C4%CE%C1%CB/blog/item/724c658040a8d0de9123d9a9.html
谢谢诶~~

才学了一学期的C程……还没好好学……所以……高手们就别取笑我了……

这属于C++的范畴,虽然我C++学得也是半斤八两,但是这段代码我还是基本上过得去。

我假设你是有一定的C编程基础,所以就只回答你空间描述的不懂的地方了,每句都翻译枯燥而且也会感觉不知所云。还有什么不懂的,欢迎提问,我有足够的耐性和信心让你搞明白,呵呵^!^

C++中主要是比C多了面向对象的概念。
#include <*****> 表示的是将*****头文件包含进来
#include "*****" 功能一样,只是他们索引文件的方式不一样,初学者不必深究。
*****头文件里面定义了常用的一些预处理,结构体,类等等,可以方便大家直接使用不再定义他们。你可以搜索*****找到它打开看看里面的内容,不要随意修改他们哦,否则你以后写程序要出问题的哟,呵呵。

using namespace std;
表示要用到的一些关键字所在的命名空间
因为用到了cout所以必须加上这句话。

定义了一个Student类,定义类的时候除了可以定义一些变量,还可以定义一些接口,变量和接口都可以用private,public,protected来定义访问 以及 继承权限的。
其实接口更直接一点就是一个函数,或者说成指向函数的指针变量也可以,主要看你怎么理解了。
int student::jud() ::表示域限定符,用::定义了一个接口(也就是函数),表示这个函数是属于student类的。
同时student类中还定义了一个student()函数,是构造函数,语法规定必须和类名字相同。构造函数的主要作用是类实例化的时候初始化变量,也就是在创建对象的要用到的。

loop: printf("****");
loop:表示的是一个标号,后面用goto loop 跳转到loop:位置执行printf("****");
你完全可以把loop替换成别的东西,比如xunhuan,呵呵

cout 用来控制输出
<<连接各个参数,
cint 用来控制输入
>>连接各个参数。参数和printf ,scanf 是相一致的。

system("***"); 可以调用一些命令行,如cls 清屏 ,pause 暂停 还可以创建进程等等。

好像差不多没了,其他东西基本都是C语言知识了

PS:
其实C++的类和C语言的结构体非常相似,类可以定义函数接口,但是结构体不行
其实我们在结构体中也可以变相的实现定义函数的嘛,比如定义一个函数指针变量。
唯一不同的就是C++的类多了继承的概念,一个类可以继承另一个类的一些属性
而且在继承的过程中还有private,public,protected等权限。

当然C++除了类之外还有STL等一些比较高级的东东值得学习,巧妙的使用他们可以加快项目进度,提升项目效率,C++真的是很好很强大。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-28
#include<iostream>
/*包含头文件iostream,我们使用的cout,cin都是定义在这个文件中的,如果不包含进来的话,那么cout,cin都是未定义的,不能使用,就像我们在使用一个函数之前要声明函数一样,否则编译器根本找不到此符号的意义。iostream是跟输入输出有关的头文件*/
#include<stdlib.h>
/*stdlib.h是原来C语言中的一个头文件,被C++兼容,此头文件中包括了标准的库,比如system命令就在此头文件中定义的*/
#include<iomanip> /*主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样*/
using namespace std;
/*
使用名称空间std。要理解名称空间的概念。名称空间的出现就是为了避免重复的名字。例如在一个学校的计算机系有两个叫张三的人,那么仅仅以名字为依据,我们可以找到两个人,到底是谁呢,不知道。但是如果我们说一班张三,和二班张三。我们就确定了这两个人了。名称空间同样也是这样,cout标示符就在名称空间std下面。如果我们不适用using namespace std;的话当我们使用cout的时候,必须std::cout<<这样使用。
*/
class student /*定义一个类,名字叫做student*/
{
char name[30];
int number;
char sex[20];
char contact[30];
char birthday[30];
int judge;
public: /* 下面的成员都是public成员,此类型的成员在外部都可以被访问到。 */
student()
{
judge=0;
}
void set(char *a,int b,char *c,char *d,char *e);
/* 声明了一个函数,具有5个参数 */
void show(); /* 声明函数show */
void Delete();
char *getname(); /* 声明函数getname,返回一个指向char的指针 */
int jud();
};

int student::jud() /*表明此处定义的jud函数是student类的成员函数,不是全局函数*/
{
return judge;/* 返回变量judge的值 */
}

char *student::getname() /* 定义getname函数的实现,返回指向字符的指针(实际上就是学生名字),student::意义同上 */
{
return name;
}
void student::set(char *a,int b,char *c,char *d,char *e) /* 定义set函数,其余同上 */
{
strcpy(name,a);/* 调用strcpy函数,将name指向的字符串拷贝到a处,strcpy函数在头文件<string.h>中定义 */
number=b;/*赋值*/
strcpy(sex,c);/* 拷贝意义同上 */
strcpy(contact,d);
strcpy(birthday,e);
}

void student::show() /* 定义student的成员函数show */
{
cout<<name<<setw(15-strlen(name))<<number<<setw(15)<<sex<<setw(15)<<contact
<<setw(15)<<birthday<<endl; /* 使用cout输出 */
}

void student::Delete()
{
judge=1;
}

int main()
{
int b,choice,count=0,i;/* 定义变量 */
char a[30],c[20],d[30],e[30]; /*定义数组*/
student s[100];
loop: printf("*****************************************************\n");/* loop是一个标号,我们可以使用goto关键字控制程序转向loop标号所在的语句开始运行 */
printf("| |\n");
printf("| 学生学籍管理 |\n");
printf("| ^_^ =_=| |\n");
printf("| 1.信息录入 |\n");
printf("| 2.信息修改 |\n");
printf("| 3.信息删除 |\n");
printf("| 4.退出 |\n");
printf("| |\n");
printf("*****************************************************\n");
printf("请输入序号,按回车确定\n");
cin>>choice;/*输入信息到choice变量*/
switch(choice)
{
case 1:printf("下面开始录入信息:\n");
printf("姓名: \n");
cin>>a; /*输入信息到a变量*/
printf("学号: \n");
cin>>b;
printf("性别: \n");
cin>>c;
printf("联系方式: \n");
cin>>d;
printf("出生日期: \n");
cin>>e;
s[count++].set(a,b,c,d,e);
printf("录入成功\n");
system("pause"); /*时程序暂停,实际上这里调用的是dos命令行,pause命令的功能,system函数就是在头文件<stdlib.h>中声明的*/
system("cls");/*调用命令行的cls命令,清屏*/
goto loop;
break;
第2个回答  2009-08-28
这是个c++的源码
#include<iostream> //引入C++的标准输入输出流 从系统目录下开始查找
#include<stdlib.h> //引入stdlib.h stdlib.h里面定义了五种类型、一些宏和通用工具函数。
#include<iomanip> //引入I/O流控制头文件
using namespace std; //这是定义了一个名为std的命名空间类似于Java的package std
class student //定义学生类
{
char name[30];
int number;
char sex[20];
char contact[30];
char birthday[30];
int judge;
public: //表示以下的成员都是public的,以上的没有注明访问方式则按c++默认的private
student()
{
judge=0;
}
void set(char *a,int b,char *c,char *d,char *e); //这是声明了该类有一个方法,不过还没有定义
void show(); //同上
void Delete();
char *getname(); //同上,此函数将返回一个char的指针
int jud(); //同上
};

int student::jud() //双冒号是作用域,前面加有stduent表示此函数是对student的jud()函数做的定义;
{
return judge; //返回student中的judge成员
}

char *student::getname() //对student的getname()函数做的定义;
{
return name;
}
void student::set(char *a,int b,char *c,char *d,char *e) //对student的set()函数做的定义;
{
strcpy(name,a); //复制字符串,把a复制到name中,即设置学生的名字
number=b; //设置学生的学号
strcpy(sex,c); //复制字符串,把c复制到sex中,即设置学生的性别
strcpy(contact,d);
strcpy(birthday,e);
}

void student::show() //对student的show()函数做的定义;
{
cout<<name<<setw(15-strlen(name))<<number<<setw(15)<<sex<<setw(15)<<contact
<<setw(15)<<birthday<<endl; //这句是连着上面那句的,作用为输出学生名字输出(15-学生名字长度)个空格,输出学号,输出15空格....
}

void student::Delete()
{
judge=1;
}

int main()
{
int b,choice,count=0,i; //
char a[30],c[20],d[30],e[30]; //
student s[100]; // 定义一个student的数组
loop: printf("*****************************************************\n"); //loop是一个标识符,表示这个地方叫loop,配合goto loop;使用,执行goto loop;会让你的程序跳到loop这个地方执行,这种是不推荐使用的,因为不符合结构化程序设计,你高兴的话叫fuck都行,当然goto loop;要改为goto fuck;
printf("| |\n");
printf("| 学生学籍管理 |\n");
printf("| ^_^ =_=| |\n");
printf("| 1.信息录入 |\n");
printf("| 2.信息修改 |\n");
printf("| 3.信息删除 |\n");
printf("| 4.退出 |\n");
printf("| |\n");
printf("*****************************************************\n");
printf("请输入序号,按回车确定\n");
cin>>choice; //cin是输入啊 输入一个数字到choice
switch(choice)
{
case 1:printf("下面开始录入信息:\n");
printf("姓名: \n");
cin>>a; //输入一个数字到a
printf("学号: \n");
cin>>b;
printf("性别: \n");
cin>>c;
printf("联系方式: \n");
cin>>d;
printf("出生日期: \n");
cin>>e;
s[count++].set(a,b,c,d,e); //对student数组的第count个元素进行初始化
printf("录入成功\n");
system("pause"); //让程序暂停执行,按任意键继续
system("cls"); //清屏
goto loop; //跳到loop
break; //此处的break可有可无
case 2:cout<<"输入要修改的学生姓名: ";
cin>>a;
for(i=0;i<count;i++) //
if(strcmp(s[i].getname(),a)==0) //一个一个地取学生的姓名出来和a比较,相等的话
{
if(s[i].jud()==1) //如果该学生被删除的话
{
cout<<"所要修改的信息已经删除"<<endl;
system("pause");
system("cls");
goto loop; //跳到loop
}

char X;
cout<<"姓名"<<setw(13)<<"学号"<<setw(15)<<"性别"<<setw(15)<<"联系方式"<<setw(15)
<<setw(15)<<"出生日期"<<endl; //又是一个输出语句,上面有说,不详谈了
s[i].show(); //输出学生的资料
printf("确认修改 Y(y)/N(n):\n");
cin>>X; //输入啊,怎么这些都要加注释啊
if(X=='Y'||X=='y') //
{
printf("下面开始修改信息:\n");
printf("姓名: \n");
cin>>a;
printf("学号: \n");
cin>>b;
printf("性别: \n");
cin>>c;
printf("联系方式: \n");
cin>>d;
printf("出生日期: \n");
cin>>e;
s[i].set(a,b,c,d,e); //对该学生所有成员进行重新设置
printf("修改成功\n");
}
else
{
system("pause");
system("cls");
goto loop;
}
}
printf("没有找到您要修改的学生姓名...\n");
system("pause");
system("cls");
goto loop;
break;
case 3:printf("输入要删除的学生姓名: \n");
cin>>a;
for(i=0;i<count;i++)
if(strcmp(s[i].getname(),a)==0) //一个一个地取学生的姓名出来和a比较,相等的话
{
if(s[i].jud()==1)
{
printf("所要修改的信息已经删除\n");
system("pause");
system("cls");
goto loop;
}
char X;
cout<<"姓名"<<setw(13)<<"学号"<<setw(15)<<"性别"<<setw(15)<<"联系方式"<<setw(15)
<<setw(15)<<"出生日期"<<endl; //又是一个输出语句,上面有说,不详谈了
s[i].show(); //输出学生资料
printf("确认删除 Y(y)/N(n): \n");
cin>>X;
if(X=='Y'||X=='y')
{
s[i].Delete(); //删除该对象
printf("删除成功...\n");
system("pause");
system("cls");
goto loop;
}
else
{
system("pause");
system("cls");
goto loop;
}
}
printf("没有找到您要删除的学生姓名...\n");
system("pause");
system("cls");
goto loop;
break;
case 4:printf("感谢使用,再见! ^_^ \n");
}
return 0;
第3个回答  2009-08-28
好简单,这个不值200.50吧
第4个回答  2009-08-28
完全不懂程序么???怎么//打的地方让我感觉是考试在考基础知识题?
第5个回答  2009-08-28
这个基础的过分了…………
相似回答