#import <Foundation/Foundation.h>
//交换实参数值:
void jiaohuan(float *a,float *b){
float temp=*a;
*a=*b;
*b=temp;
}
//2. (****)面试题:有一字符串中包含数字与字符,请编程去除数字
char* deleteNumber(char *str){//返回是一个指针变量名str,则定义char* 字符型指针的函数
char *w,*r;
w=r=str;
//指针变量赋值,也就是指针变量w,r,和str指针变量所指向的字符串数组是一样的
//char string[]="sdhgkjahlashio23klk34123lk431";
//char *str=string;
//因此str="sdhgkjahlashio23klk34123lk431",再赋给p和q,
//下面则通过指针来改变该字符串
while (*r!='\0') {
if (!(*r>='0'&&*r<='9'))
{
*w=*r;//修改str字符串,不是数字则赋给w指针变量所指向的字符串(跟str的指针变量所指向的字符串数组是一样的)
w++;//赋值后自增一,w遇到不是数字时才递增,遇到数字则不会移动位置
}
r++;//读指针如果遇到数字,则直接忽略它继续读r下一位,并且无论是不是字母,都一个一个的遍历,移位
}
*w='\0';//执行完以下后,给写指针的值加多一个'\0'结束符号
return str;//再次输出修改完后的字符串str指针变量指向的字符串数组,因为在上面的过程修改的就是该字符串数组
}
int main(int argc, const char * argv[]) {
//1. (**)编写一个函数,交换2个浮点数
// float a=8.4;
// float b=5.67;
// printf("a=%.3f,b=%.3f\n",a,b);
// jiaohuan(&a, &b);
// printf("a=%.3f,b=%.3f\n",a,b);
//2. (****)面试题:有一字符串中包含数字与字符,请编程去除数字
char string[]="sdhgkjahlashio23klk34123lk431";
char *str=string;
//char *p="sdhgkjahlashio23klk34123lk431";错误的做法,因为直接把字符串赋给指针变量p则不会改变该字符串,如果硬是这样子,则会导致下面删减字符串的部分数据时:*(q+count)=*(p+count)赋值出错,程序会崩溃,不能实现该功能
//方法一;不用函数调用
// int count =0;
// char *q;
// while (*(p+count)!='\0') {
// if (!(*(p+count)>='0'&&*(p+count)<='9'))
// {
// *(q+count)=*(p+count);
// printf("%c",*(q+count));
// q++;
// }
// p++;
//
// }
//方法二:使用函数调用
char *b=deleteNumber(str);
printf("%s\n",b);
return 0;
}