我们刚刚学完数组,指针和函数···麻烦用我们学过的知识来编一下
1.编写一个函数delchar(char*s1,char s2),从字符串s1中删去与字符相同的字符。用main()测试该函数
2.编写一个函数function(int n,int k).该函数有参数n和k。函数的返回值为数n从右边开始数的第k个数字的值。例如n=12345和k=2时,函数返回3.若k>n的位数或k<1时,函数返回0.
3.编写函数int find(char a[ ],char ch),从一个字符串中找出某个字符第一次出现的位置。例如字符串"computer language"中字母"u"第一次出现的位置为5.若没有该字符,返回0,否则函数返回出现的位置。
谢谢了!!!
第一题:
#include <iostream>
using namespace std;
void delchar(char*s1,char s2)
{
char *p;
while(*s1)
{
if(*s1==s2) //当指针指向的字符等于要删除的字符时;
{
p=s1;
while(*(p+1)) //将该字符后面的字符依次往前移一位.就等于覆盖掉该字符.
{
*p=*(p+1);
p++;
}
*p='\0'; //最后一个字符前移后,将其原本的位置置为字符串结束符.
}
s1++;
}
}
int main()
{//测试.从字符串"abcde"中删除字符c.
char str[10]="abcde";
char s='c';
delchar(str,s);
cout<<str<<endl; //输出结果.
return 0;
}
第二题:
感觉k=2时返回3有问题.前面k<1的时候就返回0了. 所以k得从1开始.
而12345第一位是1,第二位是2.第三位是3.... 所以返回的应该是2!
#include <iostream>
using namespace std;
int function(int n,int k)
{
int digit=0,i=0,j=n;
char str[10];
while(j)
{
str[i++]=j%10+'0';
j/=10;
digit++;
}
if(k>digit||k<1) return 0;
i=str[digit-k]-'0';
return i;
}
int main()
{
int i;
i=function(12345,2);
cout<<i<<endl;
return 0;
}
第三题:
#include <iostream>
using namespace std;
int find(char a[],char ch)
{
char *p=a;
while(*p)
{
if(*p==ch)
{
return p-a+1; //+1是因为字符串下标从0开始.
}
p++;
}
return 0;
}
int main()
{
char str[]="computer language";
int i;
i=find(str,'u');
cout<<i<<endl;
}