问题
填空题
有以下程序段,且变量已正确定义和赋值。for(s=1.0, k=1; k<=n;k++) s=s+1.0/(k*(k/1));printf("s=%f\n\",s); 请填空,使下面程序段的功能与之完全相同。s=1.0; k=1;while( 【10】 ) { s=s+1.0/(k*(k+1)); 【11】 ; }printf("s-=%f\n\n",s);
答案
参考答案:[10]k<=n 或 n>=k [11]k++
解析: while语句和for语句的作用都是循环控制语句的执行,两者之间是可以互相转换的。将while(EXP)转换为for语句可以写成for(;EXP;);将 for(EXP1;EXP2;EXP3)转换为while语句可以写成:EXP1;while(EXP2){... EXP3;}。故本题的两个空分别应填写for语句的第2和第3个表达式。即k<=n或n>=k和k++。当然也可写成与之等价的其他形式。