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;
}