c语言——这道练习题怎样理解

来源:百度知道 编辑:UC知道 时间:2024/04/29 10:00:08
—程序
main()
{
int n=0;
char c;
while ( (c=getchar())!='2' )
n++, printf("0%c",c); printf("%d",n);
}

假如输入是1992
那么输出是

正确! 做的很好!

错误! 再做一次!

c=getchar() 输入的一个字符被赋给变量 c。
语句: printf("0%c",c) 打印 '0', 随后是字符 c。

逗号不是语句结束符。分号是语句的结束符。

不可以打印 '2'。

正确答案是: 0109093

你要加把劲!

这里可以对程序的任意输入进行测试
输入:

那么输出是:
这里说的输入是在程序代码中输入还是在编译好的程序中输入。此外,为什么输入1992,会输出0109093?还有getchar是要输入字符,那么输出的也应该是字符了吧?‘2’为什么不能输出呢?问题比较多,不过朋友们一定觉得很简单的哈。在下迂腐,不能理解,请各位指教了!先谢过了!

楼主的描述有些混乱,我只针对你的问题来回答希望可以帮到你。
1、为什么输入1992,会输出0109093?
答:getchar是取的单个字符的,程序判断字符是否为2,是则打印0+字符,否则打印n,前三个字符1、9、9的输出时010909,最后一个字符是2打印n的值为3,所以结果是0109093。
2、还有getchar是要输入字符,那么输出的也应该是字符了吧?
答:数字也是字符,输出是不是字符要看是不是%c。
3、‘2’为什么不能输出呢?
答:问题1解答的后半部分。

while ( ( c=getchar() )!='2' )

给你解释下这个语句,首先看括号,最先执行的是c=getchar(),
这c=getchar()语句中有两点要执行,
①是getchar()从屏幕上输入获取字符(数字,英文字母,标点符号符号都是字符),②是把所输入字符的赋值给c字符变量.

现在把说输入的字符复制给c变量了,接下来执行(c != '2'),其中"!="是"不等于",'2'是字符(凡是用单引号''括起来的一个数字或字母或符号都是字符).

所以整条语句的意思就是 "当所输入的字符不等于字符2的时候"

为什么程序和你的说明要写得这么乱呢。。。

完全没明白楼主要干吗~~~~~