C语言 实现逆置功能

//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

1. 字符串的逆置

方法1:利用数组

  1. #include<stdio.h>
  2. #include<string.h>
  3. void fun(char a[]){
  4. int i,len;
  5. char ch;
  6. len=strlen(a);
  7. for(i=;i<len/;i++){
  8. ch=a[i];
  9. a[i]=a[len--i];
  10. a[len--i]=ch;
  11. }
  12. }
  13.  
  14. void main(){
  15. char s[];
  16. printf("Pealse input a string:\n");
  17. gets(s);
  18. printf("The string has been inverted:\n");
  19. fun(s);
  20. puts(s);
  21. }

结果为:

方法2:利用指针

  1. #include<stdio.h>
  2. #include<string.h>
  3. void fun(char *a){
  4. if(*a){
  5. fun(a+);
  6. printf("%c",*a);
  7. }
  8. }
  9.  
  10. void main(){
  11. char s[];
  12. printf("Pealse input a string:\n");
  13. gets(s);
  14. printf("The string has been inverted:\n");
  15. fun(s);
  16. printf("\n");
  17. }

结果为:

2.输入10个数,逆置输出

方法1:利用数组

  1. #include<stdio.h>
  2. #include<string.h>
  3. #define N 10
  4.  
  5. #if(1)
  6. void reverse(int x[],int n){
  7. int i,j,temp,m;
  8. m=(n-)/;
  9. for(i=;i<=m;i++){
  10. j=n--i;
  11. temp=x[i];
  12. x[i]=x[j];
  13. x[j]=temp;
  14. }
  15. }
  16. #endif
  17.  
  18. #if(0)
  19. void reverse(int *x,int n){
  20. int *i,*j,*p,temp,m;
  21. m=(n-)/;
  22. i=x; //i->x[0]
  23. j=x+n-; //j->x[n-1]
  24. p=x+m; //p->x[m]
  25. for(;i<=p;i++,j--){
  26. temp=*i;
  27. *i=*j;
  28. *j=temp;
  29. }
  30. }
  31. #endif
  32.  
  33. void main(){
  34. int i,a[N];
  35. printf("Pealse input %d numbers:\n",N);
  36. for(i=;i<N;i++){
  37. scanf("%d",a+i);
  38. }
  39. reverse(a,N);
  40. printf("The array has been inverted:\n");
  41. for(i=;i<N;i++){
  42. printf("%2d",a[i]);
  43. }
  44. printf("\n");
  45. }

结果为:

方法2:利用指针

  1. #include<stdio.h>
  2. #include<string.h>
  3. #define N 10
  4.  
  5. #if(0)
  6. void reverse(int x[],int n){
  7. int i,j,temp,m;
  8. m=(n-)/;
  9. for(i=;i<=m;i++){
  10. j=n--i;
  11. temp=x[i];
  12. x[i]=x[j];
  13. x[j]=temp;
  14. }
  15. }
  16. #endif
  17.  
  18. #if(1)
  19. void reverse(int *x,int n){
  20. int *i,*j,*p,temp,m;
  21. m=(n-)/;
  22. i=x; //i->x[0]
  23. j=x+n-; //j->x[n-1]
  24. p=x+m; //p->x[m]
  25. for(;i<=p;i++,j--){
  26. temp=*i;
  27. *i=*j;
  28. *j=temp;
  29. }
  30. }
  31. #endif
  32.  
  33. void main(){
  34. int i,a[N];
  35. printf("Pealse input %d numbers:\n",N);
  36. for(i=;i<N;i++){
  37. scanf("%d",a+i);
  38. }
  39. reverse(a,N);
  40. printf("The array has been inverted:\n");
  41. for(i=;i<N;i++){
  42. printf("%2d",a[i]);
  43. }
  44. printf("\n");
  45. }

结果为:

C语言 实现逆置功能的更多相关文章

  1. 2010: C语言实验——逆置正整数

    2010: C语言实验——逆置正整数 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 949  Solved: 691[Submit][Status][We ...

  2. 【stut 逆置正整数】

    C语言实验——逆置正整数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 输入一个三位正整数,将它反向输出. 输入 3位正整数. ...

  3. C语言 链表的创建--打印--逆置--新增--删除--排序--释放

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string. ...

  4. C语言实现单链表的逆置

          单链表的逆置是一个非常经典的问题,这里利用两个思想进行解决.       首先,我们需要看下原理图,其实两个思想都是一样的,都是使后一个的节点的 next 指针指向前一个节点,依次递推,直 ...

  5. 【C语言编程练习】7.1 线型表就地逆置

    写在前面的话:直接从第5章跳到了第7章数据结构的趣题,原因是前面的数学趣题做久了,会觉得稍许疲倦,所以想“变个口味”,以后数学趣题和数据结构混合着练习. 1. 题目要求 编写一个函数,实现顺序表的就地 ...

  6. C语言strrev()函数:字符串逆置(倒序、逆序)

    头文件:#include<string.h> strrev()函数将字符串逆置,其原型为:    char *strrev(char *str); [参数说明]str为要逆置的字符串. s ...

  7. C语言实现整数数组的逆置算法

    读入100个整数到一个数组中,写出实现该数组进行逆置的算法. 方法一: 假设100个整数读入到数组a中,算法f1的思想是分别从数组两端依次将对应数进行交换,即a[i]与a[100 - i - 1]进行 ...

  8. 已知单链表的数据元素为整型数且递增有序,L为单链表的哨兵指针。编写算法将表中值大于X小于Y的所有结点的顺序逆置。(C语言)

    对此题目的完整示例可直接运行代码如下: #include <stdio.h> #include <stdlib.h> typedef struct LNode{ int dat ...

  9. 逆置单链表(基于c语言)

    直接插入全部代码:(reverseLinklist函数是逆置操作) #include <stdio.h> #include <stdlib.h> #include <as ...

随机推荐

  1. 用python实现红包机制

    方法一,逻辑是后一个红包的范围是[0.01,剩下的钱*2/剩下的红包数,如果最后钱不足分配给每个人,就把后几个每人分配0.01元. 主要思想就是,每个人至少能领取到0.01元. import rand ...

  2. Python爬虫的N种姿势

    问题的由来   前几天,在微信公众号(Python爬虫及算法)上有个人问了笔者一个问题,如何利用爬虫来实现如下的需求,需要爬取的网页如下(网址为:https://www.wikidata.org/w/ ...

  3. SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法

    按照ASCII码, SELECT char(64) 例如64 对应 @,则 ), 'kk'); 则结果为 abckkqq.com 依此类推, 去掉其他特殊符号,参考ASCII码对照表, 去掉tab符号 ...

  4. Docker 系列四(自定义仓库).

    一.Docker hub 交互 Docker hub 是 Docker 官方维护的一个公共仓库,大部分需求都可以通过在 Docker hub 中直接下载镜像来完成.接下来,来看一下怎么与 Docker ...

  5. Java并发编程-CountDownLatch

    基于AQS的前世今生,来学习并发工具类CountDownLatch.本文将从CountDownLatch的应用场景.源码原理解析来学习这个并发工具类. 1. 应用场景 CountDownLatch是并 ...

  6. unable to locate nuget.exe

    今日使用vs 从github fork 一份代码到本地之后,提示项目 unable to locate nuget.exe. 原因:代码托管时未提交 nuget.exe 或其他原因丢失 解决方法:在解 ...

  7. JAVA 多线程(3)

    再讲线程安全: 一.脏读 脏读:在于读字,意在在读取实例变量时,实例变量有可能被另外一个线程更改了,导致获取到的数据出现异常. 在非线程安全的情况下,如果线程A与线程B 共同使用对象实例C中的方法me ...

  8. js 判断数组中的值是否都相等

    function isAllEqual(array) { if (array.length > 0) { return !array.some(function(value, index) { ...

  9. CSS3动画属性:转换(transition)

    W3C标准中对css3的transition这是样描述的:“css的transition允许css的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发, ...

  10. 洛谷P4063 [JXOI2017]数列(dp)

    题意 题目链接 Sol 这题想还是不难想的,就是写起来很麻烦,然后去看了一下loj的最短代码表示只能Orz 首先不难发现一条性质:能够选择的区间一定是不断收缩的,而且新的可选区间一定是旧区间的某个位置 ...