标题:真 奥义 C++第八章终结

关键词:指针

内容

A. 一句话概括今日目标完成情况

(a)复习前三节 0%

(b)完成第八章的学习 100%

B.具体内容

指向一位数组的行指针:

#include<iostream>
using namespace std;
int main()
{
int a[3][4]={{1,3,5,7},{2,4,6,8},{1,2,3,4}},(*p)[4];
for(p=a;p<a+3;p++){
for(int j=0;j<4;j++){
cout<<*(*p+j)<<'\t';
}
}
cout<<endl;
return 0;
}

字符串常量可以看成是存放在一个一维的字符数组中,当指针指向字符串后,引用字符串中的字符可以使用的形式是这样的:

*(指针变量+下标) 或者是 指针变量[下标]。

查找字符串中给定字符的函数

#include<iostream>
using namespace std;
char *strchr(char *str,char c)
{
while(*str!='\0')
{
if(*str==c)return str;
str++;
}
return NULL;
}
int main()
{
char s[]="abcdefghij";

char *str="abcdefghij";
char *p;
p=strchr(str,'j');
if(p==NULL)cout<<"字符串中无该字符"<<endl;
else
cout<<"该字符在串中的位置是:"<<p-str<<endl;
return 0;
}

将输入的月份数字输出为对应的英文名:

#include<iostream>
using namespace std;
char *month_name(int n)
{
static char *month[]=   //静态数组 
{
"Illegal month",
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
};
return (n>=1&&n<=12)?month[n]:month[0];
}
int main()
{
int n;
cin>>n;
cout<<n<<"-"<<month_name(n)<<endl;
return 0;
}

这次是用指针数组做的。但是不懂为什么编译的时候给了我一大堆Warning,但是我还是可以运行程序的,而且是准确的运行。

使用结构指针来访问日期结构类型变量,这里用两种方法来表示。1 (*指针变量).成员名  2 指针变量—>成员名  这两种格式最后输出的类型是完全一样的。不过第二种看起来更好理解一些,更符合人类的逻辑。

#include<iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int main()
{
Date d={2015,4,8},*p=&d;
cout<<(*p).year<<"-"<<(*p).month<<"-"<<(*p).day<<endl;
cout<<p->year<<"-"<<p->month<<"-"<<p->day<<endl;
return 0;
}

动态申请: new的使用

int n,*p;
cout<<"Please input n:";
cin>>n;
p=new int[n];

if(p==NULL){
cout<<"空间申请失败!":return 0;
}
cout<<"请输入n个数:";
for(int i=0;i<n;i++){
cin>>p[i];
}

这样就可以将输入的n值作为数组的元素个数了

而delete是释放动态申请的内存空间。一定要使用的。释放单个动态变量直接 delete 指针变量 即可。而释放动态数组是要  delete []  指针变量.

★ 逆置数组元素

#include<iostream>
using namespace std;
void invert(double *x,int n)
{
double t,*i,*j;
i=x;
j=x+n-1;
while(i<j)
{
t=*i;*i=*j;*j=t;
i++;j--;
}
}
int main()
{
double a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
cout<<"原数组:";
for(int i=0;i<15;i++){
cout<<a[i]<<" ";
}
cout<<endl;
invert(a,15);
cout<<"逆置后:";
for(int i=0;i<15;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}

经过这么多天,我深深的意识到了自定义函数的强大。先在头文件下面写上自定义函数,然后int main()主函数,几乎可以解决所有问题了吧。真是生猛。

而下面这个是使用new函数和rand随机取值函数搞出来的一大串。

#include<iostream>
#include<stdlib.h>
using namespace std;
void invert(double *x,int n)
{
double t,*i,*j;
i=x;
j=x+n-1;
while(i<j)
{
t=*i;*i=*j;*j=t;
i++;j--;
}
}
int main()
{
double *p=new double[15];
for(int i=0;i<15;i++){
p[i]=(double)rand()/RAND_MAX*(100-10)+10;
}
cout<<"原数组:"<<endl;
for(int i=0;i<15;i++){
cout<<p[i]<<'\t';
}
invert(p,15);
cout<<"逆置后:"<<endl;
for(int i=0;i<15;i++){
cout<<p[i]<<'\t';
}
return 0;
}

就是求了15个10-100的随机数,然后把他逆置输出。(我也不知道这个改动过后的主函数有什么意义可能就是这个老师想装个逼把)

这个字符串装逼是在太强了!

#include<iostream>
#include<cstring> 
using namespace std;
void sort(char(*p)[10],int n)
{
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(strcmp(p[i],p[j])>0)
{
char t[10];
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
}
}
int main()
{
char str[][10]={"Zhang","Wang","Wen","Xu","Li","Zhou"};
sort(str,6);
for(int i=0;i<6;i++){
cout<<str[i]<<'\t';
}
return 0;
}

哦不是……是字符串排序 第一个字母不行还可以用第二个字母排,没想到自己有朝一日也能写出这样的程序哈哈哈。至于后面的不想使用cstring的拷贝函数我也是醉了,为什么不用……非要去自定义一个拷贝函数呢……

IP地址变为点分十进制形式:(看起来就很高大上有没有啊!)

#include<iostream>
#include<cstring>
using namespace std;
bool check(char *str)   //检查有无除了0和1以外的数字 
{
int i;
for(i=0;i<32;i++)
if(str[i]!='1'&&str[i]!='0'){
return false;
}
return true;
}
int trans(char *str)   //二进制变十进制!要背过! 
{
int n=0,i;
for(i=0;i<8;i++){
if(str[i]=='1'){
n=n*2+1;
}
else n=n*2;
}
return n;
}
int main()
{
char IP[33];
cout<<"请输入32位二进制IP地址:"<<endl;
cin>>IP;
if(strlen(IP)!=32){
cout<<"IP地址的长度应该为32位"<<endl;

else{
if(!check(IP)){
cout<<"IP地址对应的点分十进制写法:"<<endl;
cout<<trans(IP)<<"."<<trans(IP+8)<<"."<<trans(IP+16)<<"."<<trans(IP+24)<<endl; 

}
return 0;
}

这个用了两个自定义函数,分别用来检查输入的32位里有没有除了1和0以外的数字以及将二进制转化为十进制。但是我这个主程序的else语句应该是有问题的。编译的时候没有error,但是运行的时候只能输入32位数字,敲了Enter之后没有任何回馈,调试了很久,这让我感到了些许的崩溃。这可能是我一个月来最沮丧的晚上了。

虽然很困,但是我还是把这些东西给敲完了。(因为昨天发了毒誓啊,不把第八章学完天打雷劈啊)。碰见好玩的事,刚才写程序的时候,辛辛苦苦打了大半年,结果刚编译好就让我的腾讯电脑管家给删除了,说我这是病毒。当时很欣喜:哇,我已经可以编写出病毒了!改天我也写个熊猫烧香。想了一会,发现:这什么垃圾电脑管家,老子敲了半天让你给我删了? 然后我就很生气的恢复了cpp文件并添加进了信任区。上图。这电脑管家可能是北半球最XX的了。

搞完了这个之后,我就敲那个IP地址转换的,两个自定义函数很新鲜,有种莫名的激动感。就好像你一直想要个孩子,盼了好久然后一下子有了个双胞胎。额,我觉得需要说明的一点是每天我的总结总是打这么多字,总给人一种不务正业的感觉,好像你这人一天不好好学C++,经他妈写日记了。但是,但是!我这个敲键盘的速度是非常快的,你们要知道,可能是东半球第四快的人了。所以别看我打了这么多字,但其实连十分钟都没有。而我学习的时间确实要比这个厂的。所以坦率地讲,我这并不算不务正业,而且实际上我也没什么正业。

最后的最后,我思考了很久,我明天到底是学习第九章呢?还是复习第八章呢?毕竟两天就走完有点仓促……

想了大概两分钟,我决定复习第六章第七章了。因为中国古代有位哲学家叫孔子你们可能听说过,他说了一句话叫 温故而知新,可以为师也。我觉得非常的对,虽然我不想当个老师,但也要以老师的标准来要求自己(某些方面)。再有就是今天早上C++的时候去机房,我竟然被一段简单的倒序输出难住了半小时!看来VC6.0和Dev还是有区别的。(上面那句纯粹放屁),其实这才是我要复习的真正原因。对了吐槽一句,於跃成你教的好烂哦……顺便推荐一首歌 Hit the Ground

C.明日计划

复习第六七章内容。

我的博客:http://blog.csdn.net/andr3zzzz

1508-张晨曦总结《2016年-11月-2日》【连续12天总结】相关推荐

  1. 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的

    如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技.科技金融等概念的热起 ...

  2. NOI系列活动标准竞赛环境(2016年11月08日更新)

    NOI系列活动标准竞赛环境(2016年11月08日更新) NOI系列活动标准竞赛环境更新如下: 分类 软件及版本 说明 启动/使用方法 系统软件 NOI Linux 1.4.1 操作系统 开机自动启动 ...

  3. 2016年11月7日 星期一 --出埃及记 Exodus 19:23

    2016年11月7日 星期一 --出埃及记 Exodus 19:23 Moses said to the LORD, "The people cannot come up Mount Sin ...

  4. IT168 CIO频道11月28日至12月01日文章精选

    IT168 CIO频道11月28日至12月01日文章精选 IT168 CIO频道11月28日至12月01日文章精选 美国大众汽车的IT治理之道 栏目:制造业信息化 内容摘要:[IT168 专稿]大众汽 ...

  5. 10年老电脑如何提速_电信宽带免费提速至200M,面向全国用户活动日期2020年11月9日至12月31日...

    近日中国电信免费提速活动,也是为了大家方便剁手吧! 2020年11月9日至12月31日,针对接入速率200Mbps以下的电信光纤宽带家庭用户,中国电信推出免费在线提速到200Mbps的优惠活动:针对接 ...

  6. 崔希凡JavaWeb笔记day28(JavaWeb完毕)(期末,暂停更新)(2016年11月16日12:24:03)

    终于在今天把JavaWeb课程学完,下一个目标就是框架了.不过在此之前,有实验,有备考,所以暂停学习框架以及更新. 下面是最后一day的笔记 链接:http://pan.baidu.com/s/1bo ...

  7. 1508-张晨曦总结《2016年-11月-15日》【连续25天总结】

    标题:一说洗脑会长就来洗脑-- 关键词:析构函数&实例讲解 内容 A. 一句话概括今日目标完成情况 (a)C++两节的学习 100% (b)祈祷我的衣服发货 100% B.具体内容 今天很圆满 ...

  8. 1508-张晨曦总结《2016年-11月-9日》【连续19天总结】

    标题:搞笑达人的自我反省与再出发 关键词:类.定义 内容 A. 一句话概括今日目标完成情况 (a)把divisor函数在main函数里调用 0% (完全失败了,因为根本就不是我想的那么回事儿) (b) ...

  9. 1508-张晨曦总结《2016年-11月-20日》【连续30天总结】

    标题:何去何从? 关键词:多态,派生,虚函数太多了 内容 A. 一句话概括今日目标完成情况 (a)10.5.10.6的学习 650%(今天一天把12.8学完了) (b)没啥 B.具体内容 今天一天没干 ...

最新文章

  1. SSMSSH项目中 springmvc 乱码问题解决
  2. python xlrd xlwt综合_xlrd和xlwt -- python
  3. SSAS系列——【02】多维数据(维度对象)
  4. 水晶报表常见问题整理之一(20050417)
  5. linux中 目标不是目录,Linux 中的 Install命令
  6. 每一个tab切换的都是一个新的组件刷新
  7. 历史文章之自然语言处理
  8. 三菱服务器显示b01,MR-JE-B三菱伺服驱动器的启动事项
  9. Pyserial文件传输
  10. HTTPS 加密、证书、签名与握手
  11. buuctf [ElasticSearch]CVE-2015-1427
  12. 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知
  13. Sun Solaris系统管理命令简介
  14. CCR炒币机器人:量化策略炒币机器人成新一代网红
  15. 企业网站制作网站安全评估技术与漏洞挖掘技术
  16. 新鲜出炉的连连看连接算法Python版
  17. windows 远程连接服务器和安装nginx
  18. 信息量,信息熵,纯度
  19. 如何把控签到效率?如何选择最合适的签到方式?
  20. veriog中的latch问题

热门文章

  1. JZOJ 5637 一双木棋
  2. django上课点名系统 计算机专业毕设源码03391
  3. 在vue中引入外部的css文件
  4. MKS H2407ND 直流驱动 使用说明书
  5. Bluemix实战教程: CF命令学习分享
  6. 【车载开发系列】UDS诊断---例程控制($0x31)
  7. 华为商城抢购助手_买不到!华为 Mate40 RS 保时捷设计开启抽签购买模式
  8. windows10密钥激活失败 0x80072efe
  9. Effective Java 2.0_中英文对照_Item 5
  10. oct、dec、hex、boolalpha的作用