2月8日知识点

 13 届蓝桥杯 C++ 青少组中 / 高级组选拔赛 2022  3  13 日真题

答案代码

#include<iostream>
using namespace std;
int main(){
char a;
cin>>a;
cout<<char(a+32);

return 0;

 14 届蓝桥杯 C++ 青少组中 / 高级组选拔赛 (STEMA)2022  8  21 日真题

}

解题思路

代码功能概述
 
这段 C++ 代码的主要功能是从用户那里获取一个字符输入,若该字符是大写字母,将其转换为对应的小写字母并输出;若输入不是大写字母,也会按照 ASCII 码的规则对输入字符对应的 ASCII 码值加上 32 后输出对应的字符。

代码详细分析
1. 头文件和命名空间
 
收起

cpp

#include <iostream>
using namespace std;
 
#include <iostream>:引入标准输入输出流库,使得程序可以使用 cin 进行输入操作,使用 cout 进行输出操作。
using namespace std;:使用标准命名空间,这样在代码中就可以直接使用 std 命名空间下的对象和函数,而无需添加 std:: 前缀。
2. 主函数部分
 
收起

cpp

int main() {
    char a;
    cin >> a;
 
char a;:声明一个字符型变量 a,用于存储用户输入的字符。
cin >> a;:从标准输入读取一个字符,并将其存储到变量 a 中。
3. 字符转换与输出
 
收起

cpp

    cout << char(a + 32);
    return 0;
}
 
a + 32:在 ASCII 编码中,大写字母和对应的小写字母的 ASCII 码值相差 32。例如,大写字母 'A' 的 ASCII 码值是 65,对应的小写字母 'a' 的 ASCII 码值是 97,97 - 65 = 32。所以,当输入是大写字母时,将其 ASCII 码值加上 32 就可以得到对应的小写字母的 ASCII 码值。
char(a + 32):将计算得到的 ASCII 码值强制转换为字符类型。
cout << char(a + 32);:将转换后的字符输出到标准输出。
return 0;:表示程序正常结束。
代码存在的问题及改进建议
问题
 
代码没有对输入的字符进行判断,如果输入的字符本身就不是大写字母,那么加上 32 后输出的结果可能不是预期的,可能会输出一些不可打印的字符或者不符合需求的字符。

  • 答案代码

  • #include<iostream>
    using namespace std;
    int main(){
    int a,b;
    cin>>a>>b;
    int cnt=0;
    for(int i=a;i<=b;i++){
    if ((i % 10 + i / 10 % 10 + i / 100) == 8)    
    cnt++;
    }
    cout<<cnt;

    return 0;
    }

  • 解题思路

  • 代码功能概述
     
    你提供的这段 C++ 代码的主要功能是统计用户输入的两个正整数 a 和 b(其中 a 小于等于 b)之间(包含 a 和 b),各个数位上数字之和等于 8 的整数的个数。

    代码详细分析
     
    头文件与命名空间

    收起

    cpp

    #include <iostream>
    using namespace std;
     
    #include <iostream>:引入标准输入输出流库,使得程序可以使用 cin 进行输入操作,使用 cout 进行输出操作。
    using namespace std;:使用标准命名空间,这样在代码中就可以直接使用 std 命名空间下的对象和函数,而无需添加 std:: 前缀。
    主函数部分

    收起

    cpp

    int main() {
        int a, b;
        cin >> a >> b;
        int cnt = 0;
     
    int a, b;:声明两个整型变量 a 和 b,用于存储用户输入的两个正整数。
    cin >> a >> b;:从标准输入读取两个整数,并分别赋值给 a 和 b。
    int cnt = 0;:声明一个整型变量 cnt 并初始化为 0,用于统计满足条件(各数位数字之和为 8)的整数的个数。
    循环遍历与条件判断

    收起

    cpp

    for (int i = a; i <= b; i++)
        if ((i % 10 + i / 10 % 10 + i / 100) == 8)
            cnt++;
     
    for (int i = a; i <= b; i++):使用 for 循环遍历从 a 到 b 的所有整数。
    i % 10:计算 i 的个位数。
    i / 10 % 10:先将 i 除以 10 去掉个位数,再对结果取模 10,得到 i 的十位数。
    i / 100:将 i 除以 100,得到 i 的百位数(这里假设 i 是三位数,如果 i 是两位数,i / 100 的结果为 0)。
    if ((i % 10 + i / 10 % 10 + i / 100) == 8):判断 i 的个位数、十位数和百位数之和是否等于 8,如果等于 8,则将计数器 cnt 加 1。
    输出结果

    收起

    cpp

    cout << cnt;
    return 0;
     
    cout << cnt;:将统计得到的满足条件的整数的个数输出到标准输出。
    return 0;:表示程序正常结束。

  •  14 届蓝桥杯 C++ 青少组中 / 高级组选拔赛 (STEMA)2022  8  21 日真题

  • 答案代码

  • #include<iostream>
    using namespace std;
    int main(){
    int n;
    cin>>n;
    cout<<n%10;
    return 0;
    }

  • 解题思路

  • 这道题非常简单

  • 只需要最后用百分号求出3就好了。!

答案代码

#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=100;i<=n;i++){
if(i%10!=3 and i%100/10 and i/100!=7){
cout<<i<<endl;    
    
}
}

return 0;
}

解题思路

代码功能概述
 
这段 C++ 代码的主要功能是统计在 100 到用户输入的正整数 N(范围是 100 ≤ N < 100000)之间,满足以下三个条件的正整数的个数:

 
正整数的个位数不为 3。
正整数的十位数不为 5。
正整数的百位数不为 7。
代码详细分析
1. 头文件与命名空间
 
收起

cpp

#include <iostream>
using namespace std;
 
#include <iostream>:引入标准输入输出流库,使得程序可以使用 cin 进行输入操作,使用 cout 进行输出操作。
using namespace std;:使用标准命名空间,这样在代码中就可以直接使用 std 命名空间下的对象和函数,而无需添加 std:: 前缀。
2. 主函数部分
输入部分
 
收起

cpp

int main() {
    int N;
    cout << "请输入一个满足 100 ≤ N < 100000 的正整数 N: ";
    cin >> N;
 
int N;:声明一个整型变量 N,用于存储用户输入的正整数。
cout << ...:向用户输出提示信息,告知用户输入的要求。
cin >> N;:从标准输入读取一个整数,并将其赋值给变量 N。
计数变量初始化
 
收起

cpp

    int count = 0;
 
声明一个整型变量 count 并初始化为 0,用于统计满足条件的正整数的个数。
遍历与条件判断
 
收起

cpp

    for (int i = 100; i <= N; ++i) {
        int unitsDigit = i % 10;
        int tensDigit = (i / 10) % 10;
        int hundredsDigit = (i / 100) % 10;
 
        if (unitsDigit != 3 && tensDigit != 5 && hundredsDigit != 7) {
            count++;
        }
    }
 
for (int i = 100; i <= N; ++i):使用 for 循环遍历从 100 到 N 的所有整数。
int unitsDigit = i % 10;:通过取模运算得到当前整数 i 的个位数。
int tensDigit = (i / 10) % 10;:先将 i 除以 10 去掉个位数,再对结果取模 10,得到当前整数 i 的十位数。
int hundredsDigit = (i / 100) % 10;:先将 i 除以 100 去掉个位数和十位数,再对结果取模 10,得到当前整数 i 的百位数。
if (unitsDigit != 3 && tensDigit != 5 && hundredsDigit != 7):判断当前整数的个位数是否不为 3、十位数是否不为 5 以及百位数是否不为 7,如果都满足,则将计数器 count 加 1。
输出结果
 
收起

cpp

    cout << "100 到 " << N << " 之间满足条件的正整数有 " << count << " 个。" << endl;
    return 0;
}
 
cout << ...:将统计得到的满足条件的正整数的个数输出到标准输出。
return 0;:表示程序正常结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值