当前位置:首页 » 编程语言 » c语言字符串反序

c语言字符串反序

发布时间: 2022-05-11 20:05:54

c语言字符串反序输出

数组定义完,没有初始化;系统会分配一段物理内存给数组,如果不初始化,就会打印出乱码,该段内存地址有可能之前被使用过。

chari[100]={0},o[100]={0};

结果对比:

  1. 未初始化数组

⑵ c语言把字符串反序

这是利用递归的算法把数组的里的数据逆序输出而已,并没有真正的改变数组里面数据的顺序。程序的意思是这样的,先从第一个值 i 解释,该子函数第一个语句是先输出 a[i] , 然后再调用子函数本身输出 a[i-1] ,一次类推,知道 i<1时不再调用子函数,即程序结束。程序的效果就是逆序输出
a[i],a[i-1],a[i-2]````````a[2],a[1];但实际数组数据的值的顺序并没有改变。

⑶ c语言如何将字符串反序排列

"for(i=0,j=strlen(str);i<(strlen(str)/2;i++,j--)这个地方解释下 ~~ i<(strlen(str)/2;i++,j--)的意思"
i<(strlen(str)/2 //限定i的范围是字符串长度的一半,作为循环的退出条件.
i++,j--) // i++ 是循环的一部分,这个你应该能理解,j--为的是跟++i 对称起来,这是为了达到 字符串反序排列 的效果,j是从最后一位开始减的,也就是字符串的长度

str[i]=str[j-1];这里为什么j-1???
假如你这个字符串的长度是 6, 那么j一开始是6,
数组长度是6,那么最后一个数组元素是 a[5],因为是从a[0]开始的.
a[0]是第一个
a[5]是第6个,

⑷ 用C语言写 字符串逆序输出

逆序输出有很多种,具体的实现方法取决于你题目的要求
1. 如果只是要求逆序输出,那么可以采用类似的方法:
void reverse(char *s)
{
if(*s=='\0')
return;
reverse(s+1);
printf("%c",*s);
}
这种方法在s很长的情况下会一直递归到底,不是很好。
2. 如果需要将字符串整个逆序在函数外面输出,那么可能希望采用返回字符串指针的方式;实现如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //p是一个静态变量,指向当前递归层处理的字符串尾,而s指向字符串头
if(s < p)
{
char c = *p; //交换头尾字符
*p = *s;
*s = c;
p--; //尾向前挪一个
reverse(s+1); //相当于头向后挪一个
}
return s;
}
3.1 当然,有的时候,并不需要reverse函数本身递归,而是可以借助一些辅助的递归函数,比如说:
void reversehelp(char * head, char * end)
{
if (head < end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, --end);
}
}
然后在调用时像这样调用:
char * reverse(char * s)
{
char * end = s + strlen(s) - 1;
reversehelp(s, end);
return s;
}
3.2 类似的辅助函数还可以采用一个字符串指针和一个长度参数的方式,如下例:
void reversehelp( char* s, int n )
{
if ( n > 1 )
{
char c = s[n-1];
s[n-1] = s[0];
s[0] = c;
reversehelp( s+1, n-2 );
}
}
然后在调用时如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}

⑸ 如何用C语言实现字符串逆序排列

楼主你好
具体代码如下:
#include<stdio.h>
#include<string.h>
int
main()
{
char
*p;
char
c[20];
printf("Enter
a
string:");
scanf("%s",c);
p=c+strlen(c)-1;
while(p>=c)
printf("%c",*(p--));
printf("\n");
}
希望能帮助你哈

⑹ 如何用C语言将字符串逆序输出

C语言程序如下:

#include<stdio.h>

#include<string.h>

main()

{

int i,j,t,n;

char a[10];

printf("请输入字符串:");

gets(a);

n=strlen(a);

for(i=0;i<=n/2;i++)

{

t=a[i];

a[i]=a[n-1-i];

a[n-1-i]=t;

}

for(j=0;j<n;j++)

printf("%c",a[j]);

printf(" ");

}

(6)c语言字符串反序扩展阅读:

字符串倒序输出的五种方法

1、使用数组循环

2、StringBuffer的reverse方法

3、StringBuffer的循环

4、栈的后进先出

5、迭代完成

⑺ C语言:输入一个字符串,然后逆序输出

可以将整数当做字符串(字符串长度不超过10)接收,然后反向输出字符数组元素即可。

字符串实际长度可以用strlen函数来计算。

方法程序如下:

#include<stdio.h>

#include<string.h>

main()

{char a[10];int i,j;

scanf("%s",a);

j=strlen(a);

for(i=j-1;i>=0;i--)

printf("%c",a[i]);

printf(" ");}

(7)c语言字符串反序扩展阅读:

C语言高效编程技巧:

一:以空间换时间

计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题

二:数学方法解决问题

数学是计算机之母,没有数学的依据和基础,就没有计算机发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。

三:使用位操作

实现高效的C语言编写的第三招----使用位操作,减少除法和取模的运算。

在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效提高程序运行的效率。

⑻ c语言怎么把字符串倒序

反序方法见 下面 函数 void op(char *s). 主函数是调用的例子。
#include <stdio.h>
void op(char *s){
int i,k;
char c;
k = strlen(s);
for (i=0;i<k/2;i++){c=s[i];s[i]=s[k-i-1];s[k-i-1]=c;};
};

int main()
{
char s[200];
printf("input one line string:\n");
gets(s);
op(s);
printf("%s\n",s);
return 0;
}
输入:abc123
输出:321cba

⑼ C语言反序输出字符串

你是说*rev与rev[]吧,
在C语言里,当定义char
*rev的时候,rev是放在了常量区,值不能修改,因此会出错;
而定义char
rev[]的时候,rev数组是放在了栈区,值可以修改,因此用数组不会报错。

⑽ C语言 字符串逆序

ch=getchar();//从键盘键入一个字符
for(i=0; ch!='\n'; i++) {//如果不是回车键

a[i]=ch;//输入第i个=该字符
n++;//数量累加
ch=getchar();//继续得到一个键入的字符直到该字符是回车键终止循环
}
打字不容易望采纳谢谢。。。

热点内容
spl编程 发布:2025-05-11 00:25:14 浏览:63
linux搭建android开发环境 发布:2025-05-11 00:18:45 浏览:947
web本地存储 发布:2025-05-11 00:13:33 浏览:360
为什么暗格里的密码搜不到了 发布:2025-05-11 00:13:31 浏览:942
oracle存储过程使用变量 发布:2025-05-11 00:10:07 浏览:741
用安卓下载苹果的软件叫什么 发布:2025-05-11 00:08:22 浏览:115
断牙脚本 发布:2025-05-11 00:04:21 浏览:68
sim卡的密码怎么设置密码 发布:2025-05-10 23:41:09 浏览:716
自定义缓存注解 发布:2025-05-10 23:40:06 浏览:118
sqltext类型长度 发布:2025-05-10 23:30:21 浏览:979