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

c语言字符倒序输出字符串

发布时间: 2022-04-19 05:03:12

c语言递归法把字符倒序输出

#include <stdio.h>

#include <string.h>

#define N 1//这里的1可以改,改成10同时可以玩10个串串


void printfmm(char *s,int len){

if(len==0){printf("%c ",s[len-1]);return;}

else {printf("%c",s[len-1]);printfmm(s,len-1);}

}


void main() {

char str[N][30],t;

int i,s[52]={0},j;

printf("上串串:");

for(i=0;i<N;i++)

gets(str[i]);

for(i=0;i<N;i++)

printfmm(str[i],strlen(str[i]));


}

② 用c语言倒序输出字符串

思路:
用一个足够长的字符数组来接受用户的输入,然后从最后数组最后一个位置开始输出字符。
代码如下:
#include<stdio.h>
#include<string.h>
#defineBUFFER1024/*定义常量BUFFER,值为1024,作数组长度*/
intmain(void)
{
inti;
chara[buffer];
gets(a);/*将用户的输入存进字符数组*/
for(i=strlen(a)-1;i>=0;i--)/*从数组的最后位置开始输出字符*/
printf("%c",a[i]);/*以字符的格式依次显示每个字符*/
printf(" ");
return0;
}
程序运行截图如下:

③ c语言 倒序输出字符串

您好,一个汉字占用两个字节(扩展ASCII码),而getchar()每次只能读入一个字节,因此读入汉字时,则需要用gets()函数。
倒叙输出汉字串时,有两种方法,一是从字符串末端开始,每次输出两个字节,二是直接汉字将字符串在数组中倒置,然后再用puts()函数直接输出。
以上两种方法都有局限性,一旦含有非汉字字符,极有有可能造成乱码。
#include <stdio.h>
#include <string.h>
unsigned char *InverseStr(unsigned char t[],unsigned char s[]) {
int i,j,len = strlen((char *)s);
for(i = len - 1,j = 0; i >= 0; --i,++j) {
if(s[i] > 0X7F) { // 是汉字
t[j++] = s[i - 1];
t[j] = s[i];
--i;
}
else t[j] = s[i];
}
t[j] = '\0';
return t;
}
int main() {
unsigned char s[] = "C语言char数据类型练习";
unsigned char t[25];
printf("s = \"%s\"\n",s);
printf("t = \"%s\"\n",InverseStr(t,s));
return 0;
}

④ 用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>

intmain()
{
inti;
intstr_len;
charstr[81];
gets(str);
str_len=strlen(str);
//str_len-1就是最后一个元素的下标不理解的话可以想想"abc"长度3最后c的下标是2理解了吧
//然后一直自减到i=0也就是第一个字符那么下面的for循环的意思就是
//从最后一个字符逐个倒着输出这个字符串的元素
for(i=str_len-1;i>=0;i--)
{
printf("%c",str[i]);
}

return0;
}

⑥ 请教C语言字符串倒序输出

#include<stdio.h>
#include<string.h>
void main()
{
char string1[200]; //用于存放输入的字符串
char string2[200]; //用于存放倒序后的字符串
int invertion(char *ch1, char *ch2); //声明函数
printf("Please input a sentences:\n");
gets(string1); //这里不要用scanf,因为scanf遇到空白符就会结束
printf("Your inputed sentences is:%s\n", string1);

invertion(string1, string2);
printf("The invertion sentences is:%s\n", string2);
getchar();
}

int invertion(char *ch1, char *ch2)/*char1 接收实参传过来的原字符串指针 char2 接收倒序后的新字符串返回主函数*/
{
int count = 1,num=0;
char *ch=ch1;
for(;*ch1!='\0';ch1++)// 统计单词个数
{
if(*ch1==' ')
count++; //单词数等于空格数加1,前面把count初始化为1就是这个原因
if(*ch1==' '&&*(ch1+1)==' ') //防止单词之间有2个空格符而多计数了一个单词数
count--;
}
printf("count = %d\n", count);
ch1=ch1-1;//前面的ch1经过循环之后已经指向字符串的结束标志'\0',这里减1是为了让它指向字符串的最后一个字符
while(ch1>=ch)//让ch1从指向string1的最后一个字符开始往前递减,当减到字符串的首个字符时结束
{ int j=num; //保存num,后面要用到这个数
if(*ch1!=' ')//记录每个单词的长度 ,以空格符作为标志
num++;
else // 知道了每个单词的长度之后,就可以用循环将字符以单词为单位写入数组string中,这样的话单词内就不会倒序了
{
for(int i=1;i<=j;i++,num--)
*(ch2-num)=*(ch1+i);
*ch2=*ch1;
}
ch1--;
ch2++;
}
for(int i=1;i<=num;i++,ch2++)//因为string1的第一个单词前没有空格符,肯定输不出来,所以单独用一个循环将其输出
*(ch2-num)=*(ch1+i);
*ch2='\0'; //string2的结束标志
}

这是我做了修改之后的程序,看看符不符合要求!!
你的那个定义的变量太多,很混乱!循环语句太乱了,if判断条件与循环条件不正确
已经做了修改,看符合要求不,不行的话,再说!!!
又做了修改了,看符合要求不??
不会吧,我调试通过还运行了!!不然怎么会发上来啊!!至于算法问题我给注释吧,你看看!!

⑦ C语言关于字符倒序输出

为什么我用你的程序测试是正常的?
你的程序逻辑搞复杂了,我给你改一个版本:
#include
int
main()
{
int
i=5;
void
converse(int
n);
printf("Input
5
characters:");
converse(i);
printf("\n");
return
1;
}
void
converse(n)
{
char
next;
if(n
==
0)
return;
next=getchar();
converse(n-1);
putchar(next);
}
记住你输入的任何字符都会算入5个之内,包括空格,换行,table等

⑧ 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语言:输入一个字符串,然后逆序输出

可以将整数当做字符串(字符串长度不超过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(" ");}

(9)c语言字符倒序输出字符串扩展阅读:

C语言高效编程技巧:

一:以空间换时间

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

二:数学方法解决问题

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

三:使用位操作

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

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

⑩ c语言关于 字符串倒序并输出

for
(i
=
0;
i
<
len
;
i++)
{
a1[i]
=
a[len
-
i
-
1];
//
这样写整个转了一圈,而且数据被破坏了,你没有先保存原a[i]的值,丢了!
}
for
(i
=
0;
i
<
len
/
2;
i++)
这是正确写法,前半部分与后半部分交换!!
{
temp
=
a[i];
//保存
a[i]
=
a[len
-
i
-
1];
后面的移前面
a[len
-
i
-
1]
=
temp;
//将前面的保存的数据,移到后面
}

热点内容
java客户端程序 发布:2024-05-04 08:08:11 浏览:939
腾讯视频账号和密码哪里看 发布:2024-05-04 08:08:11 浏览:451
专网数据存储安全问题分析 发布:2024-05-04 07:33:28 浏览:131
如何获得打印机无线密码 发布:2024-05-04 06:44:59 浏览:418
上古诸神录哪里改密码 发布:2024-05-04 06:43:55 浏览:263
灌篮高手手游自动盖帽脚本 发布:2024-05-04 06:42:31 浏览:425
javajs引擎 发布:2024-05-04 06:37:33 浏览:798
javalist重复 发布:2024-05-04 06:19:27 浏览:511
max脚本管理 发布:2024-05-04 06:02:31 浏览:45
自行搭建服务器 发布:2024-05-04 06:01:12 浏览:126