谁能详细给我解释一下这段代码(菜鸟问题)
main()
{
int n=0;
char c;
while ( (c=getchar())!= '2 ' )
n++, printf( "0%c ",c); printf( "%d ",n);
}
输入1992 怎么输出0109093
[解决办法]
while ( (c=getchar())!= '2 ' ) //你输入1992 第一次:读入1即C=1;第2次:读入1即C=9;第3次:读入1即C=9;第4次:读入1即C=2 跳出循环
n++, printf( "0%c ",c);//第一次 n++ n==1;输出 01 第2次:n++ n==2;输出 09 第3次:n++ n==3;输出 09
printf( "%d ",n);//输出n==3;
[解决办法]
逗号(,)操作符的问题
[解决办法]
main()
{
int n=0;
char c;
while ( (c=getchar())!= '2 ' )
n++, printf( "0%c ",c); printf( "%d ",n);
}
----------------------
n++后面的 逗号运算符 的作用是将后面的表达式连接起来成为一个表达式
所以 n++和 printf( "0%c ", c) 属于while循环中的一条语句,
当输入为 1992 时,循环执行了三次,原因是第四个字符为2,不满足循环的条件,
在这三次循环中 n 也就自加了三次,所以最后n的值为3,
你最后的输出是 0109093 这没什么奇怪的,其实楼主把程序稍加改动就可以理解了。
把这两个输出 printf( "0%c ",c); printf( "%d ", n) 改一下:printf( "%c ",c); printf( "\n%d ");
这样当你再输入1992时,输出为:199
3
[解决办法]
while ( (c=getchar())!= '2 ' )
n++, printf( "0%c ",c);
输入1992过程:
输入1, n = 1, 输出01
输入9, n = 2, 输出09,加上次的输出合成:0109
输入9, n = 3, 输出09,加上两次的输出合成:010909
输入2,退出循环;
退出循环后有一个输出语句:printf( "%d ",n); 输出3,加上前三次输出合成:0109093