新手求大神指点一下这程序,是字符串倒置的程序,

SS5619498 2012-11-04 07:32:02
#include<stdio.h>
void main()
{
char a[20],*p,*q,t;
int i,m,n;
printf("输入n的值\n");
scanf("%d",&n);
printf("输入字符串\n");
for(i=0;i<n;i++)
scanf("%c",&a[i]);
printf("\n");
p=a;
q=(a+n);
if(n%2==0)
m=n/2;
else m=n/2-1;
for (i=0;i<=m;p++,q--,i++)
{t=*q;*q=*p;*p=t;}
for(i=0;i<n;i++)
printf("%c",a[i]);
printf("\n"); }

...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaxdong 2012-11-04
  • 打赏
  • 举报
回复
没细看代码,看二楼说的问题。 解决:输入n后加一个fflush(stdin);(貌似是这个),清空输入缓冲区。
慧钦 2012-11-04
  • 打赏
  • 举报
回复
主要问题是在输入整数后我们一般后接一个空格或回车,但该空格或回车还停留在输入区造成的问题. 另一个问题在程序设计的问题,输入字符串可以用scanf("%s", str),这样子方便啊 如果想要字符串中能有空格,就可以用gets(str) 或fgets(s, size, stdin);// 注意回车也算是字符串的有效字符

#include<stdio.h>
void main()
{
    char a[20],*p,*q,t;
    int i,m,n;

    printf("输入n的值\n");
    scanf("%d",&n);
    // 上面输入数字之后后面的空格或回车键还停留在输入缓冲区,
    // 它会作为下面输入字符的第一个字符,要跳过这个回车,加上
    getchar(); // 紧跟n后面的一个字符(回车或空格什么, 注意只有一个,)
                // 所以输入整数后输入太多空格或回车还是会有问题
    printf("输入字符串\n");
    for(i=0;i<n;i++)
        scanf("%c",&a[i]);
    printf("\n");

    // 你这个是没有结束符的字符串,建议加上,n不要越界
    a[n] = '\0';

    p=a;
    q=a+n - 1;  // n个字符最后一个是加上n-1
    for ( ; p < q; p++, q--) {    // 这么写简练多了
        t = *p;
        *p = *q;
        *q = t;
    }
    // 有结束符的字符串这样子输出
    printf("%s\n", a);
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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