蓝桥杯练习0327

发布时间:2026/6/27 7:11:23

蓝桥杯练习0327 一、特殊值结束测试数据题目一字符统计!-- 这是一张图片ocr 内容为 --题目解析1、输入字符串两种方式getchar() 逐个输入getline() 整体输入2、以‘’结尾getchar(),判断最后一个字符是否为即可getline(), 通过pop_back()函数去除结尾的只计算前面的内容3、分别统计字母、数字和其他字符的个数一般我们按照ch 0 ch 9 这种方式来进行判断还可以使用库函数cctype来判断islower 是否为小写字母isupper 是否为大写字母isalpha 是否为字母isdigit 是否为数字#includeiostream using namespace std; ​ //定义全局变量 int Letters; int Digits; int Others; int ch0; ​ //使用getchar()逐个字符读取然后统计 int main() { while((chgetchar()) ! ?) { //方法一传统判断方式 if((ch a ch z) || (ch A ch Z)) Letters; else if(ch 0 ch 9) Digits; else Others; } ​ //输出三行每行包含一个整数依次是字母个数数字个数其他符号个数 cout Letters Letters endl; cout Digits Digits endl; cout Others Others endl; return 0; } //方法二利用库函数cctype if(islower(ch) || isupper(ch)) Letters; else if(isdigit(ch)) Digits; else Others; if(isalpha(ch)) Letters;2.利用getline()一次性读取完整个字符串再来统计#includeiostream #includecctype #includestring using namespace std; ​ int Letters; int Digits; int Others; int ch0; ​ int main() { string s; //输入字符串 getline(cin,s); //尾部删除一个字符去掉相当于以结束 s.pop_back(); ​ //利用范围for循环解决这一问题 for(auto ch:s) { if(isalpha(ch)) Letters; else if(isdigit(ch)) Digits; else Others; } cout Letters Letters endl; cout Digits Digits endl; cout Others Others endl; return 0; }题目二多组数据测试ab!-- 这是一张图片ocr 内容为 --#includeiostream using namespace std; ​ int a 0; int b 0; ​ int main() { while(cin a b,a || b) { cout ab endl; } return 0; }二、含空格的输入技巧题目三统计数字字符!-- 这是一张图片ocr 内容为 --#includeiostream #includestring using namespace std; ​ int main() { string s; int con 0; //方法一利用getline()读取整个字符再使用范围for和isdigit()统计数字字符出现的个数 getline(cin,s); for(auto e:s) { if(isdigit(e)) con; } cout con endl; return 0; }#includeiostream #includestring #includecctype using namespace std; ​ int main() { string s; int con 0; //方法二逐个字符读取cin //遇到空格就停止在计算时要手动按CtrlZ停止 while(cin s) { for(auto e:s) { if(isdigit(e)) con; } } cout con endl; return 0; }!-- 这是一张图片ocr 内容为 --四、数字的特殊处理方式当我们程序运⾏的时候在控制台输⼊ 列程序会根据代码中的数据类型可能将 123 的时候这时的 123 是三个字符 123 解析成整型也可能将 123 是⼀个字符序 123 解析成字符串。题目四小乐乐该数字题目解析根据上述描述我们有两种解题思路一、当成一个整形来做1.获取末尾数字 %102.去除末尾数字 /103.判断奇偶 %24.输出为整形pow(10,i)二、当成一个字符串来做如果把数字当成字符串来做那么在判断奇偶时我们就用到了ASCII码值如下我们可以发现对应%2也可以得到相应结果那么我们就通过数组来赋值最终我们得到的是字符串如果要以整形输出我们就需要使用stoi函数!-- 这是一张图片ocr 内容为 --这里使用两种方法来解答这道题一个是利用整形二是将其视作一个字符串来用1.把数字视作整形这里我们用到了获取去除每一位数字的方法%10 /10.以及库函数中计算次方数的函数#includeiostream #includecmath using namespace std; ​ int main() { //1.输入一个整数 int n0; cin n; int ret; int i0; //2.获取每一位数字%10依次去除每一位数字/10 while(n) { //获取数字并判断其是奇数还是偶数 %2:1则为真0则为假 if(n % 10 % 2) ret 1 * pow(10,i); else ret 0 * pow(10,i); //去除数字的最后一位 n / 10; i; } cout ret endl; return 0; }#includeiostream #includestring using namespace std; //这里我们将这个数字视为字符串将字符串中的每一位转换为ASCII码值来进行转换 int main() { string s; cin s; int i 0; for(i 0;i s.size();i) { if(s[i] % 2 ) s[i] 1; else s[i] 0; } cout s endl; return 0; }!-- 这是一张图片ocr 内容为 --这里运行出来我们发现当输入222时我们得到的结果是000这是因为我们使用的是字符串输出那么这里我们使用stoi()进行转换成整数进行输出即可cout stoi(s) endl;!-- 这是一张图片ocr 内容为 --

相关新闻