精华内容
下载资源
问答
  • 用C语言指针实现字符串逆序及回文串的判定。戆黍熬j纛窦黪鬃用C语言指针实现字符串逆序及回文串的判定口裴晓英(新疆兵团高等专科学校新疆 ...关键词:C语言指针字符串逆序算法回文中图分类号:TP39文献标识码...

    用C语言指针实现字符串逆序及回文串的判定

    。戆黍熬j纛窦黪鬃

    用C语言指针实现字符串逆序及回文串的判定

    口裴晓英

    (新疆兵团高等专科学校新疆 鸟鲁木齐831300)

    摘要:字符串逆序输出是C语言经典算法之一,过去利用数组下标处理此类问题,较为繁琐,本文给出了利用指针实现任意给定字符串的逆序输出方法,以及在此基础上进行回文字符串判断的便捷方法。

    关键词:C语言指针字符串逆序算法回文中图分类号:TP39

    文献标识码:A

    文章编号:1007-3973(20081

    12-071.Ol

    ‘C语言中,实现任意给定字符串的逆序输出,是一道经典常用算法,掌握此类算法,对于提高运用字符串能力及编程综合能力都有很大的帮助。对于C语言字符串的处理,人们惯常使用的是数组下标的方法,不仅效率低,而且估算下标容易出错,准确率低,最为致命的还是下标一旦越界,会出现乱码甚至程序崩溃。笔者经过试验、总结,提炼出用指针实现字符串逆序输出的简便方法,并且在此基础上,应用此类方法,我们可以方便快捷的解决同类的字符串处理问题,例如回文的判断,本文也给出了相应实现办法.1问题

    (1)对于任意给定的字符串,进行倒置,打印输出该串为原串的逆序。例如输入为“tomo玎ow”。则其存储和输出即为“worromot”。

    (2)判断任意给定字符串是否回文,输出相应提示信息。

    所谓“回文串”,即一个字符串正序读和逆序读时都一样,如“level”或者“noon”等等就是回文串。2算法思路

    问题1)将一个给定字符串逆序存储

    定义一个足够大的字符数组,用于存储用户输入的任意字符串。再定义两个字符指针,分别指向字符串的头部和尾部,交换两指针指向的字符,交换后两指针分别后移和前移,循环交换对应位置的字符,直到两指针在中点相遇,则整个串实现了与原串的逆序存储。

    问题2)回文的判定:类似问题1)的处理方法,我们首先定义一个足够大的字符数组,用于存储用户输入的任意字符串。再定义两个字符指针,分别指向字符串的头部和尾部,两指针分别后移和前移,依次判断对应位置的字符是否相同,一旦不相同即退出循环,说明不是回文串,若一直相同,直到两指针在中点相遇,则整个串是回文串,输出相应信息。

    问题I)和问题2)的核心算法,都是对对应位置的字符进行比较判断,故我们都采用指针的方法可以很方便的解决这两类问题。3算法实现

    对比:用数组下标的方式判定回文的算法实现(结合指针的运用):

    #include“stdio.h”#include“string.h”int

    char

    sn-[50J,’p;

    i;

    im

    printf(“请输入字符串妇”);scanq”%s”,s∞;P-s也

    t/把指针移动到字符串的末尾

    矿矿strlen(str)-I;

    for(i=O;i<(int)strlen(str);i++,p..){

    if(+p!fstr[i]){

    printff”这个字符串不是回文、Il”);

    return

    l;

    }'

    printff”这个字符串是回文、ll”);

    return

    O:

    对比:用堆栈的方式判定回文的算法实现:

    #include<stdio.h>#defineS1'ACK

    INITSIZE

    loo

    #dcfineSTACKINCltEⅣ【ENTlOtypcdefstruct

    char+base;char‘top;intstacksizc;

    }SqStack;

    intInitStack(SqStack‘S)

    S->base=(char+)malIoc(STACK—INIT—SIZE+sizeof(char)):

    if(!S->base)

    rg:t1.1nl

    0:

    S->top=S->basc;

    S->s。tacksizc;STACK_INIT-sIZE;

    rgturn

    l:

    )

    int净0:

    mmnO

    intj=O;

    char

    {str[20],str2120];

    斟m论丘 2008年第12期I下)

    展开全文
  • C语言利用指针实现字符串逆序输出

    千次阅读 多人点赞 2020-11-10 16:31:38
    第一个for循环是让指针p指向到字符串末尾的‘\0’上,第二个for循环先p指针向前挪一位,然后输出。 代码 #include<stdio.h> int main() { char *p,*q="hellow world"; for(p=q;*p!='\0';p++){} for(p--;p...

    思路

    第一个for循环是让指针p指向到字符串末尾的‘\0’上,第二个for循环先将p指针向前挪一位,然后输出。

    代码

    #include<stdio.h>
    int main()
    {
    	char *p,*q="hellow world";
    	for(p=q;*p!='\0';p++){}
    	for(p--;p>=q;p--) putchar(*p);
    	printf("\n");
    	return 0;
    } 
    
    展开全文
  • 指针将字符串逆序输出 // yangbocsu 2021.07.13 #include<stdio.h> #ifndef N #define N 20 #endif int main() { char s1[N],s2[N],*p1 = s1,*p2 = s2,s3[2]={'a','b'}; int length = 0; scanf("%s",s1)...

    用指针将字符串逆序输出

    // yangbocsu 2021.07.13
    #include<stdio.h>
    #ifndef N
    #define N 20
    #endif	
    int main()
    {
    	char s1[N],s2[N],*p1 = s1,*p2 = s2,s3[2]={'a','b'};
    	int length = 0;
    	scanf("%s",s1);
    	printf("s1 = %s\n",s1);
    	while(*p1 != '\0')	//统计字符串的长度 
    	{
    		length ++;
    		p1 ++; 
    	}
    	
    	p1 = s1 + length - 1;	//p1 = &s1[length - 1];  将指针移到字符串尾 
    	for(;length>=0;p1--,length--,p2++)
    	{
    		*p2 = *p1;
    	} 
    	
    	*p2 = '\0'; 
    	
    	printf("s2 = %s\n",s2);
    
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • 使用字符指针将字符串逆序输出

    万次阅读 2014-08-28 20:31:14
    #include #include void ReverseStr(char *s) { int i,j; char c; j=strlen(s); for(i=0;i;i++) { c=s[i]; s[i]=s[j-1-i]; s[j-1-i]=c; } } int main(void) { char s[100]; ... ReverseS
    方法一:
    #include<stdio.h>#include<string.h>void ReverseStr(char *s){ int i,j; char c; j=strlen(s); for(i=0;i<j/2;i++) { c=s[i]; s[i]=s[j-1-i]; s[j-1-i]=c; }}int main(void){ char s[100]; gets(s); ReverseStr(s); printf("%s\n",s); return 0;}
    方法二:
    #include <stdio.h>
    #include <string.h>
    int main(int argc, char* argv[])
    {
     char* s = "test string!";
     char* p = s + strlen(s) - 1;
     while (p >= s)
     {
      printf("%c", *p--);
     }
     return 0;
    }
    http://zhidao.baidu.com/link?url=I21z3Z6DbRzYyZPK1D1jVW9QrMWkv5hKE93PW-tr5XbxqdJaI1Fur78eYvF2GNz_KhZY1VygpczGH5S76TjsKq
    展开全文
  • C语言指针实现字符串逆序

    千次阅读 2020-10-10 09:37:28
    //写一个函数,可以逆序一个字符串的内容。 void reverse(char* arr) { int len = strlen(arr); char* left = arr; char* right = arr + len - 1; while(left < right) { char tmp = *left; *left = *...
  • 首先这个题目我有两种思路:第一种,简单又直接,使用字符串分割保存在字符数组中,再以数组下标访问方式进行逆序。 第二种,就是文章题目所示方法。但是为什么最后选择了这个方法呢。因为这种方法来解决问题,在
  • 指针实现字符串逆序

    千次阅读 2010-12-31 13:25:00
    #include "iostream.h" #include "string.h" //////字符串逆序指针实现/////// //////南飞雁2010.12.31///////// char *Reverse(char *s) {  char temp;  char *p;...
  • 指针字符串逆序

    千次阅读 2013-05-25 12:29:16
    #include #include int main() { char *p; int i=0; int count=0; char s[10]; printf("Input:"); p=s; gets(s); while(*p!='\0') { p++; count++; } while((count-1)>=0) ... printf("%c
  • 使用指针实现字符串逆序操作

    千次阅读 2018-11-06 18:22:09
    #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; ...b) //交换两个字符的位置 { char temp; temp = a; a = b; b = temp; } void wor...
  • 使用指针字符串逆序

    2020-04-01 22:28:28
     编写程序,输入一个字符串,使用指针逐个逆序输出字符串中所有字符。 输入格式  输入一个字符串 输出格式  输出一个与输入相应的逆序字符串 样例输入 一个满足题目要求的输入范例。 abcd 样例输出 与上面的样例...
  • 很早就准备写一个字符串系列的面试题,本来已经写好了,大概有十几道题,但是写完才发现,文章...既然是第一篇,就来个最最简单的字符串逆序吧。字符串逆序可以说是最经常考的题目。这是一道入门级的题目,相信80%的...
  • 6-1 函数实现字符串逆序 (15分) 本题要求实现一个字符串逆序的简单函数。 函数接口定义: void f( char *p ); 函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。 裁判...
  • 思路:两指针分别指向首字母,尾字母,再交换 #include <stdio.h> #include <stdlib.h> #define N 10 void f(char *p); int main() { char a[N],*p ; int len ; printf("input string: "); gets...
  • 本题要求实现一个字符串逆序的简单函数。 函数接口定义: void f( char *p ); 函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。 裁判测试程序样例: #include <...
  • C语言指针字符串逆序

    2020-05-12 18:03:27
    #include <stdio.h> #include <windows.h> void reverse(char *a) ...//利用strlen函数数组a的元素个数算出,减一是减的'\n' while (start < end) { char temp = *start; *start = *end;
  • 将字符串逆序

    2016-12-12 22:43:41
     字符串逆序首先考虑要用到指针指向字符串的开头,然后还需要一个指针来遍历字符,这一指针走到'\0',然后再往回走一个字符到达这个字符串的最后一个字符,指向开头的指针往后走,指向末尾的指针往前走,分别交换...
  • 使用指针方法实现字符串逆序存放后再输出 #include<stdio.h> #include<string.h> void invstr(char *s) { char b; int len; len=strlen(s); /*获取该字符串的长度*/ for(int i=0;i<len/2;i++){ ...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#includevoidfun(char*ch1,char*ch2){inti,n(0),k;intlength;booljudge(true);for(length=0;*(ch1+length)!='\0';length++);//计算ch1长度for(i=length-1;...
  • #include<iostream> #include<cstdio> #include<cstring> using namespace std; void invstr(char *a) { int b= strlen(a); for(int i = 0;i<=b/2;i++){ char temp;... .

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,826
精华内容 6,730
关键字:

利用指针将字符串逆序