指针
2.1 取子串 指针***
从键盘上输入一个字符串,输出字符串中第一个逗号后面的子串.
#include <iostream>
using namespace std;
int main()
{
char a[500];
char *p;
cin.get(a,500);
p=a;
while(*p!=','&&*p!=0)
{
p++;
}
if(*p==0) cout<<"无子串"<<endl;
else
cout<<p+1<<endl; //p为指向字符的指针类型.
return 0;
}
2.2 数组输出 指针*
使用指针输出数组.
#include <iostream>
using namespace std;
int main()
{
int a[10],i,*p;
for(i=0;i<10;i++)
{
cin>>a[i];
}
p=a;
cout<<*p<<endl;
for(i=1;i<10;i++)
{
p++;
cout<<*p<<endl;
}
}
2.3 输出大数 指针**
从键盘上输入2个数,输出其中大的数.
#include <iostream>
using namespace std;
int maxValue(int *p,int*q)
{
if(*p>*q)
return *p;
else
return *q;
}
int main()
{
int *p;
int *q;
int a;
int b;
p=&a;
q=&b;
cin>>a>>b;
cout<<maxValue(p,q)<<endl;
}
2.4 字符串分割 指针****
从键盘上输入一个字符串,在第一个空格处将字符串分割为2个子串。要求定义名为separationString的函数,函数原型为 char *separationString(char *myString),没有空格时返回NULL。
#include <iostream>
using namespace std;
char *separationString(char str[])
{
char *p=str;
int i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=' ')
{
p++;
}
if(str[i]==' ')
{
str[i]='\0';
break;
}
}
return p+1;
}
int main()
{
char str[100];
char *p;
cin.get(str,100);
p=separationString(str);
cout<<str<<endl;
cout<<p<<endl;
}
2.5 平均分II-指针
设有8个评委评分,统计时,去掉1个最高分和1个最低分,其余6个分数的平均分即是最后得分,最后输出这个最后得分。
要求用指针作函数参数的方法,计算最后得分的函数说明:float fun(float*p,int n);
#include<iostream>
#include <iomanip.h>
using namespace std;
float fun(float*p,int n)
{
int i;
float sum=0;
for(i=0;i<8;i++)
{
sum+=*p;
p++;
}
return sum/6.0;
}
int main()
{
float a[8],*p,max,min;
int i,maxx=0,minn=0;
for(i=0;i<8;i++)
{
cin>>a[i];
}
max=a[0];
min=a[0];
for(i=0;i<8;i++)
{
if(a[i]>max)
{
max=a[i];
maxx=i;
}
if(a[i]<min)
{
min=a[i];
minn=i;
}
}
a[maxx]=0;
a[minn]=0;
p=a;
#include<iostream>
#include <iomanip.h>
using namespace std;
float fun(float*p,int n)
{
int i;
float sum=0;
for(i=0;i<8;i++)
{
sum+=*p;
p++;
}
return sum/6.0;
}
int main()
{
float a[8],*p,max,min;
int i,maxx=0,minn=0;
for(i=0;i<8;i++)
{
cin>>a[i];
}
max=a[0];
min=a[0];
for(i=0;i<8;i++)
{
if(a[i]>max)
{
max=a[i];
maxx=i;
}
if(a[i]<min)
{
min=a[i];
minn=i;
}
}
a[maxx]=0;
a[minn]=0;
p=a;
cout<<fixed<<setprecision(5)<<fun(p,8)<<endl;
return 0;
}
2.6 两个数之和 指针*
从键盘上输入2个数,输出这个数的和.
#include <iostream>
using namespace std;
int main()
{
int *p,*q;
int m,n;
cin>>m>>n;
p=&m;
q=&n;
cout<<*p+*q<<endl;
}
2.7 数组中的最大数 指针***
要求使用指针方式将10个数从键盘读入到数组a中,并输出其中最大的数.
#include <iostream>
using namespace std;
int main()
{
int a[10],i,*q;
for(i=0;i<10;i++)
{
cin>>a[i];
}
q=a;
int max=0;
for(i=0;i<10;i++)
{
if(max<a[i])
max=a[i];
}
*q=max;
cout<<*q<<endl;
}