凯鲁嘎吉
用书写铭记日常,最迷人的不在远方
回到顶部(go to top)

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=0;i<len/2;i++){
 8         ch=a[i];
 9         a[i]=a[len-1-i];
10         a[len-1-i]=ch;
11     }
12 }
13 
14 void main(){
15     char s[10];
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+1);
 6         printf("%c",*a);
 7     }
 8 }
 9 
10 void main(){
11     char s[10];
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-1)/2;
 9     for(i=0;i<=m;i++){
10         j=n-1-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-1)/2;
22     i=x;   //i->x[0]
23     j=x+n-1;  //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=0;i<N;i++){
37         scanf("%d",a+i);
38     }
39     reverse(a,N);
40     printf("The array has been inverted:\n");
41     for(i=0;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-1)/2;
 9     for(i=0;i<=m;i++){
10         j=n-1-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-1)/2;
22     i=x;   //i->x[0]
23     j=x+n-1;  //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=0;i<N;i++){
37         scanf("%d",a+i);
38     }
39     reverse(a,N);
40     printf("The array has been inverted:\n");
41     for(i=0;i<N;i++){
42         printf("%2d",a[i]);
43     }
44     printf("\n");
45 }
复制代码

结果为:

 

posted on   凯鲁嘎吉  阅读(1780)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单

点击右上角即可分享
微信分享提示