1508-张晨曦总结《2016年-11月-3日》【连续13天总结】

标题:C++狂人的大复习

关键词:函数,指针,模块化,自定义

内容

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

a)复习六七章的内容 100%

b)温习前头的~

B.具体内容

第一个做了使用string操作字符串。附代码:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	string text1("Heavy rains...beyond the limit");
	string text2,text3;
	int k;
	text2="Sluice gates at Thres Gorges Dam opened to discharge water.";
	text3=text1+text2;
	k=text3.find("Heavy");
	text3.erase(k,sizeof("Heavr")-1);
	text3.insert(k,"Strong");
	cout<<text3<<endl;
	return 0;
}

接下来是取子字符串的,这个来来回回敲了好多遍,附代码:

#include<iostream>
using namespace std;
int main()
{
	char str[100];
	char sub[101];
	int len;
	int k,l;
	int i,j=0;
	cout<<"请输入原字符串(可以有空格的)"<<endl;
	cin.getline(str,100);
	len=0;
	while(str[len]!='\0'){
		len++;
	}
	cout<<"请输入子串的起始位置和长度:"<<endl;
	cin>>k>>l;
	while(k!=0&&l!=0){
		j=0;
		for(i=k-1;i<k+l-1&&i<len;i++){
			sub[j]=str[i];
			j++;
		}
		sub[j]='\0';
		cout<<sub<<endl;
		cout<<"请输入子串的起始位置和长度:"<<endl;
		cin>>k>>l;
	}
	return 0;
}
不仅可以根据用户输入的位置和长度来取子字符,还可以循环使用。非常的厉害。

而下面这个词频统计是当时看了好久才看懂的。感觉这个在初期学习中算很长的代码了,附代码:

#include<iostream>
#include<cstring>
using namespace std;
struct WordList{
	char word[20];
	int freq;
};
int main()
{
	WordList list[1000];
	int N=0;
	int i,j,k;
	char tmp[20];
	cout<<"请输入一系列英语单词,以xyz表示输入结束"<<endl;
	cin>>tmp;
	while(strcmp(tmp,"xyz")!=0){
		for(i=0;i<N;i++){
			if(strcmp(list[i].word,tmp)==0){
				list[i].freq++;
				break;
			}
		}
		if(i>=N){
			strcpy(list[i].word,tmp);
			list[i].freq=1;
			N++;
		}
		cin>>tmp;
	}
	for(i=0;i<N-1;i++){
		k=i;
		for(j=i+1;j<N;j++){
			if(strcmp(list[j].word,list[k].word)<0){
				k=j;
			}
		}
		if(k!=i){
			WordList tmp;
			tmp=list[i];
			list[i]=list[k];
			list[k]=tmp;
		}
	}
	cout<<"词频统计结果如下:"<<endl;
	for(i=0;i<N;i++){
		cout<<list[i].word<<'\t'<<list[i].freq<<endl;
	} 
	return 0;
}
这个code的难点,我感觉很主要是struct定义结构体,和循环语句套嵌之间的相互关系要认真考量。这是今天截止到到目前为止唯一一个敲完直接F9,no error,no warning,直接运行的code了,我感到了由衷的欣慰,虽然走的很慢,但我尽量走稳。对于while和for语句的灵活搭配使用,我认为是我接下来的重点。

PS老师说使用复制和比较大小等函数属于危险操作,要在头文件之上加上 #define_CRT_SECURE_NO_WARNINGS这句话,然而我没加之前程序可以运行,加上之后直接就gg了。我也不是很懂这个老师了。上次第一次学习到这里的时候就是这样。

下面这个是用自定义的maxThree函数来求输入的几个数的最大值,附代码:

#include<iostream>
using namespace std;
double maxThree(double a,double b,double c)
{
	double max;
	max=a>b?a:b;
	max=max>c?max:c;
	return max;
}
int main()
{
	double x1,x2,x3,max;
	cout<<"请输入三个实数:"<<endl;
	cin>>x1>>x2>>x3;
	max=maxThree(x1,x2,x3);
	cout<<"最大值是:"<<max<<endl;
	return 0;
}
当初学习这个都时候感觉挺神奇,可惜我现在已经学了用指针变量来求最大值了。所以坦率地讲,我感觉这个自定义函数挺low的。还是指针那块牛X啊。

我感觉还是要去复习一下递归,内联,重载三个东西。上三个实例函数把:

1,递归函数。直接或间接使用自己的函数。这个函数就是在输入的数字不等于0的情况下,自己乘以自己减一……

#include<iostream>
using namespace std;
int f(int n)
{
	if(n==0)
	return 1;
	else 
	return n*f(n-1);
}
int main()
{
	int a;
	cin>>a;
	int jiecheng;
	jiecheng=f(a);
	cout<<jiecheng<<endl;
	return 0;
}
2.内联函数 ,一般用来计算规模很小但是使用很频繁的问题。对,没毛病。附代码:

#include<iostream>
using namespace std;
inline int square(int x)
{
	return x*x;
} 
int main()
{
	int i,sum=0;
	for(i=1;i<=10;i++){
		sum+=square(i);
	}
	cout<<"sum="<<sum<<endl;
}#include<iostream>
using namespace std;
inline int square(int x)
{
	return x*x;
} 
int main()
{
	int i,sum=0;
	for(i=1;i<=10;i++){
		sum+=square(i);
	}
	cout<<"sum="<<sum<<endl;
}
3.函数重载 (这个太简单了,就不上代码了)
而第七章用用指针交换两个变量的值 ,顺带比较大小并且按照从小到大的顺序输出,带指针的code写起来也是很畅快啊~附代码:

#include<iostream>
using namespace std;
void swap(int *px,int *py)
{
	int t=*px;
	*px=*py;
*py=t;

}
int main()
{
	int a,b,c;
	cout<<"请输入三个整数:"<<endl;
	cin>>a>>b>>c;
	int *pa=&a;
	int *pb=&b;
	int *pc=&c;
	if(*pa>*pb)
	swap(pa,pb);
	if(*pa>*pc)
	swap(pa,pc);
	if(*pb>*pc)
	swap(pb,pc);
	cout<<a<<" "<<b<<" "<<c<<endl;
	return 0; 
}

今天本来有三节课,由于莫名其妙的原因全都灰了。所以十点起床敲键盘,复习了一天,代码写了再删写了再删。就跟当时我拆Smartisan M1的包装盒一样。充满快感。

困意十足,今天不扯蛋了。


C.明日计划

 坦率地讲,明天下午第二节课有空。老夫夜观天象,是个学9.1,9.2的好日子。

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

我的邮箱:smartisandre@yeah.net

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值