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个字符倒序排列,编译出来有很多错误...请问错在哪里了? 展开
#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个字符倒序排列,编译出来有很多错误...请问错在哪里了? 展开
4个回答
展开全部
#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);
}
#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);
}
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
//#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);
}
追问
请问一下,为什么没有指针还可以用*进行指针交换?
追答
数组名代表数组首元素的地址,也就是就相当于指针。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看着比较复杂,字符串倒叙我给你个
#include<stdio.h>
void pp(char *p)
{
if(*p)
{
pp(p+1);
putchar(*p);
}
}
main( )
{
char k[20];
gets(k);
pp(k);
}
#include<stdio.h>
void pp(char *p)
{
if(*p)
{
pp(p+1);
putchar(*p);
}
}
main( )
{
char k[20];
gets(k);
pp(k);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%s",str);这里少了&
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询