课本习题,稍微修改过
例题6.4
#include<iostream>
using namespace std;
int main()
{
int a=10,b=10,*ptr1,*ptr2;
ptr1=&a;
ptr2=&b;
cout<<noboolalpha<<(*ptr1==*ptr2)<<endl;
cout<<boolalpha<<(ptr1!=ptr2)<<endl;
return 0;
}
例题6.5
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[10],*p,i=0;
for(p=a;p<a+10;p++)
{
*p=2*(i+1);
i++;
}
for(p=a;p<a+10;p++)
cout<<setw(4)<<*p;
cout<<endl;
return 0;
}
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[10],i=0;
for(i=0;i<10;i++)
*(a+i)=2*(i+1);
for(i=0;i<10;i++)
cout<<setw(4)<<*(a+i);
cout<<endl;
return 0;
}
例题6.7
#include<iostream>
using namespace std;
int main()
{
char *p="students and teacher";
for(;*p!='\0';p++)
cout<<p<<endl;
return 0;
}
例题6.9
#include<iostream>
using namespace std;
int main()
{
char s[50],*p;
cout<<"please input a string:";
cin.get(s,50);
p=&s[0];
for(;*p!='\0';)
p++;
cout<<"the length is"<<p-s<<endl;
return 0;
}
例题6.10
#include<iostream>
using namespace std;
int main()
{
int i=5,*p,**pp;
p=&i;
pp=&p;
cout<<&i<<'\t'<<&p<<'\t'<<&pp<<endl;
cout<<p<<'\t'<<pp<<endl;
cout<<*p<<'\t'<<*pp<<'\t'<<**pp<<endl;
return 0;
}
例题6.13
#include<iostream>
using namespace std;
int main()
{
char *week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int i;
while(1)
{
cout<<"Please input weekNO.:";
cin>>i;
if(i<0||i>6)
break;
cout<<"week NO,"<<i<<"-->"<<week[i]<<endl;
}
return 0;
}
例题6.14
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char *p[]={"Dog","Apple","Rabbet","Cat","Fish"};
char *temp;
int i,j,n=5;
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;
}
习题6.18
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[3][2]={1,2,3,4,5,6};
int(*p)[2];
int i,j;
p=a;
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
cout<<setw(3)<<(*p)[j];
cout<<endl;
p++;
}
cout<<endl;
return 0;
}
例题6.20
#include<iostream>
using namespace std;
void lower(char *c);
int main()
{
char ch;
cout<<"input a uppercase character:";
cin>>ch;
lower(&ch);
cout<<"converted character:";
cout<<ch<<endl;
return 0;
}
void lower(char *pch)
{
if(*pch>='A'&&*pch<='Z')
*pch+=32;
}
例题6.22
#include<iostream>
using namespace std;
void input(int*s,int n);
int max(int *s,int n);
int main()
{
int a[5],big;
input(a,5);
big=max(a,5);
cout<<"the maximum is:"<<big<<endl;
return 0;
}
void input(int *s,int n)
{
cout<<"please input"<<n<<"integers:"<<endl;
for(int i=0;i<n;i++)
cin>>s[i];
}
int max(int *s,int n)
{
int max,i;
max=*s;
for(i=1;i<n;i++)
if(s[i]>max)
max=s[i];
return max;
}
课本习题
习题1
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[10],*p;
p=a;
for(int i=0;i<10;i++)
a[i]=2*(i+1);
for(i=0;i<10;i++,p++)
cout<<setw(3)<<*p;
cout<<endl;
return 0;
}
习题2
#include<iostream>
#include<cstring>
using namespace std;
void lower(char *ps,int n);
int main()
{
char s[20];
int len;
cout<<"输入一串大写字符串:";
cin.get(s,20);
len=strlen(s);
lower(s,len);
return 0;
}
void lower(char *ps,int n)
{
for(int i=0;i<n;i++)
{
*ps+=32;
cout<<*ps;
ps++;
}
cout<<endl;
}
习题3
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[20],b[20],*p,*s;
cout<<"输入字符串:";
cin.get(a,20);
p=a;
s=b;
for(;*p!='\0';p++)
{
if(*p==' ')
continue;
else
*s=*p;
s++;
}
*s='\0';
cout<<"改动后:"<<b<<endl;
return 0;
}
习题4
#include<iostream>
using namespace std;
int main()
{
char *month[]={"January","Febrary","Match","April","May",
"June","July","August","September","October",
"November","December"};
int i;
while(1)
{
cout<<"输入某月对应的数字:";
cin>>i;
if(i==0)
break;
else
cout<<"输出"<<month[i-1]<<endl;
}
return 0;
}
习题5
/*使用指针数组输出二维整型数组*/
#include<iostream>
using namespace std;
int main()
{
int a[3][2],*p[3];
int i,j;
p[0]=a[0];
p[1]=a[1];
p[2]=a[2];
for(i=0;i<3;i++)
for(j=0;j<2;j++)
a[i][j]=2*i-j;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
cout<<"a["<<i<<"]["<<j<<"];";
cout<<*(p[i]+j)<<endl;
}
return 0;
}
/*使用二级指针输出二维整型数组*/
#include<iostream>
using namespace std;
int main()
{
int a[3][2],*p[3],**pp;
int i,j;
p[0]=&a[0][0];
p[1]=&a[1][0];
p[2]=&a[2][0];
pp=p;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
pp[i][j]=2*i-j;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
cout<<"a["<<i<<"]["<<j<<"]:";
cout<<*(*(pp+i)+j)<<endl;
}
return 0;
}