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

我初学,刚学到函数调用,请用这之前的编程,尽量简单点,谢谢别粘贴了,还带错的... 我初学,刚学到函数调用,请用这之前的编程,尽量简单点,谢谢
别粘贴了 ,还带错的
展开
 我来答
雪在风6
推荐于2017-11-23 · TA获得超过146个赞
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <string.h>
#define N 10 //可通过改变N 的值来改变输入字符串的长度
char a[30];
int i;
void main()
{
void Reverse(); //函数声明
printf("请输入字符串:");
scanf("%s",&a[i]);
printf("反转后的字符串:");
Reverse(); //函数调用
}

void Reverse() //函数定义
{
for(i=N;i>=0;i--)
printf("%c ",a[i]);
printf("\n");
}

Reverse是反转;当然,函数名你可以任意取
这个程序对初学者来说比较好,有函数调用的方法和实现过程!
cy冷月
2010-05-18 · TA获得超过280个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:204万
展开全部
#include <stdio.h>
void reorder(char* str)
{
char temp[100];
int i=0;
while(str[i]!='\0')
{
temp[i]=str[i];
i++;
}
for(int j=0;j<i;j++)
{
str[j]=temp[i-1-j];
}
}

void main()
{
char str[100]={'\0'};
printf("请输入一个字符串:");
scanf("%s",str);
reorder(str);
printf("倒序后的字符串是:%s\n",str);
}
我写个简单的,没有什么边界判断,字符串最长长度是100;
本来有其他安全的写法,不过现在写了你也看不懂,所以就这样吧。
VC6.0下测试通过
输入:hello
输出:olleh
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Poseidon0922
2010-05-19 · TA获得超过389个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:111万
展开全部
问题很简单:你根本就没有翻转字符串!!!!
第一,你在调用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;
}
}

再到这里似乎没什么话可说了,不过还是要给出几点建议:
第一,合理使用空白,是你的程序更具可读性;
第二,为设计标识符可以适当学习一下英语;
综上,在学习初期养成良好的编程风格很重要。
谨祝,
学习进步!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kkchg
2010-05-18
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
#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]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zee路
2018-12-29
知道答主
回答量:10
采纳率:0%
帮助的人:3.1万
展开全部
void fnConvert(char a[80])
{
int i=0,j;
char t;
j=strlen(a);
while(i<j/2)
{
t=a[i];
a[i] = a[j-1-i];
a[j-1-i]=t;
i++;
}
a[j]= '\0'; /* 添加字符串结束符*/
}
void main()
{ char stridiom1[80];
printf("\nplease input the first idiom: ");
gets(stridiom1);
fnConvert(stridiom1);
printf("\nthe result is: %s",stridiom1);
getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式