楼上正解。
另外,
1、“k++"是先判断k是否为1,判断完成以后再加加的,而不是先加加在判断k是否为1的,n也同理。
2、不过,因为while的循环条件是一个与关系,由于你的第一个条件即k未能满足,所以程序就不用再判断第二个条件即n了,也就是说n还是原来的值2,而没有加加。
综上,k为1,n为2
第2种最好。
例如你设计一个函数
int fun(int input)
里面没有scanf printf调用,且没有访问全局变量,那么你的这个函数fun很容易移植,既可以在Dos窗口环境用,也可以在windows环境用,你要改的只是外围的数据输入获取方式和输出数据的显示方式。比如,在dos窗口程序中,你可以这样:
scanf(&input);
output = fun (input);
printf(output);
若想在windows界面用,可以这样:
input=某文本框的输入;
output=fun(input);
MessageBox(output);
功能代码与界面代码分离是经常要注意的事情。
假设你在fun里搞scanf或printf,你的fun就很难移植。
全局变量的缺点不用说了。
结果是:
Please
input
a
string:The
result
is:
0
0
0
0
0
从main函数开始执行,
遇到printf语句后输出Please
input
a
string:
这时你输入This
is
a
tree并赋给s
然后调用fun函数
此函数调用过程是:因为数组名就是数组的首地址,这时实参是把s数组的地扯传给了形参s的,
num传的也是数组的首地址,所以接下来如果在fun函数中对他们俩进行了修改的话,
实际的参数也是同时进行了修改的
第一个for语句将数组元素都设为0
因为此时的s是指向"This
is
a
tree"这个字符数组的首地址,
其s就是'T',当然不等于'\0'所以此时会让i=-1
刚说了s是‘T’,所以它不与switch中任何一种情况相同。
所以它不会执行swihch中的语句。后面的if语句不成立。因为i=-1。
最后s++,s这时指向数组下一个元素,即‘h’。
函数调完后,接着执行下一条printf语句,输出The
result
is:并回车
因为数组里的元素在fun函数中改过了,都是0。所以输出的都就是五个0了。
以上就是关于关于程序的输入输出全部的内容,包括:关于程序的输入输出、在程序设计中,可采用下列三种方法实现输出和输入:、C语言中的程序输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)