C语言的一道题。 这道题怎么算啊? x*=x+1怎么个运算过程。 还有for语句中i<x中的x会变 关于C语言的一道题. x=6; x+=x-=x*x;

\u6025\u95eec\u8bed\u8a00\u4e2d y[j++]=x[i];x[i]=-1\uff1b \u662f\u4ec0\u4e48\u610f\u601d\u554a\uff1f\u597d\u591a\u7684\u673a\u8003\u586b\u7a7a\u9898\u4e2d\u90fd\u6709\u8fd9\u53e5 \u4ec0\u4e48\u610f\u601d\u5462 \u8c22\u8c22\u5927\u5bb6\u4e86

for(i=j=p;i<N;i++)
if(x[i]>av){
y[j++]=x[i];x[i]=-1;} \u5c31\u662f \u5982\u679cx[i]\u6bd4\u5e73\u5747\u6570av\u5927 \u90a3\u4e48\u5c31\u5148\u653e\u5230\u6570\u7ec4y\u91cc\u9762\uff08\u4ece\u524d\u5f80\u540e\u7684\u653e\uff09\u5e76\u5c06x[i]\u7684\u503c\u8bbe\u4e3a-1

for(i=0;i<N;i++)
if(x[i]!=-1)y[j++]=x[i]; \u73b0\u5728\u5df2\u7ecf\u5c06x\u6570\u7ec4\u91cc\u9762\u6bd4\u5e73\u5747\u5c5e\u5927\u7684\u653e\u5230y\u91cc\u5e76\u4e14\u662f\u5de6\u9762\uff0c\u73b0\u5728\u5c06x\u6570\u7ec4\u91cc\u6bd4\u5e73\u5747\u6570\u5c0f\u7684\u653e\u5165y\u53f3\u8fb9 \uff08\u6ce8\u5e94\u8be5\u662fy[j++]\u800c\u4e0d\u662fj[j++]\uff09

for(i=0;i<N;i++)x[i]=y[i]; \u6700\u540e\u628a\u6570\u7ec4y\u91cc\u7684\u503c\u4f20\u7ed9x \u90a3\u4e48x\u5c31\u6392\u597d\u987a\u5e8f\u4e86

\u89e3\u91ca\u8fd8\u662f\u8d8a\u7b80\u5355\u8d8a\u597d \u9996\u5148\u8fd9\u662f \u590d\u5408\u8d4b\u503c\u8fd0\u7b97 "+=" "-=" \u7528\u6cd5\u4e00\u6837
\u6bd4\u5982 {x-=1 \u7b49\u4ef7\u4e8e x=x-1 }\uff1b {x+=1 \u7b49\u4ef7\u4e8e x=x+1} \uff1b \u540c\u6837\u7b49\u53f7\u540e\u9762\u53ef\u4ee5\u662f\u8868\u8fbe\u5f0f\u5982
{ x*=y+8 \u7b49\u4ef7\u4e8e x=x*\uff08y+8\uff09}\uff1b
\u6240\u4ee5\u4e0a\u9762\u7684 {x -= x*x \u7b49\u4ef7\u4e8e x = x -\uff08x * x\uff09\uff08\u52a0\u62ec\u53f7\u662f\u4e3a\u4e86\u770b\u7684\u6e05\u695a }
\u5c06x=6\u4ee3\u5165\u540e x=6-6*6= -30
x+= -30 \u7b49\u4ef7\u4e8e x=x+\uff08-30\uff09 x= - 30 - 30= - 60 \u8fd9\u5c31\u662f\u6b63\u786e\u7684\u89e3\u7b54\uff0c\u5728\u6ca1\u6709\u5176\u4ed6\u6761\u4ef6\u65f6
\u4f60\u7b97\u51fa\u6b6360\u5c31\u4e00\u5b9a\u7684\u662f\u9519\u8bef\u7684\u3002

这个题对初学者还是有一定的难度。考察点应该就在 值域 的概念的考察。
代码第二行的int x=3;这里声明了一个全局变量x。
在main函数的范围内,使用的x,也就是第二行声明的x,这里x=3.
在incre函数中,这里声明了一个static的x,表示在incre函数的执行期间,x是一个静态变量,为了和第二行的x分别开,这里将其用另外一个名字x2代替,所以整个程序执行是这样的:
首先从main函数开始执行for循环,开始i=1,i小于x,即3,所以执行incre函数,在incre函数中,x2*=x2+1,展开就是 x2=x2*(x2+1),所以x2=1*(1+1)=2,下一行打印出x2的值2.
然后执行i++,继续循环,i=2,仍然小于x,即3,所以继续执行incre函数,执行时因为x2是static变量,仍然保持上次执行完incre函数后x2的值,所以x2=x2*(x2+1) = 2*(2+1)=6,所以结果是26,。

x *= x + 1 就是 x = x * (x + 1).
x 不会变化.

这道题主要考你, 全局变量和局部静态变量的作用域.

答案是26
x*=x+1先做等号右边的运算,然后乘上等号左边的变量的值,最后把结果付给等号左边的变量

结果为26
i<x中的x是全局变量的值x=3

而输出的x,则是static x=1中的x

这个有一个原因,默认最靠近代码定义的变量有效

扩展阅读:扫一扫题目出答案 ... 答题神器一扫就出答案 ... 扫一扫一秒出答案 ... 免费扫一扫找答案 ... 能拍题找答案的软件 ... c#入门基础知识 ... 扫一扫自动答题 ... 免费作业拍照出答案 ... 免费拍照答题一秒出答案 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网