关于C语言中的一个小问题
#include<stdio.h>main(){intc,lastc;while((c=getchar())!=EOF){if(c!=''){putchar(c);}if...
#include <stdio.h>
main(){
int c, lastc;
while((c = getchar()) != EOF){
if(c != ' '){
putchar(c);
}
if(c == ' '){
if(lastc != ' ')
putchar(c);
}
lastc = c;
}
}
这是一个把输入复制到输出的程序,并且,将连续的多个空格用一个空格代替。
我想问的是,这里定义的变量C是代表我们输入的那个字符,那么lastc不代表我们输入的字符,if(lastc != ' ' ) 怎么会成立呢?在线等 展开
main(){
int c, lastc;
while((c = getchar()) != EOF){
if(c != ' '){
putchar(c);
}
if(c == ' '){
if(lastc != ' ')
putchar(c);
}
lastc = c;
}
}
这是一个把输入复制到输出的程序,并且,将连续的多个空格用一个空格代替。
我想问的是,这里定义的变量C是代表我们输入的那个字符,那么lastc不代表我们输入的字符,if(lastc != ' ' ) 怎么会成立呢?在线等 展开
7个回答
展开全部
当输入的第一个字符是‘ ’时,此时的lastc是0或其他随机值(不要不是‘ ’就好),判断成立。
当输入的第一个不是‘ ’,继续第二个字符(比如‘a’)输入,lastc=‘a’,然后输入第三个字符是‘ ’,此时依旧成立。
当输入的第一个不是‘ ’,继续第二个字符(比如‘a’)输入,lastc=‘a’,然后输入第三个字符是‘ ’,此时依旧成立。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为while中最后一条语句已将c值赋给lastc了。
语言不是太严谨,因为如果第一次C==‘’,而此时lastc并不是‘’。
语言不是太严谨,因为如果第一次C==‘’,而此时lastc并不是‘’。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
lastc = c;
lastc是记录上次输出的c,如果为空格则不输出 空格,如果不为空则输出空格。
整个程序是在输出c而lastc只是起到标记的功能。
if(c == ' '){
if(lastc != ' ')
putchar(c);
}
起到将连续的多个空格用一个空格代替的作用。
lastc是记录上次输出的c,如果为空格则不输出 空格,如果不为空则输出空格。
整个程序是在输出c而lastc只是起到标记的功能。
if(c == ' '){
if(lastc != ' ')
putchar(c);
}
起到将连续的多个空格用一个空格代替的作用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-13
展开全部
就是说如果输入c之后,判断上一个输入的c即 lastc,如果上一个c不是空格,就输出这次的c。采纳吧。。。。
由于while循环,如果第一次循环时c是空格,if(c == ' '){ if(lastc != ' ') putchar(c); 而lastc不是空格,输出,此时lastc = c;第二次循环时c是空格,if(c == ' '){ if(lastc != ' ') putchar(c); c、lastc都是空格,故不输出,满足将连续的多个空格用一个空格代替。。
由于while循环,如果第一次循环时c是空格,if(c == ' '){ if(lastc != ' ') putchar(c); 而lastc不是空格,输出,此时lastc = c;第二次循环时c是空格,if(c == ' '){ if(lastc != ' ') putchar(c); c、lastc都是空格,故不输出,满足将连续的多个空格用一个空格代替。。
追问
还是没懂,我的意思是,输入C之后,判断上一个输入的C,那么上一个C怎么会变成lastc呢,又没有赋值过。
追答
我更改了回答,循环中c赋值给lastc,而使用lastc是下一个循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-13
展开全部
这个没那么难理解吧。lastc = c;这条语句就是把当前输入的字符赋给了lastc,循环继续进行,c接受了新的输入字符,若当前输入的c为空格时,用lastc判断上一个输入字符是否为空格,若lastc为空格,则连续空格只输出一个,否则输出空格。最后,再把c的值赋给lastc,进入下一次循环。
不过话说lastc没有初始化。
不过话说lastc没有初始化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询