C++实验七:指针的使用

题目1:

写一个函数实现两个字符串的自定义减法。即自己写一个strSub函数,函数原型为
void strSub(char *p1, char *p2, int *sub)
设p1指向字符串s1,p2指向字符串s2,要求两个字符串对应位置字符逐个进行相减,结果存入整型数组sub中,当字符串长度不同时短字符串缺失部分用‘\0’计算。
ABC – abc = -32 -32 -32
abc – ABC = 32 32 32
ABC – a = -32 66 67
A – ABC = 0 -66 – 67
在main函数中输入两个字符串s1,s2,调用函数strSub,在main函数中把结果输出。

编写程序:

#include <iostream>
using namespace std;
int strSub(char *p1,char *p2,int *sub);
int main()
{
int sub[20];
char s1[20],s2[20];
cout<<"enter string s1:";
cin>>s1;
cout<<"enter string s2:";
cin>>s2;
strSub(s1,s2,sub);
return 0;
}
int strSub(char *p1,char *p2,int *sub)
{
int i,n;
for(i=0;p1[i]!='\0'||p2[i]!='\0';i++)
sub[i]=p1[i]-p2[i];
n=i;
cout<<"结果"<<endl;
for(i=0;i<n;i++)
cout<<sub[i]<<' ';
return 0;
}

题目2:

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见下图,写一个函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
题目二
编写程序:

#include <iostream>

using namespace std;

int main()

{void move(int *array,int n,int m);

int number[20],n,m,i;

cout<<"how many numbers?";               // 询问共有多少个数

cin>>n;

cout<<"input "<<n<<" numbers:"<<endl;    // 要求输入n个数

for (i=0;i<n;i++)

cin>>number[i];

cout<<"how many places do you want move?";  // 询问后移多少个位置

cin>>m;

move(number,n,m);                       //调用move 函数

cout<<"Now,they are:"<<endl;

for (i=0;i<n;i++)

cout<<number[i]<<" ";

cout<<endl;

return 0;

}

void move(int *array,int n,int m)             //使循环后移一次的函数

{int *p,array_end;

array_end=*(array+n-1);

for (p=array+n-1;p>array;p--)

*p=*(p-1);

*array=array_end;

m--;

if (m>0) move(array,n,m); //递归调用,当循环次数m减至为0时,停止调用

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值