开关灯的问题,c语言进

问题描述:

开关灯的问题,c语言进
小明现在有87654321盏灯⊙﹏⊙b汗.
现在有编号为1~87654321的灯初始状态是全开着的,现进行如下操作:
编号是1的倍数的灯拨一下开关;
编号是2的倍数的灯再拨一下开关;
编号是3的倍数的灯再拨一下开关;
…………
如此直到87654321的倍数.
问:此时还有多少盏灯仍然是开着的.
我用的是数组,但是数组元素太多了,没办法搞...指针动态分配内存也试过,貌似不怎么管用,求大神用动态分配内存的方法.指针数组随便做...
#include
#include
int main()
{
\x09int i,j=1,k=0,a[87654321];
for(i=1;i
1个回答 分类:综合 2014-11-16

问题解答:

我来补答
兄弟,不要用数组,直接用双重循环,大概是这个样子:
n=0;/*最后亮着的灯的数量*/
for (i=1;i
再问: 你的x如果不是数组或者指针的话,那n++不就没有用了?因为x是一个动态变量,每次都会变成0或1,最后计数的结果n也只有0或1这两种可能啊
再答: 针对每一个i都对x进行了初始化的,程序没有问题。

程序对每一个灯i都进行了87654321次处理(其实进行i次处理即可,怕你理解不了,用的笨方法),处理前设置了x为1,处理后检测x确定状态,程序的逻辑是正确的,而且比用数组的逻辑还简单。

希望你多想想,或者把程序输入电脑单步执行,加深理解。

如果输入程序有错,请粘贴你的程序代码。
再问: 哦哦,这样....对哦....
 
 
展开全文阅读
剩余:2000