
这个程序本身就没有错啊!!只是要保持一个好习惯调用函数之前要先声明
至于运行结果为什么会是这样呢前三次的reset函数的调用对i都是没有用的,因为输出的是i的值,所以i=5,i=2,i=2(第二次的时候i被赋值为i/2=2)之后调用workover,在workover中,i(此时为2)被赋值(i%i)((ii)/(2i)+4),因为i%i的值为0,则该式为0((ii)/(2i)+4), 故为0,所以在workover中输出i的值为0接着在主函数中,输出i的值为2
故运行结果为
i=5
i=2
i=2
i=0
i=2
你应该就这一句不好理解吧?
for (i =0; ch[i]>=’0’ &&ch[i]<=’9’;i+=2 )
s =10s +ch [ i ]- ‘0’;
printf (“ %d\n” , s);
分下格式,容易看。
for循环,循环进行的条件是 ch[i]是'0'字符到'9'字符之间。首先i=0,ch[0]就是 char ch[7] = {“12ab56”}; 这个字符串的第一个字符,就是'1'符合条件,进入循环的下一条语句s =10s +ch [ i ]- ‘0’; s = 0,所以10s是0,ch[0]-'0'='1'-'0' =1,2个字符串进行算术运算,取他们的asc 编码进行运算,你查下编码表就知道了,‘1’比‘0’大1然后相加 s = 0+1 =1。
然后进入循环更新式,也就是i+=2 这一条了,这个简单吧,i = i+2,开始i = 0, 现在 i=2了,然后i=2代入测试式ch[i]>=’0’ &&ch[i]<=’9’,ch [2]这次是字符数组的的第3个元素,也就是'a'了,不满足循环条件,所以不执行循环的下一条语句s =10s +ch [ i ]- ‘0’,循环结束。
然后输出s的值,s = 1,输出1
i从1到5循环,对应的b初始为1,0,1,0,1。
b-->=0是先取b的值判断是否>=0,再将b减1。
所以当b=0时,b-->=0成立,之后b=-1,b>=0不成立,但b--还会执行,b变成-2。
所以当b=0时,while(b-->=0)会执行一次,当b=1时,会执行两次。所以k++总共执行了2+1+2+1+2=8次。
n 的初始字符为 'c',由于 switch 语句中是 switch(n ++),故先执行完 switch 语句之后,n 的值才增加 1,即 n 的值为 'd'。因此,该程序的输出结果应该为:pass
函数sub中的引入参数是是形式参考,比方说第一个sub(x3, x4);
函数最先执行的语句是:int x = x3, int y = x4;//把x3跟x4的值赋给x跟y
所以函数里面改变的是x跟y的值,而x跟y在函数结束后就被清除了,所以受改变的只有全局变量x1,第一次执行sub的时候,
x = x3;
x1 = x;//x1==10;
同理,第二次的时候x1的值就等于x2了,所以x1最终值为40,其他值不变,输出结果是:
10, 20, 40, 40
以上就是关于以下程序的运行结果是_______全部的内容,包括:以下程序的运行结果是_______、下面程序的运行结果是 。、下面程序的运行结果是:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)