有关2道C程序题
#include<stdio.h> main( ) { int i; for(i=1;i<=5;i++); {if(i%2) printf("*"); else continue; printf("#"); } printf("$\n"); } 为什么输出是*#*#*#$ 我的疑问是CONTINE不是结束本次循环吗?执行到CONTINUE不是应该回到i++,那#号是怎么输出来的? int k,j,s; for(k=2;k<6;k++,k++;) {s=1; for(j=k;j<6;j++)s+=j; } printf("%d\n",s); 这个程序输出为什么是10 主要还是两个K++的困扰 感谢哪位高手帮我讲解下,尽量详细点,谢谢了
楼上的解释很正确,对于第一题相信楼主已经知道了,下面对第二题给予解答,希望能对楼主有所帮助: int k,j,s; for(k=2;k<6;k++,k++;) {s=1; for(j=k;j<6;j++)s+=j; } printf("%d\n",s); 第一步:当k=2时,执行 s=1;这时候第二个FOR循环执行j=k=2开始 得s=1+2+3+4+5=15 执行完后,执行两个K++,这两个k++是都执行的,先执行第一个k++得k=3,在执行后面那个k++得k=4 紧接着进入第二步 第二步:k=4 s在这里又给重新赋值为1,顾原来第一步执行结果s=15没任何作用 s=1,这时候执行第二个FOR循环j=k=4 得 s=1+4+5=10 执行完毕后,执行两个K++后k=6不小于6顾结束 从而输出s,所以s=10 很罗嗦,希望对你有帮助。
赞同楼上!!
第一题很简单,#不是continue执行完执行的,而是输出*号后紧接着执行的,输出*号后,if结构执行完毕,继续执行就会打印#号。单步跟踪下就明白了。 第二个程序,子循环中,每次s都被初始化为1,故前几次循环没有任何效果,只有最后一次起作用,此时k=4,s本来=1,1+4+5=10. 建议养成单步调试的习惯。
答:详情>>
答:网络技术电子邮件有了通达全球的Internet后,人们首先想到的是可以利用它来提供个人之间的通信,而且这种通信应能兼具电话的速度和邮政的可靠性等优点详情>>
答:端口:500说明:InternetKeyExchange(IKE)(Internet密钥交换)端口:1645、1812说明:RemotAuthenticatio...详情>>