写一个函数,使输入的一个字符串按反序存放,错在哪里

#include<stdio.h>
void main()
{
char a[100],t;
int i,j;
scanf("%s",a);
for(j=0;j!='\0';j++)
for(i=0;i<j;i++)
{t=a[i];
a[i]=a[j-i-1];
a[j-i-1]=t;}
printf("%s",a);
}

第1个回答  2013-01-14
首先要明确j干什么用的,我理解j是取得输入字符串的长度,你的写法是2层循环,这不对吧

没异议的话下面
for(i=0;i<j;i++)
这个也有问题,从头到尾都赋值是不对的,这样相当于每个值颠倒后又颠倒回去
所以应该是赋值到一半就OK

char a[100], t;
int i = 0, j = 0;
scanf("%s", a);
printf("a_satrt:%s\n", a);
//j = sizeof(a);
for (j = 0; a[j] != '\0'; j++) { //主要是取得数组长度
printf("j:%d\n", j);
}
for (i = 0; i < (j + 1) / 2; i++) { //循环一半
//printf("%s",a);
t = a[i];
a[i] = a[j - i - 1];
a[j - i - 1] = t;
}
printf("a_end:%s", a);本回答被提问者采纳

...写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字...
第二,你的yuan函数设计有问题。你犯了一个初学者很容犯的错误试图从被调用函数中返回一个数组(或指针)的值。要知道,被调用的函数编译后存储在堆栈当中:它在被调用时创建,结束调用时销毁。所以说,不能用它来返回数组(或指针)的值。至此,你的提问已经解决。下面给出我的想法,现在思考你要解...

...写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字...
gets(str); \/\/从键盘中输入一个字符串(遇回车键结束)printit(str,strlen(str)); \/\/调用上面定义的函数反序输出字符串printf("\\n"); \/\/输入一个回车换行符,使后续输出能另起一行return 0;} 本回答由电脑网络分类达人 董辉推荐 举报| 答案纠错 | 评论 18 6 sdyxb 采纳率:52% 擅长: 暂未定制 其他回答...

...写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字...
include <string.h> void input(char st[]);\/\/定义输入函数 void reverse(char st[]);\/\/定义反序函数 int main(){ char s[20];input(s);\/\/调用输入函数 printf("Original string: %s\\n", s);\/\/输出原字符串 reverse(s);\/\/调用反序函数 printf("New string: %s\\n", s);\/\/输出反...

...写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字...
1. 函数在使用前,要先声明。2. 函数声明时,要制定参数的类型。当然你采用了旧版本的声明;先修正如下 \/\/ 作者: 点点点呀呀呀 \/\/ 函数功能:反转c型字符串 \/\/ 修改: Poseidon0922 include <stdio.h> include <string.h> void fanxu(char *dst, const char *src);int main(void){ char...

C语言 写一个函数使输入的一个字符串按反序存放
编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符。可以设置一个中间值,让两端的字符相交换,然后前头的向后移动一位,后头的向前移动一位。当前头的变量大于中间值时。程序停止执行。根据此原理编写代码如下:include<stdio.h> define N 100 void inverse(char[]);int main(...

C语言 写出一函数,是输入的一个字符串按反序存放,在主函数输入输出该字...
修改如下:\/\/--- include<string.h> include<stdio.h> void convert(char b[],char m[]){int i,n;n=strlen(b);for(i=0,n--;n>=0;n--,i++)m[i]=b[n];} void main(){ int i;char a[100],b[100]=;scanf("%s",&a);convert(a,b);printf("%s",b);} \/\/---...

编写一函数,使输入的一个字符串反序存放,并在主函数中输入、输出字符串...
typedef struct LNode{ char data;struct LNode * next;}LNode, * LinkList;LinkList CreateList_L(LinkList L)\/*头插法建立链表*\/ { char c;LinkList p;L = (LinkList)malloc(sizeof(LNode));L->next = NULL;c=getchar();while(c!='\\n'){ p = (LinkList)malloc(sizeof(LNode...

C语言:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序...
\/*字符串转置*\/#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+...

编程:编写函数change使输入的字符串按反序存放,在主函数中输入和输出字...
include<string.h> void chang(char ch[]){ int i;int len =strlen(ch);i=0;char c;int j = len-1;while(j>i){ c=ch[i];ch[i] = ch[j];ch[j] =c;i++;j--;} } int main(){ char ch[81];gets(ch);printf("\\nbefore change:\\n");printf("%s",ch);chang(ch);...

...写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字...
函数声明最好放在main前面 scanf("%s",a); \/\/这句改成这样 子函数中的数组a和main函数中的数组a, 并不是同一个数组 include <stdio.h>#include <stdlib.h>#define N 10void fanzhuan(char* a);int main() {int i;char a[N]={'\\0'};printf("请输入字符串:");scanf("%s",a)...

相似回答