1.以单词为单位,进行逆置(建议指针)
“hello 22111 student” ===> “student 22111 hello”
2,使用指针实现字符串逆置
3,使用指针计算计算每一位数字的和
“fa4621” ===>4+6+2+1=13
4,分析以下指针
1.以单词为单位,进行逆置(建议指针)
“hello 22111 student” ===> “student 22111 hello”
2,使用指针实现字符串逆置
#include <stdio.h>
#include <string.h>
void rev(char arr[],char *p,char *q)
{
char temp;
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
int main(int argc, const char *argv[])
{
char arr[30]="sad asdwe ert";
char *p=arr;
char *q=arr+strlen(arr)-1;
rev(arr,p,q);
printf("%s\n",arr);
char *a=arr;
char *b=a;
while(*a!='\0')
{
while(*b!=' '&& *b!='\0')
{
b++;
}
rev(arr,a,b-1);
while(*b==' ')
{
b++;
}
a=b;
}
printf("%s\n",arr);
return 0;
}
结果:
3,使用指针计算计算每一位数字的和
“fa4621” ===>4+6+2+1=13
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char arr[20]="jcnj789456";
char *p=arr;
int n=strlen(arr);
int i;
int sum=0;
for(i=0;i<n;i++)
{
if(*p!='\0')
{
p++;
if(*p-48<10&&*p-48>0)
{
sum=sum+*p-'0';
}
}
}
printf("%d\n",sum);
return 0;
}
结果:
4,分析以下指针
Int a=100; int *p=&a;
*p++=101
*++p=100
*(p+2)=向后8字节
*p-2=98
&p+1=向前8字节
--*p=99
&a+1=错误
&a--=99