循环嵌套的综合应用(一)

知识目标

    回顾循环嵌套的综合应用

学习目标

    熟练应用循环嵌套

一讲

输出 M-N 年所有的闰年

问题描述:

输出 m 年至 n 年之间(包括 m 年和 n 年且 0<m<=n<10000)所有的闰年,每个年份之间用一个空格隔开,每行最多十个数字。

样例输入:

1800 2000

样例输出:

1804 1808 1812 1816 1820 1824 1828 1832 1836 1840

1844 1848 1852 1856 1860 1864 1868 1872 1876 1880

1884 1888 1892 1896 1904 1908 1912 1916 1920 1924

1928 1932 1936 1940 1944 1948 1952 1956 1960 1964

1968 1972 1976 1980 1984 1988 1992 1996 2000

思维过程:

循环 m-n 之间所有的年份 >> 判断是否为闰年 >> 调整输出格式,每行十个数字换行 

过程分析:

第一步:循环 m-n 之间的所有年份:

int m,n;
cin>>m>>n;
for(int i=m;i<=n;i++){

}

第二步:判断是否为闰年:

/* 1 >能够被 400 整除
   2 >能被 4 整除并且不能被 100 整除
*/
if(i%400==0||i%100!=0&&i%4==0){
}

第三步:调整输出格式,超过十个数字需要换行

/*
1.需要一个变量 k 统计输出数字个数
2.使用if 语句判断,输出数字个数是 10 的整倍 数就需要换行,可以使用 if(k%10==0)
3.要保证每次只换一行
*/
int m,n,k=0;
cin >> m >> n;
for(int i=m;i<=n;i++){
    if(i%400==0||i%100!=0&&i%4==0){
        cout << i << " ";
        k++;
    }
    if(k%10==0){
        cout << endl;
    }
}

完整代码:

#include<iostream>
using namespace std;
int main(){
    int m,n,k=0;
    bool flag = true;
    cin>>m>>n;
    for(int i=m;i<=n;i++){
        if(i%400==0||i%100!=0&&i%4==0){
            cout << i << " ";
            k++;
            flag = false;
        }
        if(k%10==0&&flag==false){
            cout << endl;
            flag = true;
        }
    }
    return 0;
}

符串比较大小

问题描述:

任意输入 n 个字符,根据 ASCII 码值的大小,输出其中 ASCII 码最大和最小的字符。

样例输入:

5

1 2 3 a b

样例输出:

b 1

思维过程:

输入数据 >> 比较字符大小 >> 找出最大值和最小值并输出

代码如下:

#include<iostream>
using namespace std;
int main(){
    char ch;
    int n;
    char max=0, min=127;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(max<=ch)
            max=ch;
        if(min>=ch)
            min=ch;
    }
    cout << max << " " << min << endl;
    return 0;
}

 N

问题描述:   

循环嵌套的方式输出一个类似”N”的形状。 输入格式:输入一个整数 n ,代表行和列。

输出格式:

思维过程:

if(j==1 || j==i || j==n) 
    cout << "*";         
    else
        cout << " ";
    cout << endl;

 整代码:

#include <iostream>
using namespace std;
int main(){
int i,j,n;
cin >> n;
for(i=1;i<=n;i++){
    for(j=1;j<=n;j++)
        if(j==1 || j==i || j==n)
            cout << "*";
        else 
            cout << " ";
        cout << endl;
    }
    return 0;
}

问题描述 

已知有 1 元, 2 元, 5 元的钱各 100 张,需要你凑出 20 元,求共有 多少种方法;

样例输出:

29

整代码:

#include<iostream> 
using namespace std; 
int main(){ 
    int money=0,n=0;
    for(int i=0;i<=20;i++){
        for(int j=0;j<=10;j++){
            for(int k=0;k<=4;k++){
                money=i+2*j+5*k;
                if(money==20){
                    n++;
                } 
            }
        }
    }
    cout << n;
    return 0;
}

创作不易,请多多鼓励!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值