#include<iostream>
using namespace std;
int main(){
int n;
cout<<"enter a positive integer : ";
cin>>n;
cout<<"number "<<n<<" factors ";
for(int k=1;k<=n;k++)
if(n%k==0)
cout<<k<<" ";//构造各个数字之间的间隔
cout<<endl;
return 0;
}
这里面的k的生存域只有在for循环中中,循环结束k就会消失,看一下程序表现
#include<iostream>
using namespace std;
int main(){
int n;
cout<<"enter a positive integer : ";
cin>>n;
cout<<"number "<<n<<" factors ";
for(int k=1;k<=n;k++)
if(n%k==0)
cout<<k<<" ";//构造各个数字之间的间隔
cout<<endl;
cout<<k<<endl;//观察k的范围和报错
return 0;
}
改变k的生存域后,
#include<iostream>
using namespace std;
int main(){
int n,k;
cout<<"enter a positive integer : ";
cin>>n;
cout<<"number "<<n<<" factors ";
for(k=1;k<=n;k++)
if(n%k==0)
cout<<k<<" ";//构造各个数字之间的间隔
cout<<endl;
cout<<k<<endl;
return 0;
}
注意到k的值是13,为什么不是12,因为本质上是k++,不是++k。
利用while来改写
#include<iostream>
using namespace std;
int main(){
int n,k=1;
cout<<"enter a positive integer : ";
cin>>n;
cout<<"number "<<n<<" factors ";
while(k<=n) {
if (n % k == 0)
cout << k << " ";//构造各个数字之间的间隔
k++;
}
cout<<endl;
cout<<k<<endl;
return 0;
}