简单的逆向排序程序
#include<stdio.h>
#include<conio.h>
void main()
{
int i,n;
char a[100];
printf("输入字符个数:");
scanf("%d",&n);
printf("输入字符:");
for(i=0;i<n;i++)
{
scanf("%c",a+i);
}
printf("字符逆序输出:");
i=i-1;
for(;i>=0;i--)
printf("%c ",a[i]);
printf("\n");
}
输入与输出如下所示,等不到正确的结果:
把scanf("%c",a+i)改为scanf("%d",a+i)后结果就正确了
求原因!!!!!!
搞错了,是把scanf("%c",a+i)改为scanf("%s",a+i)后结果就正确了
我利用了指针,都一样的
追答我终于不用换成%s ,直接用%c来正确的解出这道题了!!
方法是吧这个语句scanf("%c",a+i) %c 前面加一个空格 , a空格+空格i
正确的语句
scanf(" %c",a + i);
别把空格忘了就可以正确的做出来!这里用%s,%c都可以做出来,可是这个程序中要用%c来做!养成良好的编程风格很重要!!
举个例子:
scanf(" %c",&answer)
控制串空格用于匹配键盘缓冲区里的一个或多个空白字符(包括空格、回车、跳格等字符)。
如输入 a
说明,字符a前面有4个空格。
回车后,%c前面的空格将匹配这4个空格。
%c匹配'a', 因此此时读入到变量answer中的值为'a';
如果%c前面不加空格,同样的输入,%c匹配的将是第一个空格。
为什么有空格就不行了呢,用%s输入字符时中间有多少个空格都可以
追答第一种情况时,连续输入abcd后,输出结果是否正确?
追问正确了呀,我只是想知道为什么%c加了空格或回车就不可以,而%s加了多少个空格都可以