一、循环变量为字符型
试编一程序,按字典顺序输出26个字母。
流程图:
程序代码如下:
c++
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
char i;
for (i='a';i<='z';i++)//循环变量可以是整数,也可以是字符。
{
cout<<i<<' ';
}
return 0;
}
思考:先顺序输出26个小写英文字母,再逆序输出26个大写英文字母。
循环可以是递增型循环,也可以是递减型循环。
c++
#include <iostream>
using namespace std;
int main()
{
char i;
for(i='a'; i<='z';i++)
cout<<i<<' '; //''中有一个空格
cout<<endl;
for(i='Z';i>='A';i--)
cout<<i<<''; //''中有一个空格
return 0;
}
运行结果:
a bcde fgh ijk Im n o pqrs tuv w xy z
ZYXWVUTSRQPONMLKJIHGFEDCBA
练习:
(1)字符型变量n,其初值为'a',则表达式n+3的值是()。
A.65 B.68 C.'a' D.100
(2)阅读程序写结果。
c++
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int x,y;
char i,ans;
for (i='a';i<'f';i++)
{
x=i-'a'+1;
if (x%2==1) y=i+1;
else y=i-1;
ans=y;
cout<<ans;
}
return 0;
}
x,y,i,ans的输出:_____________________
(3)完善第11,15行程序
按字典顺序输出大小字典对照表,先输出一个大写字典,再输出一个小写字母,即AaBbCcDd.......Zz。
c++
4 #include <iostream> //包含输入输出流头文件iostream
5 using namespace std; //指明程序 使用命名空间std(标准)
6 int main()
7 {
8 int n;
9 char i,j;
10 n='a'-'A';
11 for (i='A'; ;i++)
12 {
13 cout<<i;
14 j=i+n;
15 ;
16 }
17 return 0;
18 }
二、打擂台-for语句的另一种形式
问题:试编一程序,输入10个数,输出其中最大的数。
以前学过,输入三个数求最大值时,先假设第一个数为最大值,把它赋值给max;然后,第二个数和max比较,若比max大,就把第二个数赋值给max;接着,第三个数和max比较,若比max大,就把第三个数赋值给max,有点儿类似打擂台。求10个数中的最大值可以采用同样的方法,如图示。
流程图:
c++
#include <iostream>
using namespace std;
int main()
{
float max,x;
int i;
cout<<"请输入第1个数:";
cin>>x;
max=x;
i=2;
for(;i<=10;i++)
{
cout<<"请输入第"<<i<<"个数:";
cin>>x;
if(x>max) max=x;
}
cout<<"最大的数:"<<max;
return 0;
}
注:C++语言是很灵活的,可以把循环变量赋初值语句写在for循环语句前,也可以把循环变量增值语句写在循环体中。当循环体有多个语句时,就需要用"{}"把它们复合起来,成为一个整体。
练习:
(1)从ENIAC到当前最先进的计算机,冯·诺依曼体系始终占有重要的地位。冯·诺依曼体系结构的核心内容是()。
A.采用键盘输入
B.采用半导体器件
C.采用存储程序和程序控制原理
D.采用开关电路
(2)阅读程序写结果。
c++
#include <iostream>
using namespace std;
int main()
{
long long i, ans=20;
i=2;
for(;i<ans;)
{
ans-=i;
i+=3;
}
cout<<"i="<<i<<' '<<"ans="<<ans<<endl; //''中有一个空格
return 0;
}
i,ans输出:_______________________
3.完善程序。
输入n个数,输出最小的数。
c++
#include <iostream>
using namespace std;
int main()
{
float min,x;
int i, n;
cout<<"n=";
____________;
cout<"请输入第1个数:";
cin>>x;
min=x;
for(i=2;_________;i++)
{
cout<"请输入第"<<i<"个数:";
cin>>x;
if(___)min=x;
}
cout<<"最小的数:"<< min;
return 0;
}
三、break语句
问题:试编一程序,输入一个自然数,判断是不是素数。
素数,一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。如2,3,5,7,11,13,17等是素数,4,6,8,9,10,12,14,15等不是素数是合数,而1既不是素数也不是合数。
为了判断某数n是否为素数,一个最简单的办法是用2,3,4,5,·,n-1这些数逐个去除n,看能否除尽。只要能被其中的一个数除尽,n就不是素数,只有n不能被2~n-1之间的所有数除尽时才是素数。流程图如图
C++
#include <iostream>
using namespace std;
int main()
{
long long i,n;
bool flag;
cout<<"n=";
cin>>n;
flag=true;
for(i=2;i<n;i++)
if(n%i==0)
{
flag=false;
break;
}
if(flag) cout<<"是素数";
else cout<<"不是素数";
return 0;
}
注:break 语句是提前结束整个循环过程,不再判断执行循环的条件是否成立。continue语句只是结束本次循环,而不是终止整个循环的执行。
练习:
(1)在计算机中,Pentium(奔腾)、酷睿、赛扬等是指()。
A.显示器的型号
B.硬盘的型号
C.CPU的型号
D.生产厂家名称
(2)阅读程序写结果。
c++
#include <iostream>
using namespace std;
int main()
{
int i, p, ans=0;
p=1;
for(i=1;i<400;i+=3)
{
p*=i;
ans+=p:
if(ans>=25)break;
}
cout <<"ans="<< ans <<endl;
returm 0;
}
i,p,ans输出:________________
(3)完善程序。
输入一个数,判断其是不是素数。
c++
#include <iostream>
using namespace std;
int main()
{
int count=0;
long long i, n;
_________________;
for(i=2; i<n;i++)
if(n%i==0)count++;
if(___)cout<"素数";
else cout<<"不是素数";
return 0;
}
四、数位分离
问题:水仙花素雅端庄,清秀俊逸,香气馥郁。数学上有一种数称为水仙数。所谓水仙花数是一个三位数,它等于自己各个数位上数字的立方和。如153,它百位上的数字是1,十位上的数字是5,个位上的数字是3,13+53+33是153,等于它自己,因此153是水仙花数。
试编一程序,求出所有的水仙花数。
求水仙花数,要先学会分离百位、十位、个位上的数。153/100可以得到百位上的数字,(153/10)%10或(153%100)/10可以得到十位上的数字,153%10可以得到个位上的数字。
水仙花数是一个三位数,可以通过for循环把100~999所有的三位数都枚举出来,然后对每一个数进行计算和判断,若是水仙花数则输出。流程图如下:
c++
#include <iostream>
using namespace std;
int main()
{
int ge,shi,bai,i;
cout<<"水仙花数"<<endl;
for(i=100;i<1000;i++)
{
bai=i/100;
shi=(i/10)%10;
ge=i%10;
if (bai*bai*bai+shi*shi*shi+ge*ge*ge==i)
cout<<i<<" ";
}
return 0;
}
可以增加一个计数器变量count,用于统计水仙数的个数。
练习:
(1)计算机有计算功能,那么这个"计算"是在( )中完成的。
A.内存 B.中央处理器 C.硬盘 D.显卡
(2)阅读程序写结果。
c++
#include <iostream>
using namespace std;
int main()
{
int a0=0, al=1, a2, i, n;
cin>>n;
for(i=2;i<n;i++)
{
a2=a0+al;
cout << a2 << endl;
a0=al;
al=a2;
}
return 0;
}
输入:5
a0,a1,a2,i,n输出为__________________________
(3)完善程序。
"消消乐"是一款老少皆宜的益智类游戏,游戏规则是找出三张及以上相同的连在一起的牌就可以消除。请编程找出三位数中可以玩"消消乐"的数,即个位、十位与百位上的数字相同。如222可以消除,123无法消除。
c++
#include <iostream>
using namespace std;
int main()
{
int ge, shi, bai, i;
for(i=100;i<1000;i++)
{
_________________;
shi=(i/10)%10;
ge=i%10;
if(______)
cout <<i<<endl;
}
return 0;
}