问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-11-19 20:28

我来回答

6个回答

热心网友 时间:2024-10-21 11:52

这属于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++真的是很好很强大。

热心网友 时间:2024-10-21 11:53

#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;

热心网友 时间:2024-10-21 11:53

这是个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() //双冒号是作用域,前面加有stent表示此函数是对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这个地方执行,这种是不推荐使用的,因为不符合结构化程序设计,你高兴的话叫*都行,当然goto loop;要改为goto *;
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;

热心网友 时间:2024-10-21 11:54

好简单,这个不值200.50吧

热心网友 时间:2024-10-21 11:54

完全不懂程序么???怎么//打的地方让我感觉是考试在考基础知识题?

热心网友 时间:2024-10-21 11:55

这个基础的过分了…………
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么把word 标题第几章和后面的标题中间的位置弄小点?有图片 钢化膜是抗蓝光的好 还是普通的好 都是在官网上买的 价钱都一样 但是抗... 我朋友借我5000块钱,说好5天还的,到现在3个月了人都不见。电话也不借... 有谁知道明年晋城富士康多会招工呢?是不是现在进富士康不好进去了? ...深圳 找工作 几月份去好呢?是年底去,还是二三月去??我是明年... 你们借出去的钱,要回来了吗?你如何看待那些借钱不还的人 别人借我6万元钱,7年了,现在他不认了,借条也丢了怎么办 ...跟他要的时候说还,可就不见还,一直托着还钱时间,当时没写借条... 我在网上认识一个人把钱借给了他没给借条怎么办?他现在也不想还? ...欠我5000块钱,打了借条,请问我有必要起诉他吗,起诉他的费用下来要... 加急!c语言中,定义全局变量同时也定义了局部变量,最后我想打印出全局... ...User[571]) 这句c语言语句中间加上两个冒号代表什么意思? 求大神... c语言中,函数定义中的冒号是什么意思 请问C语言中怎样使用&quot;::&quot;(双冒号)这符号来引用外部的变量? c 语言里的 ::双冒号是什么意思啊 例假期间能吃荔枝吗 ...皮肤的卸妆产品有哪些?2020平价好用的卸妆水推荐榜单 生三七粉的价格是多少? 咋爸的故事作文800字 现代ix35儿童锁在哪里,ix35安全座椅接口类型 现代ix35儿童安全锁在哪 现代ix35儿童锁在哪里 咋了爸爸 是什么歌? 临泉哪里有卖天气丹套盒 屈臣氏里面有天气丹吗 机电技术应用专业主要学什么中职 透真的保湿面膜怎么样?夏天天天用有影响吗? 《重生无法无天》最新txt全集下载 电脑网络动不动就断开 简介电脑网络动不动就断开怎么办 李克勤与周慧敏合演的电视剧 新增疫情最多的国家 满天星能水养吗,满天星放水里养能养多久 爸爸和妈妈吵架了怎么劝 五十二渡西风牡丹多少钱 牡丹烟多少钱一包 牡丹金酒38度多少元1瓶 曹州老窖红牡丹多少钱一瓶? 一个数字既有约数3,又是6的倍数的数是几? 既有因数3又是6的倍数的数字? 一个数既是六的倍数又是三的因数这个数可能是多少? 一个数既是36的因数又是六的倍数这个数可能是几? 一个数是三的倍数又是六的倍数,这个数最小是什么 既有约数4又是6的倍数的最小自然数是 即使六的倍数又是三的倍数这样的两位数有什么 一个数是三的倍数又是六的倍数 ,这个数最小是多少? 用10以内的质数组成一个三位数,使它既有约数3,又是5的倍数,这个数... 鸡鸣是什么时辰 去西宁出差,当地人推荐一串红珊瑚手链,说是西宁特产,产青海湖,想问一... 无限卡钉能量方法 怎么在钉钉里现在能量是14怎么变成30