C++学习第四周第7次
while循环例题练习
例题1:
输入一个大于3的正整数,判断它是不是素数(素数是只能被1或自己整除的数,如13,只能被1,13整除,所以它是素数;
如9,能被1,3,9整除,所以它不是素数。
int n, i = 2;
cin >> n;
while (i <=sqrt(n) ){
if (n%i == 0) {
break;
}
i++;
};
if (i>sqrt(n)) cout << endl << "是素数";
else cout << endl << "不是素数";
例题2:
循环中途的强制提前结束循环。
常用于我们事先不知道循环究竟要做多少次,理论上让它开始死循环(无没有结束),但在循环中途,我们想办法让循环停止下一-----break;
可见:结束循环有两种可能,一是循环变量不再满足循环的条件,二是循环中途提前结束循环
例:求s=1+2+3+…….n,加到哪一个数n时,总和首次超过1000。
i=1,s=0;
while(1){
s=s+i;
if(s>1000) break; //当条件满足时,退出循环,后面的i++没有被执行
i++;
}
cout<<endl<<s<<" "<<i; //不能是i-1
例题3:
多重循环(循环嵌套)
引例:模仿两位数一个电度表走动过程
int b10 = 0, b1 ;
while (b10 <= 9)
{
b1 = 0;
while (b1 <= 9)
{ cout <<setw(5)<<b10 * 10 + b1 << " ";//setw设置间隔宽度
b1++;
if (b1 == 10)cout << endl;
};
b10++;
};
例题4:
输入一个多位的整数且个位不为0,反向输出它。如输入 1234,输出4321
int n,m, n2=0;
cin >> n;
while (n > 0)
{ m = n % 10;
n2 = n2 * 10 + m;
n = n / 10;
}
cout << endl << n2;