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 strcmp(char *p1, char *p2);
int main()
{ char s1[20], s2[20];
cout<<s1;
cout<<s2;
cout<<system("pause");
return 0;
}
int strcmp(char *p1, char *p2)
{
int t = 0;
for (; *p1!='\0'||*p2!='\0'; p1++, p2++)
if (*p1!=*p2)
{
t=*p1-*p2; break;
}
if (*p1=='\0'&&*p2=='\0') t=0;
return t;
}
题目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.腾龙梦屋文章内容无特殊注明皆为源儿原创,转载请注明来源,谢谢!
2.若有相关文章侵犯您的权益,请联系源儿删除,谢谢!
3.相关软件、资料仅供学习参考使用,在24h内务必删除!
腾龙梦屋 » C++实验七:指针的使用
2.若有相关文章侵犯您的权益,请联系源儿删除,谢谢!
3.相关软件、资料仅供学习参考使用,在24h内务必删除!
腾龙梦屋 » C++实验七:指针的使用