C输入一个数组 将其倒叙输出

#include <stdio.h>
void func(char str[],int lenth);
int main()
{
char s[] = "ABCD1234efgh";
func(s,12);
printf("%s\n",s);
return 0;
}
void func(char str[],int lenth)
{
char *a;
char *b;
char c;
int i;
for (i=0;i<lenth/2;i++)
{
a=&str[i];
b=&str[lenth-i];
c=*a;
*a=*b;
*b=c;
}
}

我写的什么都不出 怎么改?
#include <stdio.h>
void func(char str[],int lenth);
int main()
{
char s[] = "ABCD1234efgh";
//

printf("%s\n",s);
return 0;
}
void func(char str[],int lenth)
{
//
}
}

按照这种方法

两种方法:顺序输入逆序输出;或者逆序输入顺序输出

#include<stdio.h>
#include<math.h>
#define N 10
main() 

int i,j,a[N],b[N];//定义数组和变量
//顺序输入,逆序输出 
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=N-1;i>=0;i--)
printf("%d ",a[i]);
printf("\n");
//逆序输入,顺序输出
for(i=N-1;i>=0;i--)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
/*
运行结果:
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1 
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-13
用字符串给数组赋值时,最后面会自动增加一个结束符'\0',所以实际长度是可见长度+1, 前后对调时要考虑到这个最后的结束符,其他的对调,结束符不能对调,不然输出就会异常。

#include <stdio.h>
void func(char str[], int lenth);
int main()
{
char s[] = "ABCD1234efgh";
func(s, 12);
printf("%s\n", s);
return 0;
}
void func(char str[], int lenth)
{
char a;
int i;
for (i = 0; i < (lenth-1) / 2; i++)
{
a = str[i];
str[i] = str[lenth-1 - i];
str[lenth -1 - i] = a;
}
}

追问

如果用char *c的话 *c=*a;这里会有个警告 运行的话就会出错 这是什么原因?

追答

如果是char*c 的话, 用 c=a 这样改变C就等于是改变a , 如果是*c = *a,是不允许的,内存里的值 是不让随便访问的。
函数里面length - 1,是因为数组是从0开始。

本回答被提问者采纳
相似回答