1070: 十进制转二进制
题目描述:
输入一个非负十进制整数,将其转换为二进制形式输出。
输入
7
输出
111
示例
#include<iostream>
using namespace std;
void turn(int n) {
if(n!=0) {
turn(n/2);
printf("%d",n%2);
return;
} else {
return;
}
}
int main() {
int num;
scanf("%d",&num);
if(num==0) printf("%d",num);
turn(num);
return 0;
}
1071: 数列有序
题目描述:
一个非递减有序的整型数组有n个元素,给定一个整数num,将num插入该序列的适当位置,使序列仍保持非递减有序。
输入
5
1 2 4 5 6
3
输出
1 2 3 4 5 6
示例
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int num,i,n,a[1001];
cin >> n;
for(i=0; i<n; i++) {
cin>>a[i];
}
cin >> num;
for(i=n-1; i>0&&a[i]>num; i--) {
a[i+1]=a[i];
}
a[i+1]=num;
for(i=0; i<= n; i++) cout<<a[i]<<" ";
return 0;
}
1072: 数组排序
题目描述:
对一维数组按照从小到大的顺序排序。
输入
6
6 5 1 2 3 4
输出
1 2 3 4 5 6
示例
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int n,a[100],i,k,j,temp;
cin >> n;
for(i=0; i<n; i++) {
cin>>a[i];
}
for(i=0; i<n; i++) {
for(k=i; k<n; k++) {
if(a[i]>a[k]) {
temp= a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
for(j=0; j<n; j++) {
cout<<a[j]<<" ";
}
return 0;
}
1073: 有序数组合并
题目描述:
已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中
输入
4 1 2 5 7
3 6 4 2
输出
7 6 5 4 2 2 1
示例
#include <iostream>
using namespace std;
const int N=1000000;
int a[N],b[N],c[N*2];
int main()
{
int m,n,i,j,k;
cin>>m;
for(i=0;i<m;i++)
cin>>a[i];
cin>>n;
for(i=0;i<n;i++)
cin>>b[i];
i=m-1;j=0;k=0;
while(i>=0&&j<n){
if(a[i]>b[j]) c[k++]=a[i--];
else c[k++]=b[j++];
}
while (i>=0)
c[k++]=a[i--];
while(j<n)
c[k++]=b[j++];
for(i=0;i<m+n;i++)
cout<<c[i]<<" ";
return 0;
}
1074: 数组最小值
题目描述:
数组a有n个元素,请输出n个元素的最小值及其下标。若最小值有多个,请输出下标最小的一个。注意,有效下标从0开始。
输入
5
8 4 5 1 2
输出
1 3
示例
#include<iostream>
using namespace std;
int main() {
int n,a[20],min=9999,j;
cin>>n;
for(int i=0;i<n;i++) {
cin>>a[i];
if(min>a[i]) {
min=a[i];
j=i;
}
}
cout<<min<<" "<<j;
}
1075: 最受欢迎歌手
题目描述:
学校推出了10名歌手,每个歌手都有唯一编号。校学生会想知道这些歌手受欢迎的程度,设了一个投票箱,让每一个同学给自己喜欢的歌手投票,同学们使用歌手编号进行投票。现在学生会找你帮忙统计一下每位歌手获得的票数,并颁发“最受欢迎歌手奖”,该奖项颁发给得票最多的歌手。若有多名歌手并列第一,则均可获奖。
输入
4 5 3 1 3 4 2 7 -1
输出
3 4
示例
#include<iostream>
using namespace std;
int main() {
int a[11]={0};
int n,max=-999;
while(cin>>n && n>0) {
a[n]++;
}
for(int i=1;i<11;i++) {
if(max<a[i]) {
max=a[i];
}
}
for(int i=1;i<11;i++) {
if(max == a[i]) {
cout<<i<<" ";
}
}
}
1076: 查找元素位置
题目描述:
输入从小到大排好序的n个元素,找出某元素第一次出现的位置。
输入
5
3 5 6 6 7
6
输出
3
示例
#include<iostream>
using namespace std;
int main() {
int n,a[20],find,j=0;
cin>>n;
for(int i=0;i<n;i++) {
cin>>a[i];
}
cin>>find;
for(j=0;j<n;j++) {
if(find == a[j]) {
cout<<j+1;
break;
}
}
if(j==n) {
cout<<"-1";
}
}
1077: 数字字符加倍
题目描述:
输入一个以回车结束的字符串,该字符串由数字和字母组成。请过滤掉所有非数字字符,然后将数字字符串转换成十进制整数后乘以2输出。
输入
sg987aa65t498
输出
197530996
示例
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long k=0,sum=0;
char a[20];
string s;
getline(cin,s);
for(int i=0;i<s.length();i++)
{
if(isdigit(s[i]))
{
a[k++]=s[i];
}
}
for(int i=0;i<k;i++)
{
sum=sum+(a[i]-'0')*pow(10,k-1-i);
}
cout<<sum*2;
}
1078: 报数字说英文
题目描述:
输入一个1到7之间的数字,表示星期一到星期日,输出相应的英文:Mon、Tue、Wed、Thur、Fri、Sat、Sun
输入
6
输出
Sat
示例
#include<iostream>
using namespace std;
int main() {
int n;
cin>>n;
switch(n) {
case 1:cout<<"Mon";break;
case 2:cout<<"Tue";break;
case 3:cout<<"Wed";break;
case 4:cout<<"Thur";break;
case 5:cout<<"Fri";break;
case 6:cout<<"Sat";break;
case 7:cout<<"Sun";break;
}
}
1079: 二进制转十六进制
题目描述:
输入一个0和1字符组成的二进制字符串,请转换成十六进制。
输入
11010100101
输出
6A5
示例
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int a,sum,shu[20],f=0,c;
long long n;
cin>>n;
while(n!=0) {
sum=0;
a=n%10000;
if(n/10000!=0) {
for(int i=0;i<4;i++) {
sum+=(a%10)*pow(2,i);
a/=10;
}
} else {
c=(int)log10(n)+1;
for(int i=0;i<c;i++) {
sum+=(a%10)*pow(2,i);
a/=10;
}
}
shu[f++]=sum;
n/=10000;
}
for(int i=f-1;i>=0;i--) {
if(shu[i]>=10) {
char cc='A'+shu[i]-10;
printf("%c",cc);
} else cout<<shu[i];
}
}
1080: 单词统计
题目描述:
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
输入
I love c++ programming
输出
4
示例
#include<iostream>
using namespace std;
int main() {
int n=0;
string s;
getline(cin,s);
for(int i=0;i<s.length();i++) {
if(isspace(s[i])) {
n++;
}
}
cout<<n+1;
}
1081: 最大字符串
题目描述:
输入三个字符串,输出其中按字典序最大的字符串。
输入
beijing shanghai guangzhou
输出
shanghai
示例
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char c[3][20];
char a[20];
string max;
for(int i=0;i<3;i++) {
cin>>c[i];
}
if(strcmp(c[0],c[1])>0) {
if(strcmp(c[0],c[2])>0) {
cout<<c[0];
} else {
cout<<c[2];
}
} else {
if(strcmp(c[1],c[2])>0) {
cout<<c[1];
} else {
cout<<c[2];
}
}
}
1082: 上三角矩阵
题目描述:
输入一个正整数n和n阶方阵a中的元素,如果a是上三角矩阵则输出“YES”,否则输出“NO”。上三角矩阵的主对角线(不包含主对角线)以下元素均为0。
输入
4
1 2 3 4
0 5 6 7
0 0 8 9
0 0 0 10
输出
YES
示例
#include <iostream>
using namespace std;
int main() {
int a[20][20];
int n, flag = 0;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (a[i][j] != 0) {
flag = 1;
}
}
}
if (flag == 0) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
1083: 矩阵乘积
题目描述:
计算两个矩阵A和B的乘积。
输入
2 3 4
1 0 1
0 0 1
1 1 1 3
4 5 6 7
8 9 1 0
输出
9 10 2 3
8 9 1 0
示例
#include <iostream>
using namespace std;
int main() {
int m, p, n, a[10][10], b[10][10], sum = 0;
cin >> m >> p >> n;
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
cin >> a[i][j];
}
}
for (int i = 0; i < p; i++) {
for (int j = 0; j < n; j++) {
cin >> b[i][j];
}
}
for (int k = 0; k < m; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < p; j++) {
sum += a[k][j] * b[j][i];
}
cout << sum << " ";
sum=0;
}
cout<<endl;
}
}
1084: 最多字母
题目描述:
输入一个字符串,输出字符串中出现次数最多的字母。
输入
A ab abc
输出
a
示例
#include<iostream>
using namespace std;
int main() {
int b[26]={0};
int n=0,max=0,maxi;
string s;
getline(cin,s);
for(int i=0;i<s.length();i++) {
if(s[i]<='Z' && s[i]>='A') {
n=s[i]-'A';
b[n]++;
} else if(s[i]<='z' && s[i]>='a') {
n=s[i]-'a';
b[n]++;
}
}
for(int i=0;i<26;i++) {
if(max<b[i]) {
max=b[i];
maxi=i;
}
}
printf("%c",'a'+maxi);
}
1085: 所在年第几天
题目描述:
输入一个日期,输出该日期是所在年的第几天。
输入
2021 1 29
输出
29
示例
#include<iostream>
using namespace std;
struct Day{
int year;
int month;
int day;
};
void yDay(Day d) {
int num;
if(d.year%400==0||d.year%100!=0&&d.year%4==0) {
switch(d.month) {
case 1:num=d.day;break;
case 2:num=d.day+31;break;
case 3:num=31+29+d.day;break;
case 4:num=d.day+31+29+31;break;
case 5:num=d.day+31+29+31+30;break;
case 6:num=d.day+31+29+31+30+31;break;
case 7:num=d.day+31+29+31+30+31+30;break;
case 8:num=d.day+31+29+31+30+31+30+31;break;
case 9:num=d.day+31+29+31+30+31+30+31+31;break;
case 10:num=d.day+31+29+31+30+31+30+31+31+30;break;
case 11:num=d.day+31+29+31+30+31+30+31+31+30+31;break;
case 12:num=d.day+31+29+31+30+31+30+31+31+30+31+30;break;
}
}
else {
switch(d.month) {
case 1:num=d.day;break;
case 2:num=d.day+31;break;
case 3:num=31+28+d.day;break;
case 4:num=d.day+31+28+31;break;
case 5:num=d.day+31+28+31+30;break;
case 6:num=d.day+31+28+31+30+31;break;
case 7:num=d.day+31+28+31+30+31+30;break;
case 8:num=d.day+31+28+31+30+31+30+31;break;
case 9:num=d.day+31+28+31+30+31+30+31+31;break;
case 10:num=d.day+31+28+31+30+31+30+31+31+30;break;
case 11:num=d.day+31+28+31+30+31+30+31+31+30+31;break;
case 12:num=d.day+31+28+31+30+31+30+31+31+30+31+30;break;
}
}
cout<<num<<endl;
}
int main()
{
Day dd;
int a,b,c;
cin>>a>>b>>c;
dd.year = a;
dd.month = b;
dd.day = c;
yDay(dd);
}
1086: 选美大赛
题目描述:
某地区选美大赛总共有 n 个选手(编号从1到 n ), m 个评委。每个评委只能拿到一张选票,每张选票可为编号 L 到 R 的选手加上一分。现在让您找出得分最高的选手。
输入
5 8
2 3
2 4
3 5
4 4
2 4
3 3
4 5
2 3
输出
3
示例
#include <iostream>
using namespace std;
int a[100050];
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
int l,r;
cin>>l>>r;
a[r+1]--;
a[l]++;
}
int max=0;
for(int i=1;i<=n;i++){
a[i]=a[i]+a[i-1];
if(a[i]>max)max=a[i];
}
int flag=0;
for(int i=0;i<=n;i++){
if(a[i]==max)
if(flag==0) cout<<i,flag=1;
else cout<<" "<<i;
}
return 0;
}
1087: 杨辉三角
题目描述:
输出杨辉三角形。
输入
4
输出
1
1 1
1 2 1
1 3 3 1
示例
#include<iostream>
using namespace std;
int main() {
int n,a[20][20];
cin>>n;
for(int i=0;i<n;i++) {
a[i][i]=a[i][0]=1;
}
for(int i=2;i<n;i++) {
for(int j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(int i=0;i<n;i++) {
for(int j=0;j<=i;j++) {
printf("%-8d",a[i][j]);
}
cout<<endl;
}
}
1088: 矩阵对角线元素之和
题目描述:
求一个3×3的整型矩阵对角线元素之和。
输入
1 2 3
4 5 6
9 8 7
输出
13
示例
#include <iostream>
using namespace std;
int main() {
int a[3][3],sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cin >> a[i][j];
if (i == j) {
sum += a[i][j];
}
}
}
cout << sum;
}
1089: 数组元素逆置
题目描述:
将一个长度为10的整型数组中的值按逆序重新存放。
如:原来的顺序为1,2,3,4,5,6,7,8,9,0,要求改为0,9,8,7,6,5,4,3,2,1
输入
1 2 3 4 5 6 7 8 9 0
输出
0 9 8 7 6 5 4 3 2 1
示例
#include <iostream>
using namespace std;
int main() {
int a[10];
for (int i = 0; i < 10; i++) {
cin >> a[i];
}
for (int j = 9; j >= 0; j--) {
cout << a[j]<<" ";
}
}
1090: 字符统计(二)
题目描述:
有一篇文章,共3行文字,每行不到80个字符。要求分别统计每行中字母、数字、空格以及其他字符的个数。
输入
I am a student!
I'm 18 years old.
One Two Three 1 2 3!@#
输出
11 0 3 1
10 2 3 2
11 3 5 3
示例
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 3; i++) {
int zm = 0, sz = 0, kg = 0, qt = 0;
string a;
getline(cin, a);
for (int i = 0; i < a.length(); i++) {
if (isdigit(a[i])) {
sz++;
}
else if (a[i] <= 'Z' && a[i] >= 'A' || a[i] <= 'z' && a[i] >= 'a') {
zm++;
} else if (!isgraph(a[i])) {
kg++;
} else {
qt++;
}
}
printf("%d %d %d %d\n", zm, sz, kg, qt);
}
}