焦急万分的图片:明天考c语言,可是复习时候碰到一些困难,请问大家帮忙解答!急14

来源:百度文库 编辑:高校问答 时间:2024/05/08 23:54:02
(6)以下程序运行时,若从键盘输入:10 20 30<回车>,输出的结

果是 【6】 。 #include
?? main()
?? { int i=0,j=0,k=0;
??scanf("%d%*d%d",&i,&j,&k);
??printf("%d%d%d\n",i,j,k);
??}

答案是10 30 0 为什么阿 我看不懂 不明白。

%*d 是什么意思啊
不知道为什么是这个答案 高手们请指点下 程序说的是什么?

*表示本输入项在读入后不付给相应的变量,也就是说20并没有付给j,而是30付给了j,而k没有输入项,所以保持原值即0,回答完毕。

%*d 是整型输出指针

这道题是说让你从键盘输入三个整数,然后把你输入的三个整数输出。

之所以给三个变量先赋值是因为在一些大型的代码里,没有赋值的变量常是错误的根源!

假如运行该代码段,你输入1 2 3
输出为123
要想在输出的整形数据间有空格,你可以这样修改语句
printf("%d %d %d\n",i,j,k);
即该语句控制你的数据输出格式。

百分号(%)与格式符之间的星号(*)表示读指定类型的数据但不保存, 比如scanf( "%d %*d %d", &x, &y )对 10 15 20 的读入操作中,读入10 放入变量 x,读入15但不保存, 读入20 放入 y.
在你的程序中k并没有被赋值.
一般使用这种用法的时候通常是略过几个输入中间的字符:
例如输入10/20
scanf( "%d%*c%d", &x,&y) 这个时候%*c就把中间的'/'读入了但是并没有保存.实际为了略过中间的'/'.

妈的,该死的中国教育害死人。这种语法在实际中绝对不会用到的。考试单纯就是为了考试了。
这个题应该是考输入的格式问题。加*号后,格式不符,所以恕没送进来,而直接跳过去了。
所以输出中没有20