
关于C语言的问题~~~
大家请看一下下面的代码:#include<stdio.h>#defineSPACE''intmain(void){charch;ch=getchar();while(ch...
大家请看一下下面的代码:
#include<stdio.h>
#define SPACE ' '
int main(void)
{
char ch;
ch=getchar();
while(ch!='\n')
{
if(ch==SPACE)
putchar(ch);
else
putchar(ch+1);
ch=getchar();
}
putchar(ch);
return 0;
}
这些代码应该是输入一个字符之后就应该立刻输出啊。。。为什么会输出一个字符串之后才输出呢?它用的不是putchar吗?它只授理一个字符啊。。。
哪位哥哥愿为小弟解释一番?
哥哥们能不能说清楚点啊。。。。while 下面不是有一个if(ch==SPACE)
putchar(ch);
吗?
#include<stdio.h>
#define SPACE ' '
int main(void)
{
char ch;
ch=getchar();
while(ch!='\n')
{
if(ch==SPACE)
putchar(ch);
else
putchar(ch+1);//putchar为什么不输出呢?这行起的是什么作用?
ch=getchar();
}
putchar(ch);//为什么要等到这才输出呢?
return 0;
}
/*输入a以后,满足循环条件,执行putchar()语句,此时应该在屏幕上输出了a字符。
再等待输入第二个字符。 可是事实上是在回车以后才输出的。为什么啊?*/ 展开
#include<stdio.h>
#define SPACE ' '
int main(void)
{
char ch;
ch=getchar();
while(ch!='\n')
{
if(ch==SPACE)
putchar(ch);
else
putchar(ch+1);
ch=getchar();
}
putchar(ch);
return 0;
}
这些代码应该是输入一个字符之后就应该立刻输出啊。。。为什么会输出一个字符串之后才输出呢?它用的不是putchar吗?它只授理一个字符啊。。。
哪位哥哥愿为小弟解释一番?
哥哥们能不能说清楚点啊。。。。while 下面不是有一个if(ch==SPACE)
putchar(ch);
吗?
#include<stdio.h>
#define SPACE ' '
int main(void)
{
char ch;
ch=getchar();
while(ch!='\n')
{
if(ch==SPACE)
putchar(ch);
else
putchar(ch+1);//putchar为什么不输出呢?这行起的是什么作用?
ch=getchar();
}
putchar(ch);//为什么要等到这才输出呢?
return 0;
}
/*输入a以后,满足循环条件,执行putchar()语句,此时应该在屏幕上输出了a字符。
再等待输入第二个字符。 可是事实上是在回车以后才输出的。为什么啊?*/ 展开
展开全部
getchar()函数是从输入缓冲区中读取数据,同理putchar()也是,也就是说程序执行时,你被允许输入一串数据,它们都会保存在缓冲区中,然后这两个函数分别依次从中读取。所以实际效果是字符串。
如果你真想达到只受理一个字符的效果请使用getch()和getche(),这两个函数都是只等待一次输入。区别是前者不显示你输入的字符,后者会在屏幕上显示。
你说那个if啊,输入缓冲区结束有两个条件,一个是遇到空格,一个是遇到换行(回车)。后者当然说明用户希望在此结束,但是默认情况下遇到空格之后本次输出也就结束了,接着输出下一组字符导致空格消失。加上那个if是为了显示出来用户输入的空格。
我说过了,你所输入的字符都会被存储到内存的输入缓冲区中去,也就是说,在while语句前面那个getchar()执行完之后,系统已经把你按回车之前的所有内容记录在缓冲区里面了。之后再开始执行while循环中的部分,while循环是在你按下回车之后自动执行的,并不是等待你再次输入。
至于你在语句中提的那两个问题,putchar()确实一次只输出一个字符,那两个putchar()都是实际输出的。
如果你真想达到只受理一个字符的效果请使用getch()和getche(),这两个函数都是只等待一次输入。区别是前者不显示你输入的字符,后者会在屏幕上显示。
你说那个if啊,输入缓冲区结束有两个条件,一个是遇到空格,一个是遇到换行(回车)。后者当然说明用户希望在此结束,但是默认情况下遇到空格之后本次输出也就结束了,接着输出下一组字符导致空格消失。加上那个if是为了显示出来用户输入的空格。
我说过了,你所输入的字符都会被存储到内存的输入缓冲区中去,也就是说,在while语句前面那个getchar()执行完之后,系统已经把你按回车之前的所有内容记录在缓冲区里面了。之后再开始执行while循环中的部分,while循环是在你按下回车之后自动执行的,并不是等待你再次输入。
至于你在语句中提的那两个问题,putchar()确实一次只输出一个字符,那两个putchar()都是实际输出的。
展开全部
i++是先用再加,++i是先加后用,
i++;与++i若只是单独的,就谈不上"用"
如果i=5,那么i++和++i后i都等于6,
但是sum=i++;
sum=++i;分别执行这两句,结果就不同了
i++;与++i若只是单独的,就谈不上"用"
如果i=5,那么i++和++i后i都等于6,
但是sum=i++;
sum=++i;分别执行这两句,结果就不同了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i++,取值然后自增
++i,自增然后取值
int
a
=
1,
b
=
1;
int
c
=
a++;
//
c
=
1;
a
=
2
int
d
=
++b;
//
d
=
2;
b
=
2
对于自增对象类说,比如这里的a和b,前缀和后缀造成的效果,都是自增1,但后缀表达式返回的是增加前该变量的值,后缀返回的是增加后的值,如果没有用到表达式的值,比如i++,而不是int
a
=
i++,前后缀效果相同,c++多用前缀。
++i,自增然后取值
int
a
=
1,
b
=
1;
int
c
=
a++;
//
c
=
1;
a
=
2
int
d
=
++b;
//
d
=
2;
b
=
2
对于自增对象类说,比如这里的a和b,前缀和后缀造成的效果,都是自增1,但后缀表达式返回的是增加前该变量的值,后缀返回的是增加后的值,如果没有用到表达式的值,比如i++,而不是int
a
=
i++,前后缀效果相同,c++多用前缀。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵
这是应为你没有加
一个
停止
命令呀
printf("puse");
好像是
puse
,去搜搜
加了这句就可以看到输出的内容了
这是应为你没有加
一个
停止
命令呀
printf("puse");
好像是
puse
,去搜搜
加了这句就可以看到输出的内容了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
<stdio.h>
void
main
(
)
{
int
max(int
x,int
y);
int
a,
b,
c;
scanf
("%d,%d",&a,&b);
c=max
(a,b);/*C为a,b里面较大的那个*/
printf
("max=%d",c);/*输出c*/
}
int
max(int
x,int
y)
{int
z;
if
(x>y)
z=x;
else
z=y;
return
(z);/*这个跟上面那个是一个意思*/
}
l两段代码想表达的就是输出ab之中较大的那个!
<stdio.h>
void
main
(
)
{
int
max(int
x,int
y);
int
a,
b,
c;
scanf
("%d,%d",&a,&b);
c=max
(a,b);/*C为a,b里面较大的那个*/
printf
("max=%d",c);/*输出c*/
}
int
max(int
x,int
y)
{int
z;
if
(x>y)
z=x;
else
z=y;
return
(z);/*这个跟上面那个是一个意思*/
}
l两段代码想表达的就是输出ab之中较大的那个!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要明白,==是判断是否相等,=才是赋值,所以
b==i/10%10;
c==i/100%10;
n==pow(a,3);
m==pow(b,3);
o==pow(c,3);
都应该换成=
if(i=n+m+o)
换成==
b==i/10%10;
c==i/100%10;
n==pow(a,3);
m==pow(b,3);
o==pow(c,3);
都应该换成=
if(i=n+m+o)
换成==
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询