爱问知识人 爱问教育 医院库

有关2道C程序题

首页

有关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++的困扰

感谢哪位高手帮我讲解下,尽量详细点,谢谢了

提交回答
好评回答
  • 2019-06-01 10:32:23
      楼上的解释很正确,对于第一题相信楼主已经知道了,下面对第二题给予解答,希望能对楼主有所帮助:
    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
    很罗嗦,希望对你有帮助。
      

    丹***

    2019-06-01 10:32:23

其他答案

    2019-06-01 10:46:28
  • 赞同楼上!!

    足***

    2019-06-01 10:46:28

  • 2019-06-01 10:35:06
  • 第一题很简单,#不是continue执行完执行的,而是输出*号后紧接着执行的,输出*号后,if结构执行完毕,继续执行就会打印#号。单步跟踪下就明白了。
    第二个程序,子循环中,每次s都被初始化为1,故前几次循环没有任何效果,只有最后一次起作用,此时k=4,s本来=1,1+4+5=10.
    建议养成单步调试的习惯。
    

    V***

    2019-06-01 10:35:06

类似问题

换一换
  • 软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):