在新的班级安身了,经常会被问到“为什么”,我都不知道回答多少遍了,实际上很简单的答案:我想走计算机科学与技术这条技术路线,做一个实实在在的技术人员,期望不是很高,就想做一个程序员。为的就是多在校期间学习更多。上了几次机,发现新的班上有很多高手,就是我们认为的技术牛人了。也许对于一些真正的从业者来说没什么大不了的,但是对于我这样的正在学习有待提高技术水平的人来讲,真是牛!我现在写的一些程序都算什么,人家写的已经很有水平了。
老师在不经意间布置的一个作业,似乎班上没有人做,但是就在昨天的《面向对象程序设计》的上机课上,就有同学交了作业。看了一下,聂同学就能很熟练的使用指针和链表等知识了。自己现在连看懂人家写的程序都有点问题。有差距啊。
个人通讯录的程序c++ class(面向对象)版:
#include<iostream>
using namespace std;
class Person
{
public:
// Person(int,char,int,char);
void Input();
void Output();
Person *Next;
private:
int Num;
char Name[20];
int Age;
char Addr[30];
};
Person *p=NULL;
Person *Head=NULL;
Person *Now=NULL;
int main()
{
int n;
while(9!=n)
{
cout<<"输入你想要的操作\n1 添加新成员\n2 打印所有成员\n9 退出程序\n";
cin>>n;
switch(n)
{
case 1: p=Now;if(NULL==p){p=new Person;Head=p;}
else {p->Next=new Person;p=p->Next;}
p->Input();break;
case 2: p=Head;
do{
p->Output();
p=p->Next;}
while(NULL!=p);break;
case 9:break;
default:cout<<"输入的操作序号错误\n";break;
}
}
return 0;
}
void Person::Input()
{
cout<<"请输入序号\n";
cin>>Num;
cout<<"请输入姓名\n";
cin>>Name;
cout<<"请输入年龄\n";
cin>>Age;
cout<<"请输入地址\n";
cin>>Addr;
Next=NULL;
Now=p;
}
void Person::Output()
{
cout<<Num<<" ";
cout<<Name<<" ";
cout<<Age<<" ";
cout<<Addr<<" \n\n";
}
个人通讯录的程序c++ 函数版:
#include<iostream>
using namespace std;
struct Person{
int Num;
char Name[10];
int Age;
char Addr[20];
Person *Next;
};
Person *Head=NULL; // 记录链表的头地址
Person *Now=NULL; // 记录链表指针现在所指向的位置
Person *Q=NULL; //辅助P的指针
void Import(Person *p);
void Output(Person *p);
void Search(Person *p);
void Delete(Person *p);
int main()
{
int n=1;
Person *p=NULL;
do{
cout<<"请选择你需要进行的操作序号";
cout<<"\n1.增加新成员";
cout<<"\n2.打印所有成员";
cout<<"\n3.搜索某个成员";
cout<<"\n4.删除某个成员";
cout<<"\n5.加入某个成员到指定成员后面";
cout<<"\n9.退出程序";
cout<<"\n请输入你需要选择操作的序号\n";
cin>>n;
switch(n)
{
case 1:Import(p);break;
case 2:Output(p);break;
case 3:Search(p);break;
case 4:Delete(p);break;
case 9:break;
default :cout<<"操作序号输入错误\n\n\n";break;
}
}
while(9!=n);
return 0;
}
void Import(Person *p)
{
p=Now;
if(NULL==p)
{p=new Person;Head=p;}
else {p->Next=new Person;p=p->Next;}
cout<<"请输入序号\n";
cin>>p->Num;
cout<<"请输入姓名\n";
cin>>p->Name;
cout<<"请输入年龄\n";
cin>>p->Age;
cout<<"请输入地址\n";
cin>>p->Addr;
p->Next=NULL;
Now=p;
}
void Output(Person *p)
{
p=Head;
do
{
cout<<p->Num<<" ";
cout<<p->Name<<" ";
cout<<p->Age<<" ";
cout<<p->Addr<<" \n\n";
p=p->Next;
}
while(NULL!=p);
}
void Search(Person *p)
{
int n;
cout<<"输入该人员的序号\n";
cin>>n;
p=Head;
do
{
if(n==p->Num){cout<<"\n"<<p->Num<<" "<<p->Name<<" "<<p->Age<<" "<<p->Addr<<" \n\n";break;}
p=p->Next;
}while(NULL!=p);
if(p->Next==NULL)cout<<"对不起,你所查找的序号不存在。";
}
void Delete(Person *p)
{
int n;
int value=1; //针对链表的第一个
cout<<"输入要删除人员的序号\n";
cin>>n;
if(Head==NULL)cout<<"!!!!!!!!!!!1"<<endl;
p=Head;
do
{
if(value==1&&n==p->Num){cout<<"\n"<<p->Num<<" "<<p->Name<<" "<<p->Age<<" "<<p->Addr<<" \n\n";
Head=p->Next;
break;}
value=0;
if(n==(p->Next)->Num){cout<<"\n"<<(p->Next)->Num<<" "<<(p->Next)->Name<<" "<<(p->Next)->Age<<" "<<(p->Next)->Addr<<" \n\n";
p->Next=(p->Next)->Next;
break;}
p=p->Next;
}
while(NULL!=p);
}
虽然只是两个程序,还不能称之为软件,但是足以看出编软件的潜力,再说很多人都编软件时由于有强大的Vc++编译器,拖控件很厉害,写代码就不行了。经过和同学的交流得知原来聂同学在中学时期就在培训机构学了几个暑假,他很热爱编程,喜欢程序设计。一直都自学,加之大学也学这个,就提高到很快。牛人的达成也需要时间的历练啊。
还有一个程序是他在机房当着老师的面做出来到,就是在程序中实现对数据的存储,而不是说等程序执行完出现“press any key to continue”就没有了数据,这里就用到了.dat文件和<iostream.h>的深层次的知识点,没想到,没几十秒钟就写出来了,尽管如果学习了的话,会很简单,但是对于我们来讲,在老师没有讲之前是闻所未闻的……
实现数据的插入和存储:
#include<iostream.h>
#include<fstream.h>
#include<C:\Documents and Settings\Administrator\桌面\分割p13的程序\print.cpp>
#include<C:\Documents and Settings\Administrator\桌面\分割p13的程序\sort.cpp>
#define N 10
void sort(int *a,int n);
void print(int *a,int n);
void main()
{
ifstream fin("in.dat");
int a[N];
for(int i=0;i<N;i++)
fin>>a[i];
sort(a,N);
print(a,N);
}
void print(int *a,int n)
{
ofstream fout("out.dat");
for(int i=0;i<n;i++)
fout<<a[i]<<" ";
fout<<endl;
}
void sort(int *a,int n)
{
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(a[i]<a[j])
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
有.dat的文件,这位同学在上次的C语言自学知识竞赛中也拿到了第一名的好成绩,向他学习,尽量缩小差距吧!
2011-09-08 19:34