打星星-变
如何实现一个如图的功能呢?
*
**
***
****
*****
我们可以用for语句实现,双层for
for(int m=10;m>0;--m)
{
for (int n=0;n<m;++n)
{
printf("*");
}
printf("\n");
}
总结最小的结构就是*,
我们通过使里面的for 循环的条件变化来达到控制每行输出个数的变化。
外面的for提供1-10的个数.
现在改变需求:用户需求自己定义输出多少个*
新函数 scanf用来接受用户输入和用户互动,_s表明这个函数是安全版函数.
int in = 100000;
//用户输入多少,我就产生多少行和列个*
scanf_s("%d",&in);
for(int m=in;m>0;--m)
{
for (int n=0;n<10;++n)
{
printf("n=%d *",n);
}
printf("\n");
}
排队-排序
int k[]={4600,2320,10000,5000};
这几个是工资,现在要求排个队,从小向大。
开始一步一步描述冒泡算法的过程。
void sort()
{
int a=1;
int b=2;
int c=55558;
//交换数字的过程需要说一下
c=a;//c?1
a=b;//a?2 b?2
b=c;//a=2 b=1
//从小到大
int k[]={4600,2320,10000,5000};
int ok= 4;
for (int i=0;i<ok-1;++i)
{
for (int j=i+1;j<ok;++j)
{
if (k[i]>k[j])
{
int a=k[j];
k[j] =k[i];
k[i] = a;
}
}
}
for (int i=0;i<4;++i)
{
printf("\n%d ",k[i]);
}
}
写一个从大到小的排序
她竟然写出来了。。。
推荐了《潭版C语言》
面向对象
我最近在重修设计相关,所以希望我的女友也能优雅的代码起步。
我先举了个设计模式里面的例子是:
买票:飞机票,火车票,汽车票
回家
她不太理解为什么要这样做。
这样的必要性何在。
我们一起从应聘网站看需求,不同的语言,她问:为什么有多种语言。
我开始找资料给她看并讲面向对象的优点:
结构化设计
- 封装的好处-淘宝先付款后发货的逻辑
- 保护逻辑
- 隐藏复杂
- 方便修改
- 继承-代码重用的好处
- 多态-没讲但是例子用到了
重在过程,我开始忘了写virtual,结果是调用的是默认函数,补了virtual,她问它是做什么的。
说了类默认是保护状态即private,接口需要特殊说明用public。她问:protected是什么,为了防止混乱回答以后再解释。
回顾一下
指针概念没有明确说明
没有解释公有继承和私有继承以及保护继承。但是直接用了public继承。
好了本节结束。和她讨论了会儿程序员维护代码的事情,以及程序员说:“不能实现”这种懒惰行为。
下面的代码就是演示程序,她说非常喜欢,她完成了bage鸟的定义,我用这个例子来说明,类帮助我们减少重复代码,她说:子类覆盖了父类。这真是自然啊。
class bird
{
public:
virtual void eat()
{
printf_s("在吃\n");
}
virtual void fly()
{
printf_s("飞来飞去\n");
}
virtual void jiao()
{
printf_s("叫了一声\n");
}
virtual void name()
{
printf_s("我是鸟\n");
}
void start(){
name();
eat();
fly();
jiao();
printf_s("\n");
}
};
class xique:public bird
{
public:
void eat()
{
printf_s("吃虫子\n");
}
void name()
{
printf_s("我叫喜鹊哟\n");
}
};
class haiou:public bird
{
public:
void eat()
{
printf_s("吃鱼\n");
}
void jiao()
{
printf_s("欧欧欧\n");
}
void name()
{
printf_s("我叫海鸥哟\n");
}
};
class bage:public bird
{
public:
void eat()
{
printf_s("吃肉\n");
}
void jiao()
{
printf_s("会学人类说话\n");
}
void name()
{
printf_s("我叫八哥哟\n");
}
};
int _tmain(int argc, _TCHAR* argv[])
{
bird* a = new xique();
a->start();
bird* b = new haiou();
b->start();
bird* c = new bage();
c->start();
return 0;
}
如果你是新手,别觉得上面的代码多,我教我女友的时候是一步一步写完这个程序的。所以,它并不是那么复杂,如果你搞清楚它的逻辑。