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

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串,,求下面程序解释,第1张

#i

#include<stdioh>

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

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);//另一种方式;如果输入的是字符串,则不需要加地址符,因为在c语言中数组名代表该数组的起始地址;

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

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

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

{

printf("%c",d<i>);//输出数值;

}printf("\n");

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

return 0;

}

输入

一行字符

输出

逆序后的字符串

样例输入

123456abcdef

样例输出

fedcba654321

扩展资料:

scanf用法:

输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。

scanf("%s",s);改为scanf("%s",&s);

scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);

格式控制字符串包含:格式控制说明,普通字符。

1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。

3、输入的参数是变量的地址,所以要在变量前面加&。

#include <stdioh>

void fa(int i);

void fb(int i);

int main(int argc, char argv) {

fa('a');

printf("\n");

fb('z');

printf("\n");

return 0;

}

void fa(int i) {

if(i <= 'z') {

printf("%c ", i);

fa(i+1);

}

}

void fb(int i) {

if(i >= 'a') {

printf("%c ", i);

fb(i-1);

}

}

题目的大致程序是这样的。用递归来写程序,首先要注意,什么是递归,如何写递归。

递归就是函数自己直接或间接的调用自身,写递归一定要注意程序的出口。恩,刚学递归是会感觉递归有点难的,如果没明白在联系我吧

"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个,

#include<stdioh>

#include<stringh>

#define MAX_STRING_SIZE 100

void oderString(char str); //按照反序排列字符串函数

int main()

{

char str[MAX_STRING_SIZE];

printf("请输入一个长度不超过%d的字符串:",MAX_STRING_SIZE);

scanf("%s",str);

orderString(str);

printf("反序后的字符串:%s",str);

}

void orderString(char str[])

{

int len=strlen(str)-1;

int i=0;

char temp;

while(i<=len)

{

temp=str[len];

str[len]=str[i];

str[i]=temp;

i++;

len--;

}

}

#include "stringh"

//s是以0结尾的字符数组

void reverse(chars)

{

char c;

int i, len;

len = strlen(s);

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

{

c=s[i];

s[i] = s[len-i-1];

s[len-i-1]=c;

}

}

C语言程序如下:

#include<stdioh>

#include<stringh>

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("\n");

}

扩展资料:

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

1、使用数组循环

2、StringBuffer的reverse方法

3、StringBuffer的循环

4、栈的后进先出

5、迭代完成

以上就是关于C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串,,求下面程序解释全部的内容,包括:C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串,,求下面程序解释、C语言编程:用递归法做,输出26个字母表的正序与反序。、c语言如何将字符串反序排列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10135123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存