第九周C++作业(part 1)

1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;

/********理解指针的几种表现形式****************/
#include <iostream>
using namespace std;

int main()
{

	int a=10;
	int*p;
	p=&a;
	cout<<"a = "<<a<<endl;
	cout<<"p = "<<p<<endl;
	cout<<"&a = "<<&a<<endl;
	cout<<"*p = "<<*p<<endl;
	cout<<"&p = "<<&p<<endl;
	cout<<endl;
	*p=15;
	cout<<"a = "<<a<<endl;
	cout<<"p = "<<p<<endl;
	cout<<"&a = "<<&a<<endl;
	cout<<"*p = "<<*p<<endl;
	cout<<"&p = "<<&p<<endl;

	return 0;
}

/********输入两个整数,由大到小的顺序输出****************/
#include <iostream>
using namespace std;

int main()
{

	int a,b,tp;
	int *p=&a,*q=&b;
	cout<<"please input a and b"<<endl;
	cin>>a>>b;
	if(a<b)
	{
		tp=*p;*p=*q;*q=tp;
	}
	cout<<"从大到小排序后的数为: "<<a<<"  "<<b<<endl;
	cout<<"从大到小排序后的数为: "<<*p<<"  "<<*q<<endl;

	return 0;
}

/********使用字符指针变量实现将字符串a赋值到字符串b中****************/
#include <iostream>
using namespace std;

int main()
{
	char a[]="hello world",b[20],*p,*q;
	p=a,q=b;
	for(;*p!='\0';p++,q++)
		*q=*p;
	*q='\0';
	cout<<"string1 is: ";
	cout<<a<<endl;
	cout<<"string2 is: ";
	cout<<b<<endl;

	return 0;

}

/********通过改变指针变量的值输出下面的字符串**********/
#include <iostream>
using namespace std;

int main()
{
	char *p = "student";
	for(;*p!='\0';p++)
		cout<<p<<endl;

	return 0;

}

/********用下标形式引用字符串中的字符**********/
#include <iostream>
using namespace std;

int main()
{
	char *p ="student";
	for(int i=0;p[i]!='\0';i++)
		cout<<p[i];
	cout<<endl;

	return 0;

}

/********利用指针相减的运算,计算字符串的长度**********/
#include <iostream>
using namespace std;

int main()
{
	char s[50];
	char *p;
	cout<<"please input a string: ";
	cin.get(s,50);
	p = s;
	for(; *p!='\0';)
		p++;
	cout<<"the length is :"<<p-s<<endl;  //p指向最后一个地址,s指向第一个地址

	return 0;

}

/********多级指针举例**********/
#include <iostream>
using namespace std;

int main()
{
	int i =5,*p,**pp;
	p=&i;
	pp=&p;
	cout<<&i<<'\t'<<i<<endl;
	cout<<&p<<'\t'<<p<<'\t'<<*p<<endl;
	cout<<&pp<<'\t'<<pp<<'\t'<<*pp<<'\t'<<**pp<<endl;
	return 0;

}

/********指针数组举例**********/
#include <iostream>
using namespace std;

int main()
{
	int a[5]={1,2,3,4,5};
	int *p[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
	for(int i = 0;i<5;i++)
		cout<<*p[i]<<'\t';
	cout<<endl;

	return 0;

}

/********用字符串初始化字符指针数组**********/
#include <iostream>
using namespace std;

int main()
{
	char *weekname[]={"sunday","monday","tuesday","wednesday","thursday","friday","saturday"};
	int i;
	while(1)
	{
		cout<<"please input week NO."<<endl;
		cin>>i;
		if(i<0||i>6)
			break;
		cout<<"week NO."<<i<<"-->"<<weekname[i]<<endl;
	}

	return 0;

}

/********将若干字符串按英文字典排序(由小到大)**********/
#include <iostream>
using namespace std;

int main()
{
	char *p[]={"Rebacca","Heaven","Michael Chang","Linda Tsai"};
	char * temp;
	int i, j, n=4;
	for(i=0;i<n-1;i++)
		for(j=0;j<n-1-i;j++)
			if(strcmp(p[j],p[j+1])>0)
			{
				temp=p[j],p[j]=p[j+1],p[j+1]=temp;					
			}
	for(i=0;i<n;i++)
		cout<<p[i]<<endl;



	return 0;

}

/********用指针数组处理二维数组**********/
#include <iostream>
using namespace std;

int main()
{
	int a[2][3],*p[2];
	int i,j;
	p[0]=a[0];
	p[1]=a[1];
	for(i=0;i<2;i++)
	for(j=0;j<3;j++)
		a[i][j]=j+i;
	for(i=0;i<2;i++)
	for(j=0;j<3;j++)
	{
		cout<<"a["<<i<<"]["<<j<<"]:";
		cout<<*(p[i]+j)<<endl;
	}
	return 0;

}


/********利用二级指针处理二维数组**********/
#include <iostream>
using namespace std;

int main()
{
	int a[2][3],*p[2],**pp;
	int i,j;
	p[0]=&a[0][0];
	p[1]=&a[1][0];
	pp=p;
	for(i=0;i<2;i++)
	for(j=0;j<3;j++)
		pp[i][j]=j+i;
	for(i=0;i<2;i++)
	for(j=0;j<3;j++)
	{
		cout<<"a["<<i<<"]["<<j<<"]:";
		cout<<*(*(pp+i)+j)<<endl;
	}
	return 0;

}

/********利用二级指针处理多个字符串**********/
#include <iostream>
using namespace std;

int main()
{
	char *a[]={"Rebacca","Heaven","Michael Chang",NULL};
	char **pp;
	pp=a;
	while(*pp!=NULL)          //为什么不是**pp!=NULL
		cout<<*pp++<<endl;

	return 0;

}

/********利用数组指针处理二维数组**********/
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int a[2][3] = {1,2,3,4,5,6};
	int (*p)[3];
	int i,j;
	p=a;
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
			cout<<setw(3)<<(*p)[j];
		p++;
	}
	cout<<endl;

	return 0;

}

/********指针作为函数参数的实例**********/
#include <iostream>
using namespace std;

void display(int *,int *);

int main()
{
	int a=5,b=10;
	int *pa = &a;
	int *pb = &b;
	display(pa,pb);


	return 0;

}
void display(int *p1, int *p2)
{
	cout<<"parameter 1 is "<<*p1<<endl;
	cout<<"parameter 2 is "<<*p2<<endl;
}


/********通过指针变量调用函数**********/
#include <iostream>
using namespace std;

void display(int *,int *);

int main()
{
	int func(int a,int b);
	int(*pf)(int a,int b);	//定义一个函数指针变量pf
	pf=func;				//将函数func的入口地址赋给了函数指针pf,从而使函数指针指向了该函数

	cout<<"please input two integers: "<<endl;
	int m,n;
	cin>>m>>n;
	int result=(*pf)(m,n);	//等价于reslut=func(m,n)
	cout<<"the result is "<<result<<endl;
	return 0;

}
int func(int a, int b)
{
	return a+b;
}

/********设置一个函数process,在调用它的时候,每次实现不同的功能,
输入a和b两个数,第一次调用时找出a和b中大者,第二次调用找出a和b中
的小者,第三次调用时求a和b之和**********/
#include <iostream>
using namespace std;

int max(int x,int y)
{
	int z;
	if(x>y)z=x;
	else z=y;
	return z;
}
int min(int x,int y)
{
	int z;
	if(x<y)z=x;
	else z=y;
	return z;
}
int add(int x,int y)
{
	int z;
	z=x+y;
	return z;

}
void process(int x,int y,int (*fun)(int,int))
{
	int result;
	result=(*fun)(x,y);
	cout<<result<<endl;
}
int main()
{
	int a,b;
	cout<<"enter a and b: "<<endl;
	cin>>a>>b;
	cout<<"max = ";
	process(a,b,max);
	cout<<"min = ";
	process(a,b,min);
	cout<<"sum = ";
	process(a,b,add);

	return 0;

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值