文章目录
- 十 循环
- 10.1 字符与循环
- 10.2 数与循环
- 十一 循环嵌套——不拘一格
- 11.2数学与循环——脉脉相通
十 循环
10.1 字符与循环
题1.1:循环输出26个字母,从A-Z。
for(char i = 'A';i<='Z';i++){
cout<<i<<" ";
}
题1.2:输入某一个字母,依次输出这个字母到Z(z)的值,并统计个数。
输入格式:x 输出格式:x y z 3
或输入格式:Y 输出格式:Y Z 2
char n;
int cnt=0;
cin>>n;
if(n>='A' && n<='Z'){
for(char i=n;i<='Z';i++){
cnt++;
cout<<i<<" ";
}
}
else if(n>='a' && n<='z'){
for(char i=n;i<='z';i++){
cnt++;
cout<<i<<" ";
}
}
cout<<cnt;
题1.3:输入某一个大写或小写字母,如果输入是大写,依次输出这个字母到Z的小写值。如果输入是小写,依次输出这个字母到z的大写值。
输入格式:x 输出格式:X Y Z
或输入格式:Y 输出格式:y z
char n;
cin>>n;
if(n>='A' && n<='Z'){
n = char(n+32);
for(char i=n;i<='z';i++){
cout<<i<<" ";
}
}
else if(n>='a' && n<='z'){
n = char(n-32);
for(char i=n;i<='Z';i++){
cout<<i<<" ";
}
}
10.2 数与循环
题2.1:要读入 n 个整数,统计其中正数、零、负数的个数并输出。
输入格式:
7
1 -1 0 3 5 0 -5
输出格式:
3 2 2
int n,a,cnt1=0,cnt2=0,cnt3=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
if(a>0){
cnt1++;
}
else if(a<0){
cnt2++;
}
else{
cnt3++;
}
}
cout<<cnt1<<" "<<cnt3<<" "<<cnt2;
return 0;
题1:菲波那契数列,数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。1 1 2 3 5 8 13 21 34 55 …
请输入数值n,求斐波那契数列从1到第n个数的值?
int n,a,b,t;
cin>>n;
for(int i=1;i<=n;i++){
if(i<=2){
a = 1;
b = 1;
cout<<a<<" ";
}
else{
t = a;
a = b;
b = t+a;
cout<<b<<" ";
}
}
题2:(银行存利息问题) 农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为R (0到20之间的整数)。约翰现有总值为M的钱(100到1,000,000之间的整数)。他清楚地知道自己要投资Y年(范围0到400)。请帮助他计算最终他会有多少钱,并输出它的整数部分。
某一年的利息 = 本金M * 年利率R%
某一年的钱 = 利息 + 本金
请你编程输入本金m,利率r,年数y;算出每一年的总钱数。
double m,r,y;
cin>>m>>r>>y;
for(int i=1;i<=y;i++){
m += m * r / 100;
cout<<i<<"年后的本金:"<<m<<endl;
}
题3:(猴子吃桃子问题)一群小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再吃一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。
int n=1;
for(int i=10;i>=1;i--){
cout<<i<<"天的桃子数:"<<n<<endl;
n = (n+1)*2;
}
十一 循环嵌套——不拘一格
在循环里面又加一个循环,这样子就叫循环嵌套。
可以知道,外层循环控制行,内层循环控制列。
可以看到99乘法表是一个矩阵,我们要变成下面真正的乘法表‘三角形’样子,也就是上图如何变成下图:
// 1.乘法表
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
cout<<i<<"*"<<j<<"="<<i*j<<" ";
}
cout<<endl;
}
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
cout<<1<<" ";
}
else{
cout<<0<<" ";
}
}
cout<<endl;
}
升级版变化矩阵
// 随机变化矩阵
int n;
while (true){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
cout<<1<<" ";
}
else{
cout<<0<<" ";
}
}
cout<<endl;
}
cout<<endl;
if(n==0){
break;
}
}
实现打印图形正反 “*” 三角形。
int n;
cin>>n;
for(int i=n;i>=1;i--){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}
int n;
long long total=0;
cin>>n;
for(int i=1;i<=n;i++){ // 加每一个阶乘值
long long sum=1; // 为什么不放在外面赋值?
for(int j=1;j<=i;j++){ //求阶乘
sum = sum*j;
}
total += sum;
cout<<"前"<<i<<"个阶乘总值:"<<total<<endl;
}
int n,m;
cin>>n>>m;
int a=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a++<<" ";
}
cout<<endl;
}
输入 n 行,m列数,求所有偶数的和。
int n,m,sum=0,value=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>value;
if(value%2==0){
sum+=value;
}
}
}
cout<<sum;
实现‘*’等腰三角形输出,如下图:
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i;j++){
cout<<" ";
}
for(int k=1;k<=2*i-1;k++){
cout<<"*";
}
cout<<endl;
}