1、使用指针判断回文数
一个正数如果顺着和反过来都是一样的(比如12321
,反过来也是12321
),那么就称为回文数。回文数不能以0
开头,回文数从1
开始。使用指针实现回文数判断,代码如下,
#include <stdio.h> #include <string.h> void func(int len,char *p) { int i,j; for(i = 0,j = len - 1;i <= len;i++,j--) { if(*(p+i) != *(p+j)) { printf("不是回文数"); break; } } if(i >= j) { printf("是回文数"); } } int main() { char a[20]; gets(a); char *p; p = &a; int length; length = strlen(a); func(length,a); return 0; }
2、找出字符串中的数字
输出一段包含数字的字符串,通过使用指针来找出字符串的中数字,代码如下,
#include <stdio.h> #include <stdlib.h> #include<string.h> #define MAX_LEN 80 void extractNum(char *str); int main() { char str[MAX_LEN]; fgets(str,80,stdin); extractNum(str); puts(str); return 0; } void extractNum(char *str) { int j=0; char a[80]; for(int i=0;i<80;i++){ if( *(str+i)>='0' && *(str+i)<='9' ){ if(*(str+i-1)=='-'){ a[j]='-'; j++; } break; } } for(int i=0;i<80;i++){ if( *(str+i)>='0' && *(str+i)<='9' ){ a[j]=*(str+i); j++; } } for(int i=0;i<j;i++){ *(str+i)=a[i]; } *(str+j)='\0'; }
3、指针实现字符串数组排序
有一个字符串数组,通过使用指针来实现对字符串数组进行排序,代码如下,
#include<stdio.h> #include<string.h> void change(int n, char* strings[]) { char* temp; int i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (strcmp(strings[i], strings[j])>0) { temp = strings[i]; strings[i] = strings[j]; strings[j] = temp; } } } } int main() { int n; int i; char** p; char* strings[] = { "C", "C++", "JAVA", "C#", "Python" }; n = sizeof(strings) / sizeof(strings[0]); printf("排序前的数组为:"); for (i = 0; i < n; i++) { printf("%s ", strings[i]); } printf("\n"); change(n, strings); printf("排序后的数组为:"); for (i = 0; i < n; i++) { printf("%s ", strings[i]); } printf("\n"); return 0; }