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

#include<stdio.h>#defineN50voidreverse(chara[],intN){inti,j,temp;for(i=0,j=N-1;i<j;i+... # include <stdio.h>
# define N 50
void reverse(char a[],int N)
{
int i,j,temp;
for(i=0,j=N-1;i<j;i++,j--)
{
a[j]=temp;
a[j]=a[i];
a[i]=temp;
}
}
void main ()
{
int k;
char b[N];
printf("请输入一串字符:\n");
for(k=0;k<N;k++) scanf("%s",&b);
printf("反序输出的结果是:\n");
puts(reverse(b));
}
这个程序哪错了?
还有系统不让我通过啊,反馈的错误是
ompiling...
ch07_05.cpp
C:\Documents and Settings\Administrator\桌面\ch07_05.cpp(3) : error C2143: syntax error : missing ')' before 'constant'
C:\Documents and Settings\Administrator\桌面\ch07_05.cpp(3) : error C2143: syntax error : missing ';' before 'constant'
C:\Documents and Settings\Administrator\桌面\ch07_05.cpp(3) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
展开
 我来答
chenfenggang99
2014-05-07 · TA获得超过1850个赞
知道大有可为答主
回答量:1746
采纳率:75%
帮助的人:1734万
展开全部
#include<stdio.h>
#include<string.h>
void  fun(char *a) //其实你的n没有用。可以去掉
{
  int i,j;
  char t; //字符
  j=strlen(a);
  for(i=0;i<j/2;i++)//一半就行
{
t=a[i];a[i]=a[j-i-1];a[j-i-1]=t;   //这里需要{};
  }//是从j-1开始;
 // return a[i]; 不用返回
}
int main()
{   
 char a[100];
    scanf("%s",a);
// printf("%s",fun(a,100));//是输出
 fun(a); 
 printf("%s",a);
}

帮你全部修改好了。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2018359
2016-11-29 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1416万
展开全部

函数声明最好放在main前面

scanf("%s",a);   //这句改成这样

子函数中的数组a和main函数中的数组a, 并不是同一个数组

#include <stdio.h>
#include <stdlib.h>
#define N 10

void fanzhuan(char* a);

int main() 
{
int i;
char a[N]={'\0'};
printf("请输入字符串:");
scanf("%s",a);
fanzhuan(a);
return 0;
}

void fanzhuan(char* a)
{
int i;
for(i=strlen(a)-1;i>=0;i--)
{
printf("%c",a[i]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
why的杯具
推荐于2018-04-04 · 超过10用户采纳过TA的回答
知道答主
回答量:17
采纳率:0%
帮助的人:21.7万
展开全部
# include <stdio.h>
# define N 50 
char* reverse(char a[])
{
int i,j,strlen;
char temp;
for(strlen=0;a[strlen]!='\0';strlen++);
for(i=0,j=strlen-1;i<j;i++,j--)
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
return a;
}
void main ()
{
char b[N];
printf("请输入一串字符:\n");
scanf("%s",b);
printf("反序输出的结果是:\n");
puts(reverse(b));
}

N属于宏定义,不能作为变量名

用scanf函数输入一个字符串%s的时候是不需要循环的,会自动依次录入

同时reverse函数需要返回一个字符串的指针才能使puts知道应该输出什么内容

我稍微修改了一下,上面是我修改后的代码

追问
恩?我在哪把N作为变量名了啊?
追答
void reverse(char a[],int N)
预处理宏定义的方式是直接替换,这样编译器编译的时候看到的是:
void reverse(char a[],int 50)
很显然50不能作为变量名,于是报错了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鬼眼啊狂
2010-06-06 · TA获得超过417个赞
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:134万
展开全部
return只能返回一个值。。。不能返回数组,我跟你改改
#include<stdio.h>
#include<string.h>
void main()
{ int i;char a[100];
char f(char a[]);
gets(a);
f(a);
puts(a);

}
char f(char a[])
{ int n,i;
char b[100];
n=strlen(a);
for(i=0;n>=0;i++,n--)
b[i]=a[n];
for(i=0;i<=n;i++)
a[i]=b[i];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luvnn
2014-05-07 · TA获得超过160个赞
知道小有建树答主
回答量:159
采纳率:100%
帮助的人:103万
展开全部
int fun(char a[],int n)////////////这应该是 char *fun(char a[],int n)
{
int i,j,t;
j=strlen(a);
for(i=0;i<j;i++)
t=a[i];a[i]=a[j-i];a[j-i]=t;/////////////////这一行应该是{t=a[i];a[i]=a[j-i];a[j-i]=t;}少了大括号
return a[i];//return a;
}
main()
{
char a[100];
scanf("%s",a[100]);////////////////////这应该是 scanf("%s",a);
printf("%s",fun(a,100));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式