编写一个将输入复制到输出的程序,并将其中连续多个空格用一个空格代替。
#include<stdio.h>intmain(void){intc;intinspace;inspace=0;while((c=getchar())!=EOF){if...
#include <stdio.h>
int main(void)
{
int c;
int inspace;
inspace = 0;
while((c = getchar()) != EOF)
{
if(c == ' ')
{
if(inspace == 0)
{
inspace = 1;
putchar(c);
}
}
/* We haven't met 'else' yet, so we have to be a little clumsy */
if(c != ' ')
{
inspace = 0;
putchar(c);
}
}
return 0;
}
程序是这样的,基本上理解,但是后面那个并将连续多个空格用一个空格代替不怎么理解,不知道这里IF语句是怎么实现的。请网友解释下:感谢!!! 展开
int main(void)
{
int c;
int inspace;
inspace = 0;
while((c = getchar()) != EOF)
{
if(c == ' ')
{
if(inspace == 0)
{
inspace = 1;
putchar(c);
}
}
/* We haven't met 'else' yet, so we have to be a little clumsy */
if(c != ' ')
{
inspace = 0;
putchar(c);
}
}
return 0;
}
程序是这样的,基本上理解,但是后面那个并将连续多个空格用一个空格代替不怎么理解,不知道这里IF语句是怎么实现的。请网友解释下:感谢!!! 展开
6个回答
展开全部
#include<stdio.h>
main()
{
char c;
int n=0;
while((c=getchar())!=EOF)
{
if(n>1&&c!=' ') //判断连续空格是否大于1且当前字符不是空格
{
n=0; //输出一个空格并计数置0
putchar(' ');
}
else if(n==1&&c!=' ')//如果只有一个空格且当前字符不是空格
{
n=0; //输出一个空格并计数置0
putchar(' ');
}
if(c!=' ') //不是空格就正常输出
putchar(c);
else //是空格则空格数+1
n++;
}
printf("\n");
}
main()
{
char c;
int n=0;
while((c=getchar())!=EOF)
{
if(n>1&&c!=' ') //判断连续空格是否大于1且当前字符不是空格
{
n=0; //输出一个空格并计数置0
putchar(' ');
}
else if(n==1&&c!=' ')//如果只有一个空格且当前字符不是空格
{
n=0; //输出一个空格并计数置0
putchar(' ');
}
if(c!=' ') //不是空格就正常输出
putchar(c);
else //是空格则空格数+1
n++;
}
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这其中用到了 这个变量。首先将0赋给 inspace,在遇到空格符时,若inspace=0则输出字符,非0则不输出。所以在遇到首个空格符时输出空格并把1赋给inspace,若后面有紧跟着的空格,则会因为此时inspace的值已是1而不再输出空格。直到遇到连续的空格符后的第一个非空格符后,再把0赋给inspace,这样再遇到下一个空格符串时才可以接着输出首个空格符,也就是回到前面的过程。 就这样循环下去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前面的 if 是为了输出 第一个 空格,输出后 inspace=1 标记 变量C 读入的是空格 当下一次输入
字符时 若又是空格 ‘ ’ 则 不在输出。若不是空格
则 执行 第二个 if() 输出C 且 inspace=0 表示 输入的C 不是
空格 如下一次输入空格时 就会输出空格,
字符时 若又是空格 ‘ ’ 则 不在输出。若不是空格
则 执行 第二个 if() 输出C 且 inspace=0 表示 输入的C 不是
空格 如下一次输入空格时 就会输出空格,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
int i,n;
char s[1001];
gets(s);
n=strlen(s);
for(i=0;i<n;i++)
if(s[i]==' '&&s[i+1]==' ')
continue;
else
putchar(s[i]);
puts("");
}
#include<string.h>
int main()
{
int i,n;
char s[1001];
gets(s);
n=strlen(s);
for(i=0;i<n;i++)
if(s[i]==' '&&s[i+1]==' ')
continue;
else
putchar(s[i]);
puts("");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询