C语言:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串.相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

#include<string.h>//使用字符串函数时头文件 

int str(char a[20],char b[20])//定义两个字符型数组 

int i, j, k;

j=strlen(a);//测试字符串长度; 

i=0;

k=j-1;

while(i<j)

b[k]=a[i];//互换值; 

i++;

k--;

return 0;

int main()

char c[20];

char d[20];

int i,l;

//gets(c);//输入字符串;

scanf("%s",c); 

l=strlen(c);//测试字符串长度; 

str(c,d);//调用函数; 

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

printf("%c",d[i]);//输出数值; 

printf("\\n"); 

printf("%s",d);//直接输出字符串,此时输出的是字符数组名,而不是数组元素名; 

return 0;

运行效果:

扩展资料:

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

参考技术A

reverse(char s[])

 int i=0,j;

 char c;

 j=strlen(s)-1;

 while(i<j)

 c=s[i];s[i++]=s[j];s[j--]=c;

main()

 char s[200];

 gets(s);

 reverse(s);

 puts(s);



本回答被提问者和网友采纳
参考技术B /*字符串转置*/
#include<stdio.h>
void main()

void revStr(char *);
char str[80];
printf("输入一个字符串: ");
gets(str);
revStr(str);
printf("转置后的字符串: %s\\n",str);

void revStr(char *str)

int i,len;
char tmp;
for(len=0;str[len];len++);
for(i=0;i<len/2;i++)

tmp=str[len-i-1];
str[len-i-1]=str[i];
str[i]=tmp;

参考技术C #include <stdio.h>
void Reverse_string(char *str)

int len = strlen(str), i;
char t;
for(i = 0; i <= len / 2; i ++)

t = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = t;



int main()

char buffer[100];
gets(buffer);
Reverse_string(buffer);
printf("%s\\n", buffer);

参考技术D 我这里有种很新颖的方式,采用函数递归调用,求采纳。

#include<stdio.h>
int main()

void reverse(char s[]);
char s[80];
scanf("%s",s);
reverse(s);
return 0;

void reverse(char s[])

int i=0;
if(s[i]!='\0')

i++;
reverse(&s[i]); //这里采用递归,若你学了指针表示起来方便一点
printf("%c",s[i-1]);

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符

#include <stdio.h>
#include <string.h>
void main()
char yuan(char a[100]);
char a[100];
printf("请输入一串字母\n");
gets(a);
yuan(a);
printf("反转后的字母串为\n");
puts(a);

char yuan(char a[100])
char d[100];
char f;
int i,j,k;
i=strlen(a);
for(j=0,k=i;j<=i;j++,k--)
d[k]=a[j];
return(d[100]);


请问各位高手为什么没有交换成功?
我没有分,只有一颗真诚的心。
谢谢
麻烦哪位高手修正修正?谢谢了

问题很简单:你根本就没有翻转字符串!!!!
第一,你在调用char yuan(char a)后,用什么来接受它的返回值?对吧,在主函数中根本没有任何char组来接受它。你似乎可以将 gets(a);
后的语句改写成 a = yuan( a ); 然后输出。告诉你这也样行不同的,只因为接下来的第二点。
第二,你的yuan函数设计有问题。你犯了一个初学者很容犯的错误试图从被调用函数中返回一个数组(或指针)的值。要知道,被调用的函数编译后存储在堆栈当中:它在被调用时创建,结束调用时销毁。所以说,不能用它来返回数组(或指针)的值。

至此,你的提问已经解决。下面给出我的想法,
现在思考你要解决的问题:将一个字符串(或者说是字符数组)翻转。这就要求你必须为yuan函数传递个字符串参数a;然后就是翻转,但是翻转的字符串不会超出原字符串的长度,故而可设计用它自身将翻转值带出。可将翻转函数原型设计为 void yuan(char *a); 实现如下:
void yuan(char *a)
char temp;
int i;
int count;
count = strlen( a ) - 1; /*这里用count表示可用的最大下标,如当数组元素为5是,可用的最大下标应为4。明白这一点很重要,也很有意思*/
for(i = 0; i < count / 2; i++)
temp = a[i];
a[i] = a[count - i];
a[count - i] = temp;



再到这里似乎没什么话可说了,不过还是要给出几点建议:
第一,合理使用空白,是你的程序更具可读性;
第二,为设计标识符可以适当学习一下英语;
综上,在学习初期养成良好的编程风格很重要。
谨祝,
学习进步!
参考技术A 不成功,错误太多。。。。

你只返回了一个字符,还有,你的D[100];是局部变量。。
函数执行完后就释放
参考技术B #include <stdio.h>
#include <string.h>
void main()
void yuan(char a[100]);
char a[100];
printf("please input string\n");
gets(a);
printf("revert is \n");
yuan(a);

void yuan(char a[100])
char d[100];
char f;
int i,j,k;
i=strlen(a);
printf("i=%d\n",i);
for(j=0,k=i-1;j<i;j++,k--)
d[k]=a[j];
for(j=0;j<i;j++)
printf("%c",d[j]);
参考技术C 初学者,多看书吧
慢慢来

祝你顺利

以上是关于C语言:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串.的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符

写一个函数,使输人的一个字符串按反序存放,在主函数中输入和输出字符串

写一个函数,使输人的一个字符串按反序存放,在主函数中输入和输出字符串。

问题 A: 习题7-5 字符串逆序存放

用c++编写程序:输入一个自然数,将该数的每一位数字按反序输出。