c语言分析题:下面程序运行的结果为n=4,请说明详细的过程,谢谢

作者&投稿:威牲 (若有异议请与网页底部的电邮联系)
关于C语言的一道题:n的值为2, n+=n-=n*n 最后n的值是多少?求过程谢谢了哦!~

赋值运算符
从右向左计算,因此先计算-=运算符,即n-=n*n,即n=n-n*n=2-4=-2;然后计算+=运算符即n+=n,即n=n+n;因为这时n=-2所以n=-2-2=-4;结果n的值为-4。

首先,main里面有个变量y,fun里面也有一个y,为方便起见,下面解释中分别记做main.y与fun.y,对x的操作不改变n,所以下面不讨论x的改变。
首先,定义的时候 main.y=n即main.y=1;
然后执行fun()两次
第一次执行fun():
fun.y=10;
然后n= n+10=11
fun.y = fun.y+n=21
第二次执行fun():
fun.y = 10 //因为是动态变量,每次重新初始化fun.y
然后n=n+10=21; <----答案出来了
fun.y=fun.y+n=31

所以最后结果是
n=21

刚刚开始第一次for循环,i=2,n=0
进入do-while循环,i%3为非零,continue。到while处判断,!i为零,跳出do-while循环。
n++,第一次for循环结束,i++

刚刚开始第二次for循环,i=3,n=1
进入do-while循环,i%3为零,执行n++。到while处判断,!i为零,跳出do-while循环。
n++,第二次for循环结束,i++

刚刚开始第三次for循环,i=4,n=3
进入do-while循环,i%3为非零,continue。到while处判断,!i为零,跳出do-while循环。
n++,第三次for循环结束,i++

刚刚进入第四次for循环,i=5,n=4。这时i<5为零,跳出for循环。

输出n,n=4。

初始:n=0
for循环中i从2到4
i=2循环中:do while循环中n++没有执行,下面的n++执行,故n=1
i=3: do while循环中n++执行,n=2;下面的n++执行,n=3
i=4:do while循环中n++没有执行,下面的n++执行,故n=4

第一次for i=2

i%3=2 if成立 跳出 n++; n=1
第二次for i=3
i%3=0 if不成立 n++ n=2; while(!i)不成立 跳出循环 n++ n=3;
第三次for i=4
i%3=1 if成立 跳出 n++ n=4

第四次 for i=5 不成立 跳出for
输出n=4


c++程序分析题:写出下列程序的输出结果
第一个答案:5 7(注意回车)第二个答案:5 4 第三个答案:结果2 第四个答案:z:3 第一个答案由于a++运算在后面,所以会先执行输出再+1 第二个答案由于是--b,运算在前面,就先做运算 第三个答案因为计算机非0即真,0是假,然后非一下就成真 第四个答案是三目运算符,?前面是条件,成真...

帮忙分析分析下面一道C语言编程
此题关键在于while(i++<7)第一次循环 i=0,i++<7,即0<7,比较完成后,i+1=1,p[1]=12,j=0 第二次循环 i=1,i++<7,即1<7,比较完成后,i+1=2,p[2]=13,j=13 第三次循环 i=2,i++<7,即2<7,比较完成后,i+1=3,p[3]=14,j=13 第四次循环 i=3,i++<7...

C语言的初级上机题,阅读下面的程序并分析其运行结果。
A:不管你输入什么数字,结果都是OK!分析:对if中的条件表达式来看,他的格式是x=1.23,咋一看,好像是判断输入的值与1.23比较,但是,你要明白,C中一个=是赋值的意思,而两个==是判断的意思,完全是不同的运算符。所以,这个x=1.23就编程了赋值的意思了,可不是判断哦。那么,判断在哪儿呢...

c语言程序题,求运行结果,同时分析下
第一次进入循环之前m=0,n=0;进去循环,n>=10条件不符号,继续向下执行,执行了m++,此时m的值变为1,n的职位0,不符合n对3取余为1的条件,继续向下执行,n += 2 = n + 2 = 0 + 2 = 2;所以第一次循环会打印出 m = 1, n = 2;第二次进入循环跟第一次一样的顺序执行,会打印...

C语言程序分析题,求详细过程
i的初始值为1 下面是一个循环 当i+1之后的值对3求余 如果不等于2就跳出本次循环 继续执行循环直到i满15 否则,就执行输出i值 这题 就是找除以3余2的值 最后为2 5 8 11 14 (注意++i是使用i前先使i加1)我运行了的~~

C语言程序分析题,答案是12.怎么算的呀,麻烦详细写一下过程。
这是一个递归程序,然后利用指针和递归结合,把数组遍历课一遍,三个都加起来了,所以是12

C语言程序分析题,求详细步骤
include <stdio.h>#include <Windows.h>int main(){int a = 12345;float b = -987.345, c = 15.5;printf("a=%4d\\n", a);\/\/4d代表输出宽度为4个字符的整数,若整数宽度大于4,则宽度限定无效,正常输出5个字符printf("b=%10.2e\\n", b);\/\/e代表以科学计数法输出浮点数,小数点.2...

C语言 程序分析题 求详解
这个程序应该是把十进制数转换成二进制数输出 include <stdio.h> \/\/ 头文件 void main(){ int a,b[10],c,i=0; \/\/ a存储待转换的十进制数,b[10]存储转换后的二进制位,\/\/ c 是存储余数 ,printf("输入一个整数\\n");scanf("%d",&a); \/\/ 输入需转换的十进制数 while...

C语言1.分析下面程序的结果,并说明输出函数printf()的语法格式以及使用...
题目虽然是有了,我初看题目好像很简单,好像有一个完整的疑问句。但是,打开问题一看我凉了,这样的问题实在是超过了我的能力范围啊,这太难了,我答不上来啊!恳请楼主把“下面程序”也粘贴过来吧。

C语言程序分析题:急求!!
1有错。struct s1 { char *s;int i;struct s1 *s1p;};\/\/改为:struct s1 { char s[20];int i;struct s1 *s1p;};\/\/后,运行结果:0 e 1 i 2运行结果:20 3运行结果:1 5 3 8 4 9 -4 6 4 char *conj(char *s, char *t){ char *p=s;while(*s)__s++___;wh...

衡南县13264025903: C语言:下面程序的运行结果是() -
益裘塞可: 因为i=3;进入switch(i)后,执行a+=3;后a的值是3;因为没有break语句,它并没退出switch()语句,所以又执行到a+=2.a值变成了5.接着,执行break语句,退出switch(),执行printf().所以选B

衡南县13264025903: C语言 分析下列程序的运行结果 -
益裘塞可: 1、输出为:1 if条件语句中,当()中的值为零时,条件为假,非零时条件为真; 由于逻辑运算2&&3结果为1,故条件为真,程序执行a=1语句; 最终输出为1 2、输出为:7 运行switch(1)时,将执行case(1)语句,并接着往下执行直至遇到break...

衡南县13264025903: C语言,下面程序运行的结果是 -
益裘塞可: a<b<c你理解错了,在c语言里不能这样用的,只能写成a<b && b<c,a<b<c在c语言里的真正意思是(a<b)<c,而(a<b)给出的结果是真(1)或假(0),所以其实a<b<c就是1或者0跟c比较.第一次比较,a<b得1(也就是说a<b是真),1比c(=2)小,执行程序,使得a=2,b=1,c=1 第二次比较,a<b得0(也就是说a<b是假),0比c(=1)小,执行程序,使得a=1,b=2,c=0 第三次比较,a<b得1(也就是说a<b是真),1比c(=0)大,不执行程序,所以最后的结果还是a=1,b=2,c=0

衡南县13264025903: 在C语言中,下面程序的执行结果是 ( ) -
益裘塞可: a+=SUM(i+j)/SUM(i+j); 相当于 a=a+SUM(i+j)/SUM(i+j);=a+i+j*i+j+2/i+j*i+j+2=2+1+1*1+1+2/1+1*1+1+2=2+1+1+1+2+1+1+2=11

衡南县13264025903: 下面程序c语言中运行的结果是什么 -
益裘塞可: 都是5.5 因为++在后面 所以先输出原有的值 然后再进行++

衡南县13264025903: C语言问题:下列程序执行后输出的结果是 -
益裘塞可: 4,D)正确,选D)——for循环调用两次f,第一次调用返回3(a=c++使a==3),第二次调用返回4(由于c是static变量,上次调用时3赋给a后c++变c为4).最后输出是第二次调用后的返回值.

衡南县13264025903: c语言.下面程序运行的结果是 - -----------.求过程 -
益裘塞可: 感觉你程序写错了.void abc(char *P) {while(*P) {*p+=2,*p++;}//*p=*p+2,将所有字符ascii码值+2;*p++,单目运算符结合性从右向左,先算p++//即指针向高位移动一位,然后再算*p(算完没存,没有意义,所以这里可以将*p++前的*去掉) } main() {char str[5]=”abcd”; abe(str); //应该是abc(str);你函数名写错了 printf(”%S”,str); } 这样程序输出结果应该就是cdef了.另外注意所有标点请用英文半角

衡南县13264025903: c语言中,下面程序运行的结果是什么? -
益裘塞可: 输入2时,输出66 输入3时,输出77 输入4时,输出8 输入5时,输出88 输入6时,输出9 输入其他数字或字母时,无输出,键入时,结束程序./*2345666778889 Press any key to continue*/

衡南县13264025903: c语言题目下面程序的运行结果是 -
益裘塞可: #include main() {int a=11,b=10,c=0; a/=b+(b&&c); printf("%d\n ",a);} 我运行过了,是1选b

衡南县13264025903: 在C语言中,下列程序运行后输出的结果是什么,怎么运算的? -
益裘塞可: 如果for(c1='0',c2='9';c1<c2;c1++,c2 - -);后面的;去掉: 09 //调整c1和c2,这时候判断1<8成立 18 //调整c1和c2,这时候判断2<7成立 27 //调整c1和c2,这时候判断3<6成立 36 //调整c1和c2,这时候判断4<5成立 45 //调整c1和c2,这时候判断5<4不成立成立,打印一个回车最终屏幕输出为: 0918273645如果for(c1='0',c2='9';c1<c2;c1++,c2 - -);的;不去掉,那么printf语句会等for循环结束才打印, 这个时候经过如上所述的调整,c1和c2分别变为了5和4, 所以屏幕上会打印出: 54

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网