C++练习题

1、计算某个月有多少天

题目:从键盘输入年份和月份,输出这个月的天数。
【样例输入】2023 1

【样例输出】31

【样例输入】2020 2

【样例输出】29
提示:当输入的月份为2月份时,需要判断该年年份是否为闰年。
判断闰年的条件:年份为4的倍数并且不是100的倍数,或者年份是400的倍数。

int main(){  int year,month,day=0;cout<<"请输入年份和月份,以空格分隔:";cin>>year>>month;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;case 4:case 6:case 9:case 11:day=30;break;case 2:if(year%4==0&&year%100!=0||year%400==0){day=29;}else{day=28;}break;default:cout<<"月份输入有误。";}if(day!=0){cout<<year<<"年"<<month<<"月有"<<day<<"天";}
}

2、输出1-200之间的质数。

在控制台打印输出1-200之间所有的质数,以空格分割。

提示:只有1和这个数本身能被它自己整除的数就是质数。

int main(){bool flag; for(int i=2;i<=200;i++){flag=false;for(int j=2;j<i;j++){if(i%j==0){flag=true;break;}}if(!flag){cout<<i<<" ";}}
}

3、计算矩阵边缘元素之和

输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

输入描述

第一行分别为矩阵的行数m和列数n(m<100,n<100),两者之间以一个空格分开。
接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。

输出描述

输出对应矩阵的边缘元素和。

用例输入 1

3 3
3 4 1
3 7 1
2 0 1

用例输出 1

15
#include<iostream>
using namespace std;int main()
{int n,m;cin>>m>>n;int arr[m][n];for(int i=0;i<m;i++){for(int j=0;j<n;j++){cin>>arr[i][j];}}int sum=0;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(i==0||i==m-1){sum+=arr[i][j];}else if(j==0||j==n-1){sum+=arr[i][j];}}}cout<<sum;
}

4、判断数字位数

编写一个函数get_length(…),计算输入的正整数有多少位。

输入描述

一个正整数(不超过10位)。

输出描述

一个整数,表示输入的正整数的位数

用例输入 1

123456

用例输出 1

6
#include<iostream>
using namespace std;
int get_length(int n);
int main()
{int n;cin>>n;cout<<get_length(n);} int get_length(int n){//正整数的位数最少也有1位,所以初始值赋值为1int i=1;while(n/10!=0){n/=10;i++;}    return i;
}

5、整数重组

任意给定一个正整数,把它重新组成一个最大值和一个最小值,求出两数的差。例如:3721,可以重新组成的最大数为7321,组成的最小数为1237,两数之差为7321-1237=6084。

输入描述

x(整数1≤x≤100000)

输出描述

最大值和最小值的差

用例输入 1

3721

用例输出 1

6084
#include<iostream>
using namespace std;int X(int *a,int n){int i=0;while(n!=0){a[i]=n%10;n=n/10;i++;}//对数组元素升序排序 for(int k=0;k<i;k++){for(int j=0;j<k;j++){if(a[k]>a[j]){int t=a[k];a[k]=a[j];a[j]=t;}} }//返回整数的位数 return i;
}
int main()
{int n;cin>>n;int a[100]={};//统计输入数字的位数,并将所有数位上的数以升序存到数组a中 int count=X(a,n);int max=0,min=0;int x=1,y=1;//最小值则以数组元素从前往后结合,最大值则以数组元素从后往前结合 for(int i=0,j=count-1;i<count;i++,j--){//最小值从前往后遍历,最大值从后往前遍历 //从个位开始,依次用数位上的数字x1,x10,x100,...... min+=a[i]*x;x*=10;max+=a[j]*y;y*=10;}cout<<max-min;}

6、冰雹猜想

冰雹猜想:它首先流传于美国,不久传到欧洲,后来由一位叫角谷的日本人带到亚洲。通俗地讲,冰雹猜想的内容是这样的:任意给定一个自然数n,当n是偶数时,将它除以2,即将它变成n/2;当n是奇数时,就将它变成3n+1,……,若干步后,总会得到1。
在上述演变过程中,将每一次出现的数字排列起来,就会出现一个数字序列。
我们现在要解决的问题是:对于给定的n,求出数字序列中第一次出现1的位置。

输入描述

输入一个自然数n。输出序列中第一次出现1的位置。

输出描述

输出序列中第一次出现1的位置。

用例输入 1

6

用例输出 1

9
#include<iostream>
using namespace std;int main()
{long long n;cin>>n;long long index=0;while(true){index++;if(n==1){cout<<index;break;}if(n%2==0){n=n/2;}else{n=3*n+1;}}}

7、长方形比大小

长方形家族有个很俗气的传统:谁大谁优先。 “比大小”的规则是:

  1. 面积大的优先
  2. 面积相同时,周长长的优先

请将n个长方形按“比大小”的规则排序后,输出每个长方形的序号。长方形的序号是1~n,和长方形的输入顺序一致。

输入描述

第1行,输入一个小于100的正整数,表示长方形的个数;
接下来的n行,每行输入一个长方形的长和宽(都是正整数),中间用单个空格隔开。

输出描述

输出n个正方形的序号。每个长方形占一行。

用例输入 1

5
9 7
3 4
2 3
2 6
3 21

用例输出 1

5
1
4
2
3

代码:

#include <bits/stdc++.h>
using namespace std;
struct stu{int a;int b;int c;
};
stu s[100];
bool cmp(stu x,stu y){if(x.a*x.b==y.a*y.b){return x.a+x.b>y.a+y.b;}else{return x.a*x.b>y.a*y.b;}
}int main(){int num;cin>>num;for(int i=0;i<num;i++){cin>>s[i].a>>s[i].b;s[i].c = i+1;}sort(s,s+num,cmp);for(int i=0;i<num;i++){cout<<s[i].c<<endl;}return 0;
}

8、生日排序

小童知道CSP兴趣小组中每个同学的生日,想编程将小组成员按照年龄从大到小的顺序排序。但是小童编程水平很菜,忙活了半天都没有实现自己的想法。请身为编程小能手的你,帮他完成排序。

输入描述

输入共有 n+1 行,第 1 行为 CSP兴趣小组总人数 n;
第 2 行至第 n+1 行分别是每个人的姓名 s、出生年 y、月 m、日 d。
1<n<100。保证年月日实际存在,且年份在1990~2022范围内。包括1990和2022。

输出描述

输出共有 n 行,即 n 个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)。

用例输入 1

3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1

用例输出 1

Luowen
Yangchu
Qiujingya

代码:

#include<bits/stdc++.h>
#include<string>
using namespace std;struct stu{string name;int year;int month;int day;
};
stu s[100];
bool cmp(stu x,stu y){if(x.year!=y.year){return x.year<y.year;}else{if(x.month!=y.month){return x.month<y.month;    }else{if(x.day!=y.day){return x.day<y.day;}else{return true;}}}
}int main(){int num;cin>>num;for(int i=0;i<num;i++){cin>>s[i].name>>s[i].year>>s[i].month>>s[i].day;}sort(s,s+num,cmp);for(int i=0;i<num;i++){cout<<s[i].name<<endl;}return 0;
}

9、候选人投票

有3个候选人:姓氏分别是“li”、“zhang”、“sun”。有n个选民,每个选民只能投票选择一个候选人。输入n个选民的选票,输出3个候选人各自的得票结果。要求:使用结构体解题。

输入描述

第1行是一个正整数n。(10 ≤ n ≤ 100)
第2行是n个字符串。每个字符串都是一个候选人的姓氏。

输出描述

共3行。按“li”、“zhang”、“sun”的顺序输出3个候选人的得票情况,格式是“姓氏:得票数”。

用例输入 1

10
zhang li sun sun li sun sun zhang zhang li

用例输出 1

li:3
zhang:3
sun:4
#include<bits/stdc++.h>
using namespace std;struct stu{char name[100];int num;
};
stu s[100];int main(){strcpy(s[0].name,"li");s[0].num=0;strcpy(s[1].name, "zhang");s[1].num=0;strcpy(s[2].name, "sun");s[2].num=0;int n;cin>>n;string c[100];int i=0;//将n个选民的投票情况保存到数组中 while(cin >> c[i]){i++;if(cin.get()=='\n'){break;}      }//遍历数组,和结构体数据比较,如果姓氏相同,则候选人票数增加 for(i=0;i<n;i++){for(int j=0;j<3;j++){if(s[j].name==c[i]){s[j].num+=1;break;}}}for(i=0;i<3;i++){cout<<s[i].name<<":"<<s[i].num<<endl;}return 0;
}

10、病人排队

请编写一个病人排队看病的程序。
病人有登记序号、年龄和ID三个信息。ID是一个长度小于10的字符串,每个病人的ID各不相同且只含数字和字母。
排队规则是:
1.老年人(年龄 ≥ 60岁)比非老年人优先看病。
2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
3.非老年人按登记的先后顺序看病。

输入描述

第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的ID和年龄,中间用单个空格隔开。
病人的登记序号是1~n,和病人的输入顺序一致。

输出描述

按规则排序后的病人ID,每行一个。

用例输入 1

5
021075 40
004003 15
010158 67
021033 75
102012 30

用例输出 1

021033
010158
021075
004003
102012
#include<iostream>
#include <bits/stdc++.h>
using namespace std;struct s{char id[21];int age;int I;
};
s stu[100];
s old[100];
s young[100];
bool cmp_o(s x,s y){if(x.age==y.age){return x.I<y.I;}else{return x.age>y.age;}
}bool cmp_y(s x,s y){return x.I<y.I;
}int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>stu[i].id>>stu[i].age;stu[i].I=i;cin.get();}int j=0,k=0;for(int i=0;i<n;i++){if(stu[i].age>=60){old[j++]=stu[i];}else{young[k++]=stu[i];}}//排序sort(old,old+j,cmp_o);sort(young,young+k,cmp_y);for(int i=0;i<j;i++){cout<<old[i].id<<endl;} for(int i=0;i<=k;i++){cout<<young[i].id<<endl;} }

C语言/C++练习题相关推荐

  1. 海伦公式c语言编程funcd,c语言编程练习题及答案_0.doc

    c语言编程练习题及答案_0 精品文档 2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES19 c语言编程练习题及答案 学生数 印数 考核方式 闭卷 考核时间 ...

  2. c语言高中题目及答案,高中信息技术 C语言程序设计练习题 选修1

    专心 爱心 用心1 C C 语言程序设计语言程序设计 练习题练习题 一 单项一 单项选择题选择题 单项选择题要求从给出的四个备选答案中 选出一个最符合题意的答案 本类习题主要检 查对 C 语言基本概念 ...

  3. c语言首尾指针相同 则,6.C语言指针练习题.doc

    6.C语言指针练习题.doc 一.知识点 1.? 掌握指针.地址.指针类型.空指针(NULL)等概念: 2.? 掌握指针变量的定义和初始化.指针的间接访问.指针的加减运算.指针变量比较运算和指针表达式 ...

  4. c程序语言设计练习题,C语言程序设计练习题(含程序及参考答案)

    <C语言程序设计练习题(含程序及参考答案)>由会员分享,可在线阅读,更多相关<C语言程序设计练习题(含程序及参考答案)(47页珍藏版)>请在人人文库网上搜索. 1.1.定义一个 ...

  5. 2017年9月计算机二级c语言,2017年9月计算机二级C语言程序设计练习题

    2017年9月计算机二级C语言程序设计练习题 2017年计算机二级考试即将在九月份进行,你准备好了吗?下面是小编为大家带来的计算机二级C语言程序设计练习题,欢迎阅读. 练习题一: 阅读程序题 1.in ...

  6. c语言基础练习题 字符串输入scanf/gets 字符串赋值、比大小

    PTA上C语言程序设计练习题,包含查找书籍.字符串排序.主要用到字符串输入scanf/gets 字符串赋值.比大小等知识. 1.查找书籍 习题9-4 查找书籍 (20 分) 给定n本书的名称和定价,本 ...

  7. 1412202035-hpu-1003:C语言考试练习题_一元二次方程

    1003: C语言考试练习题_一元二次方程 Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 12   Solved: 6 [ Submit][ Sta ...

  8. C语言经典练习题(2)——“冒泡排序(Bubble Sort)“

    C语言趣味练习题--冒泡排序 文章目录 C语言趣味练习题--冒泡排序 一.冒泡排序介绍 二.图文解释原理 三.代码实现 1.代码示例 2. 代码解析 总结 一.冒泡排序介绍 冒泡排序(Bubble S ...

  9. c语言程序编写字体,c语言程序设计练习题

    c语言程序设计练习题 篇一:c语言程序设计基础单元总结与练习题及答案 <C语言程序设计>单元总结与练习题 答 案 单元一 程序设计宏观认识 单元总结提升 本单元中,核心内容有C语言程序框架 ...

  10. c语言输入一个三位数由小到大排序,c语言程序设计练习题.doc

    c语言程序设计练习题 顺序程序设计 1.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321). .输入任意大小的三个整数,判断其中是否有两个奇数一个偶数.若是,则输出"YE ...

最新文章

  1. SAP MM MB5T可以用于查询在途库存
  2. 蓝桥杯java第八届第四题--魔方状态
  3. 如何优雅的使用 phpStorm
  4. 在NVIDIA Jetson TX2上安装TensorFlow
  5. fatal error: Eigen3/Core: 没有那个文件或目录
  6. 腾讯云启动 tomcat 很慢的问题
  7. html vba 单元格 格式,VBA设置单元格格式之——边框
  8. 暴力破解防范措施和措施总结
  9. 今日说“法”:FPGA芯片如何选型?
  10. python点云可视化工具_点云生成鸟瞰图(Python)
  11. 速学TypeScript-精简划重点手册-上册
  12. java导出txt文件列对齐
  13. TypeScript 高级类型及用法
  14. JDK1.8文档中文版
  15. 副业案例-晴矢分享 短视频MCN亏损500W的总结的血泪经验
  16. 产业新闻-2006.06.02-05
  17. 什么是安拆网?安拆网有什么作用?
  18. 数据结构之字典树Trie
  19. VUE3对比VUE2的优势及新特性原理
  20. smartgit入门安装

热门文章

  1. Java-IO流(File操作,字符输入输出流,字节输入输出流,缓冲流,对象流)
  2. python中的_all_用法
  3. centos 没有nmtui命令_nmcli和nmtui命令杂记
  4. 2023(吉林)功能性农业·农业大健康大会春耕示范基地授牌启动
  5. 递归遍历ftp文件目录,并生成目录树
  6. 有刷电机过压后的情况
  7. php 取整 ceil,php取整函数ceil,floor,round,intval函数的区别
  8. linux下最大连接数
  9. nesC语言学习笔记
  10. 激光雷达角点检测 c语言,一种基于事件帧的角点检测方法与流程