C语言指针与数组的题

#include<stdio.h>#definen3,m5voidmain(){inti,j,k;char*str;scanf("%s",str);for(i=n,j=n... #include<stdio.h>
#define n 3,m 5
void main()
{
int i,j,k;
char *str;
scanf("%s",str);
for(i=n,j=n+m-1;i<m+n,j>(m+n)/2;i++,j--)
{
k=*(str+i);
*(str+i)=*(str+j);
*(str+j)=k;
}
printf("%s\n",str);
}

程序要求是从第n个字符开始,连续5个字符倒序排列,编译出来有很多错误...请问错在哪里了?
展开
 我来答
gznxwmr800216
2012-12-09 · TA获得超过279个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:97.7万
展开全部
#include<stdio.h>
#define n 3
#define m 5
void main()
{ int i=0,j=0,k;
char *str;
scanf("%s",str);
j=n+m-2;
for(i=n-1;i<n-1+m/2;i++) //第n个 字符开始,数组、指针第一个地址是从0开始,所以要n-1
{
k=*(str+i);
*(str+i)=*(str+j);
*(str+j)=k;
j--;
}
printf("%s\n",str);
}
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笃侠6A
2012-12-09 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3264万
展开全部
#include<stdio.h>
//#define n 3,m 5
#define n 3
#define m 5
void main()
{
int i,j,k;
char str[50]; //*str
scanf("%s",str);
for(i=n,j=n+m-1;i<j;i++,j--) //i<m+n,j>(m+n)/2
{
k=*(str+i);
*(str+i)=*(str+j);
*(str+j)=k;
}
printf("%s\n",str);
}
追问
请问一下,为什么没有指针还可以用*进行指针交换?
追答
数组名代表数组首元素的地址,也就是就相当于指针。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寂寞而莫我知也
2012-12-09 · TA获得超过284个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:230万
展开全部
看着比较复杂,字符串倒叙我给你个
#include<stdio.h>
void pp(char *p)
{
if(*p)
{
pp(p+1);
putchar(*p);
}
}
main( )
{
char k[20];
gets(k);
pp(k);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泰然其生其生7777
2012-12-09 · 超过11用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:47万
展开全部
scanf("%s",str);这里少了&
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式