请教

14号选手 2012-07-25 05:07:26
编译器用的是vc++6.0
自己写了一个字符逆序交换的程序
代码如下
#include <stdio.h>
#define M 10
#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))
void swap(char a[],int x);
int main(void)
{
char c[M];
int i,j,n,temp;
printf("输入数组长度(输入q退出):\n");
while(scanf("%d",&n)!=1)
{
fprintf(stderr,"input error!\n");
exit(1);
}
printf("输入数组元素:\n");
for(i=0;i<n;i++)
scanf("%c",&c[i]);
for(i=0,j=n-1;i<n/2;i++,j--)
SWAP(a[i],a[j],temp);
for(i=0;i<n;i++)
printf("%c",a[i]);
return 0;
}

我输入了okm为什么结果只出来ko
请各位指正
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
14号选手 2012-07-25
  • 打赏
  • 举报
回复
恩,谢谢,我已经找到这个原因了[Quote=引用 3 楼 的回复:]

下面这样就可以了
C/C++ code

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define M 10
#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))
void swap(char a[],int x);

int main(void)
{
char c[M]……
[/Quote]
pathuang68 2012-07-25
  • 打赏
  • 举报
回复
下面这样就可以了

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define M 10
#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))
void swap(char a[],int x);

int main(void)
{
char c[M];
memset(c, 0, M * sizeof(char)); // 加这行,否则可能会出现乱码
int i,j,n,temp;
printf("输入数组长度(输入q退出):\n");
while(scanf("%d",&n)!=1)
{
fprintf(stderr,"input error!\n");
exit(1);
}
printf("输入数组元素:\n");
getchar(); // 加这行,吸收前面的换行符
for(i=0;i<n;i++) scanf("%c",&c[i]);

for(i=0,j=n-1;i<n/2;i++,j--)
SWAP(c[i],c[j],temp);

for(i=0;i<n;i++)
printf("%c",c[i]);
return 0;
}
14号选手 2012-07-25
  • 打赏
  • 举报
回复
恩,我也想到这一点了,程序发错了,呵呵,a本来是在自定义函数里面的[Quote=引用 1 楼 的回复:]

scanf("%c",&c[i]); 这一句 在%c前面加个空格就行了~~

或者 while循环之后,加一条语句:
scanf("%c",&c[0]); 或者 scanf( "%*c" );

你认为你输入的是 okm 其实计算机读到的内容是\nok 反转后是 ok\n
你输出结果 最后应该会有一个换行吧。。。
原因就是 前边你输入一个数字的时候,最……
[/Quote]
lx3275852 2012-07-25
  • 打赏
  • 举报
回复
scanf("%c",&c[i]); 这一句 在%c前面加个空格就行了~~

或者 while循环之后,加一条语句:
scanf("%c",&c[0]); 或者 scanf( "%*c" );

你认为你输入的是 okm 其实计算机读到的内容是\nok 反转后是 ok\n
你输出结果 最后应该会有一个换行吧。。。
原因就是 前边你输入一个数字的时候,最后按键是回车(\n) for循环第一次会把\n读到c[0]中。。


还有 你后边的a貌似应该都改成c吧。。。。a貌似没定义!~

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧