admin管理员组

文章数量:821338

C/C++刷题训练营

由于有练习C++的需要,所以剩下的题将会提供C语言以及C++的两个参考代码

截止20210330目前更新至BC90

目录

由于有练习C++的需要,所以剩下的题将会提供C语言以及C++的两个参考代码

截止20210330目前更新至BC90

BC140-KiKi设计类继承

C参考代码

C++参考代码

BC139-KiKi定义电子日历类

C参考代码

C++参考代码

BC138-KiKi学结构体和指针

C参考代码

C++参考代码

BC137-KiKi判断上三角矩阵

C参考代码

C++参考代码

BC136-Kiki去重整数并排序

C参考代码

C++参考代码

BC135-KiKi求质数个数

C参考代码

C++参考代码

BC134-KiKi的最高分

C参考代码

C++参考代码

BC133-KiKi说祝福语

C参考代码

C++参考代码

BC132-KiKi算期末成绩

C参考代码

C++参考代码

BC131-KiKi学程序设计基础

C参考代码

C++参考代码

BC130-小乐乐查找数字

C参考代码

C++参考代码

BC129-小乐乐计算函数

C参考代码

C++参考代码

BC128-小乐乐计算求和

C参考代码

C++参考代码

BC127-小乐乐算最高分

C参考代码

C++参考代码

BC126-小乐乐算多少人被请家长

C参考代码

C++参考代码

BC125-小乐乐转换成绩

C参考代码

C++参考代码

BC124-小乐乐是否被叫家长

C参考代码

C++参考代码

BC123-小乐乐找最大数

C参考代码

C++参考代码

BC122-小乐乐算平均分

C参考代码

C++参考代码

BC121-小乐乐学编程

C参考代码

C++参考代码

BC120-小乐乐与二段数

C参考代码

C++参考代码

BC119-小乐乐与字符串

C参考代码

C++参考代码

BC118-小乐乐与序列

C参考代码

C++参考代码

BC117-小乐乐走台阶

C参考代码

C++参考代码

BC116-小乐乐改数字

C参考代码

C++参考代码

BC115-小乐乐与欧几里得

C参考代码

C++参考代码

BC114-小乐乐排电梯

C参考代码

C++参考代码

BC113-小乐乐定闹钟

C参考代码

C++参考代码

BC112-小乐乐求和

C参考代码

C++参考代码

BC111-小乐乐与进制转换

C参考代码

C++参考代码

BC110-井亨棋

C参考代码

C++参考代码

BC109-杨辉三角

C参考代码

C++参考代码

BC108-矩阵交换

C参考代码

C++参考代码

BC107-矩阵转置

C参考代码

C++参考代码

BC106-上三角矩阵判定

C参考代码

C++参考代码

BC105-矩阵相等判定

C参考代码

C++参考代码

BC104-最高身高

C参考代码

C++参考代码

BC103-序列重组矩阵

C参考代码

C++参考代码

BC102-矩阵元素定位

C参考代码

C++参考代码

BC101-班级成绩输入输出

C参考代码

C++参考代码

BC100-有序序列合并

C参考代码

C++参考代码

BC99-序列中整数去重

C参考代码

C++参考代码

BC98-序列中删除指定数字

C参考代码

C++参考代码

BC97-有序序列插入一个整数

C参考代码

C++参考代码

BC96-有序序列判断

C参考代码

C++参考代码

BC95-最高分与最低分之差

C参考代码

C++参考代码

BC94-N个数之和

C参考代码

C++参考代码

BC93-统计数据正负个数

C参考代码

C++参考代码

BC92-逆序输出

C参考代码

C++参考代码

BC91-成绩输入输出问题

C参考代码

C++参考代码

BC90-矩阵计算

C参考代码

C++参考代码

BC89-密码验证

C参考代码

C++参考代码

BC88-有序序列插入一个数

BC87-统计成绩

C参考代码

C++参考代码

BC86-奇偶统计

C参考代码

C++参考代码

BC85-包含数字9的数

C参考代码

C++参考代码

BC84-计算y的值

C参考代码

C++参考代码

BC83-被5整除问题

C参考代码

C++参考代码

BC82-(a+b-c)*d的计算问题

C参考代码

C++参考代码

BC81-学好C++

C参考代码

C++参考代码

BC80-登录验证

C参考代码

C++参考代码

BC79-图像相似度

C参考代码

C++参考代码

BC78-筛选法求素数

C参考代码

C++参考代码

BC77-有序序列插入一个数

C参考代码

C++参考代码

BC76-公务员面试

C参考代码

C++参考代码

BC75-数字三角形

C参考代码

C++参考代码

BC74-HTTP状态码

C参考代码

C++参考代码

BC73-挂科危险

C参考代码

C++参考代码

BC72-平均身高

C参考代码

C++参考代码

BC71-新年快乐

C参考代码

C++参考代码

BC70-空心三角形图案

C参考代码

C++参考代码

BC69-空心正方形图案

C参考代码

C++参考代码

BC68-X形图案

C参考代码

C++参考代码

BC67-正斜线形图案

C参考代码

C++参考代码

BC66-反斜线形图案

C参考代码

C++参考代码

BC65-箭形图案

C参考代码

C++参考代码


BC140-KiKi设计类继承

C参考代码

C++参考代码

BC139-KiKi定义电子日历类

C参考代码

C++参考代码

BC138-KiKi学结构体和指针

C参考代码

C++参考代码

BC137-KiKi判断上三角矩阵

C参考代码

C++参考代码

BC136-Kiki去重整数并排序

C参考代码

C++参考代码

BC135-KiKi求质数个数

C参考代码

C++参考代码

BC134-KiKi的最高分

C参考代码

C++参考代码

BC133-KiKi说祝福语

C参考代码

C++参考代码

BC132-KiKi算期末成绩

C参考代码

C++参考代码

BC131-KiKi学程序设计基础

C参考代码

C++参考代码

BC130-小乐乐查找数字

C参考代码

C++参考代码

BC129-小乐乐计算函数

C参考代码

C++参考代码

BC128-小乐乐计算求和

C参考代码

C++参考代码

BC127-小乐乐算最高分

C参考代码

C++参考代码

BC126-小乐乐算多少人被请家长

C参考代码

C++参考代码

BC125-小乐乐转换成绩

C参考代码

C++参考代码

BC124-小乐乐是否被叫家长

C参考代码

C++参考代码

BC123-小乐乐找最大数

C参考代码

C++参考代码

BC122-小乐乐算平均分

C参考代码

C++参考代码

BC121-小乐乐学编程

C参考代码

C++参考代码

BC120-小乐乐与二段数

C参考代码

C++参考代码

BC119-小乐乐与字符串

C参考代码

C++参考代码

BC118-小乐乐与序列

C参考代码

C++参考代码

BC117-小乐乐走台阶

C参考代码

C++参考代码

BC116-小乐乐改数字

C参考代码

C++参考代码

BC115-小乐乐与欧几里得

C参考代码

C++参考代码

BC114-小乐乐排电梯

C参考代码

C++参考代码

BC113-小乐乐定闹钟

C参考代码

C++参考代码

BC112-小乐乐求和

C参考代码

C++参考代码

BC111-小乐乐与进制转换

C参考代码

C++参考代码

BC110-井亨棋

C参考代码

C++参考代码

BC109-杨辉三角

C参考代码

C++参考代码

BC108-矩阵交换

C参考代码

C++参考代码

BC107-矩阵转置

C参考代码

C++参考代码

BC106-上三角矩阵判定

C参考代码

C++参考代码

BC105-矩阵相等判定

C参考代码

C++参考代码

BC104-最高身高

C参考代码

C++参考代码

BC103-序列重组矩阵

C参考代码

C++参考代码

BC102-矩阵元素定位

C参考代码

C++参考代码

BC101-班级成绩输入输出

C参考代码

C++参考代码

BC100-有序序列合并

C参考代码

C++参考代码

BC99-序列中整数去重

C参考代码

C++参考代码

BC98-序列中删除指定数字

C参考代码

C++参考代码

BC97-有序序列插入一个整数

C参考代码

C++参考代码

BC96-有序序列判断

C参考代码

C++参考代码

BC95-最高分与最低分之差

C参考代码

C++参考代码

BC94-N个数之和

题目描述
输入数字N,然后输入N个数,计算这N个数的和。
输入描述:

第一行输入一个整数N(0≤N≤50),第二行输入用空格分隔的N个整数。

输出描述:

输出为一行,为第二行输入的“N个整数之和”的计算结果。

示例1
输入

5
1 2 3 4 5

输出

15

C参考代码

#include<stdio.h>
int main()
{int N,tmp,ans=0;scanf("%d",&N);for(int i=0;i<N;i++){scanf("%d",&tmp);ans+=tmp;}printf("%d",ans);return 0;
}

C++参考代码

#include<bits/stdc++.h>
using namespace std;int a[45];int main() 
{int n, s = 0;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];}for(int i = 1; i <= n; i++){s += a[i];}cout << s << endl;return 0;
}

BC93-统计数据正负个数

题目描述
输入10个整数,分别统计输出正数、负数的个数。
输入描述:

输入10个整数(范围-2^31~2^31-1),用空格分隔。

输出描述:

两行,第一行正数个数,第二行负数个数,具体格式见样例。

示例1
输入
-1 2 3 -6 7 8 -1 6 8 10

输出
positive:7
negative:3

C参考代码

#include<stdio.h>
int main()
{int a[10];int pos=0,neg=0;for(int i=0;i<10;i++){scanf("%d",&a[i]);if(a[i]>=0)pos++;elseneg++;}printf("positive:%d\nnegative:%d",pos,neg);return 0;
}

C++参考代码

#include<bits/stdc++.h>
using namespace std;
int a[45];
int main()
{int f = 0, z = 0;for (int i = 1; i <= 10; i++){cin >> a[i];}for (int i = 1; i <= 10; i++){if (a[i] < 0) f++;if (a[i] > 0) z++;}cout << "positive:" << z << endl;cout << "negative:" << f << endl;return 0;
}

BC92-逆序输出

题目描述
输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。
输入描述:

一行,输入10个整数(范围-2^31~2^31-1),用空格分隔。

输出描述:

一行,逆序输出输入的10个整数,用空格分隔。

示例1
输入

1 2 3 4 5 6 7 8 9 10

输出

10 9 8 7 6 5 4 3 2 1

 

C参考代码

#include<stdio.h>
int main()
{int ch[10],i;for(i=0;i<10;i++)scanf("%d",&ch[i]);for(i=9;i>=0;i--)printf("%d ",ch[i]);}

C++参考代码

#include<iostream>
using namespace std;
int a[45];
int main()
{for (int i = 1; i <= 10; i++){cin >> a[i];}for (int i = 10; i >= 1; i--){cout << a[i] << " ";}return 0;
}

BC91-成绩输入输出问题

题目不存在

BC90-矩阵计算

题目描述

输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。
输入描述:

第一行为N M(N: 矩阵行数;M: 矩阵列数,且M,N<=10),接下来的N行为矩阵各行。

输出描述:

一行,其中大于零的元素之和。

示例1
输入
3 3
2 3 4
-5 -9 -7
0 8 -4

输出
17

C参考代码

#include<stdio.h>
int main(){int n,m,t,s=0;scanf("%d %d",&n,&m);for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%d",&t);if(t>0)s+=t;}}printf("%d",s);return 0;
}

C++参考代码

#include<iostream>using namespace std;int main()
{int n,m;int sum=0;cin>>n>>m;//输入行和列int a[12][12];//数组容量设置的大些,防止索引越界for(int i=0;i<n;++i){for(int j=0;j<m;++j){cin>>a[i][j];//顺序输入每个元素if(a[i][j]>0)//如果当前元素大于0sum+=a[i][j];//加起来求和}}cout<<sum<<endl;return 0;
}

BC89-密码验证

题目描述

用户登录网站,通常需要注册,一般需要输入两遍密码。请编程判断输入的两次密码是否一致,一致输出“same”,不一致输出“different”


输入描述:

每行有两个用空格分开的字符串,第一个为密码,第二个为重复密码。

输出描述:

每组输出一个字符串(“same”或“different”)。

示例1
输入

abc abc

输出

same

C参考代码

#define _CRT_SECURE_NO_WARNINGS
#define MAX 100
#include <stdio.h>
#include<string.h>
int main()
{char code1[MAX];char code2[MAX];scanf("%s %s", code1, code2);if (strcmp(code1, code2) == 0){printf("same");}else{printf("different");}return 0;
}

C++参考代码

#include<iostream>
#include<string>
using namespace std;
int main()
{string s1;//定义两个字符串s1和s2string s2;cin>>s1>>s2;//依次输入if(s1==s2)//如果相等cout<<"same";//输出sameelse//否则不相等cout<<"different";//输出differentreturn 0;
}

BC88-有序序列插入一个数

与BC77重复

BC87-统计成绩

题目描述

输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。
输入描述:

两行,

第1行,正整数n(1≤n≤100)

第2行,n科成绩(范围0.0~100.0),用空格分隔。

输出描述:

输出一行,三个浮点数,分别表示,最高分,最低分以及平均分(小数点后保留2位),用空格分隔。

示例1
输入
5
99.5 100.0 22.0 60.0 88.5

输出
100.00 22.00 74.00

C参考代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int n;double sum = 0, x, max = -1, min = 101, avg;scanf("%d", &n);int m = n;while (n--) {scanf("%lf", &x);sum += x;if (x > max) max = x;if (x < min) min = x;}avg = sum / m;printf("%.2f %.2f %.2f\n", max, min, avg);
}

C++参考代码

#include<iostream>
#include<iomanip>  //C++中浮点数保留小数点的有文件要有此文件using namespace std;int main()
{int num;cin>>num;float a[num+1];//数组容量设置的大些,防止索引越界float sum=0;float max=0,min=100;//首先初始化max和minfor(int i=0;i<num;++i){cin>>a[i];sum+=a[i];if(max<a[i])max=a[i];//比较,将大值赋给maxif(min>a[i])min=a[i];//将小值赋给min}cout<<fixed<<setprecision(2)<<max<<" "<<fixed<<setprecision(2)<<min<<" "<<fixed<<setprecision(2)<<(sum/num)<<endl;//通过setprecision设置精度return 0;
}

BC86-奇偶统计

题目描述

任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。
输入描述:

一行,一个正整数N。(1≤N≤100,000)

输出描述:

一行,1~N之间奇数的个数和偶数的个数,用空格分开。

示例1
输入

5

输出

3 2

C参考代码

#include<stdio.h>
int main()
{int N;scanf("%d",&N);if(N%2==1)printf("%d %d",N/2+1,N/2);elseprintf("%d %d",N/2,N/2);
}

C++参考代码

#include<iostream>using namespace std;int main()
{int a;cin>>a;int num_odd=0;int num_even=0;for(int i=0;i<a;++i)//这里也可用while循环{if(i%2)++num_even;//偶数的个数加1else++num_odd;//奇数的个数加1}//while循环//while(a)//这里也可用while循环//{//    if(i%2)//        ++num_even;//偶数的个数加1//    else//        ++num_odd;//奇数的个数加1//    --a;// }cout<<num_odd<<" "<<num_even<<endl;return 0;
}

BC85-包含数字9的数

题目描述

今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。
输入描述:

输出描述:

一行,一个整数,表示1~2019中共有多少个数包含数字9。

C参考代码

#include <stdio.h>int main(void)
{int count = 0;int i, t1, t2, t3, t4;for (i = 1; i <= 2019; i++){if (i < 10){if (0 == i % 9){count++;}}else if (i >= 10 && i < 100){t1 = i / 10;t2 = i % 10;if (t1 == 9 || 9 == t2){count++;}}else if (i >= 100 && i < 1000){t1 = i / 100;t2 = i / 10 % 10;t3 = i % 10;if (t1 == 9 || 9 == t2 || t3 == 9){count++;}}else{t1 = i / 1000;t2 = i / 100 % 10;t3 = i / 10 % 10;t4 = i % 10;if (t1 == 9 || 9 == t2 || t3 == 9 || 9 == t4){count++;}}}printf("%d\n", count);return 0;
}

C++参考代码

#include <iostream>using namespace std;int result = 0;//初始化结果个数为0int main() 
{for (int i=1; i<=2019; ++i) {int t = i;while (t > 0) {if (t%10 == 9) {//余数为9,说明包含9result++;//结果数就加一break;}t /= 10;}}cout << result << endl;//输出含有9的个数return 0;
}

BC84-计算y的值

题目描述

已知一个函数y=f(x),当x < 0时,y = 1;当x = 0时,y = 0;当x > 0时,y = -1。   
输入描述:

一行,输入一个整数x。(-10000<x<10000)

输出描述:

一行,输出y的值。

示例1
输入

10

输出

-1

示例2
输入

-10

输出

1

C参考代码

#include<stdio.h>
int main()
{int x;scanf("%d",&x);if(x<0)printf("%d",1);else if(x==0)printf("%d",0);elseprintf("%d",-1);return 0;
}

C++参考代码

#include<iostream>using namespace std;int result(int x)//定义了一个返回值为int,形参为int的函数result
{if(x<0)return 1;//如果小于0,返回1else if(x==0)return 0;//如果等于0,返回0elsereturn -1;//否则返回-1
}int main()
{int x;cin>>x;cout<<result(x)<<endl;//带入函数,判断return 0;
}

BC83-被5整除问题

题目描述

判断一个整数是否能5整除是一个挺简单的问题,懒惰的KiKi还是不想自己做,于是找到你帮他写代码,你就帮帮他吧。


输入描述:

输入包括一个整数M(1≤M≤100,000)。

输出描述:

输出包括一行,如果M可以被5整除就输出YES,否则输出NO(结果大小写敏感)。

示例1
输入

10

输出

YES

示例2
输入

9

输出

NO

 

C参考代码

#include<stdio.h>
int main()
{int M;scanf("%d",&M);if(M%5==0)printf("YES");elseprintf("NO");return 0;
}

C++参考代码

#include<iostream>using namespace std;int main()
{int m;cin>>m;//输入要判断的数Mif(m%5)cout<<"NO";//余数不是0;不能被整除输出NOelsecout<<"YES";//余数是0,能够被整除输出YESreturn 0;
}

BC82-(a+b-c)*d的计算问题

题目描述

这是一个非常简单的题目,意在考察你编程的基础能力。千万别想难了哦。输入为一行,包括了用空格分隔的四个整数a、b、c、d(0 < a, b, c, d < 100,000)。输出为一行,为“(a+b-c)*d”的计算结果。
输入描述:

输入为一行,用空格分隔的四个整数a、b、c、d(0 < a, b, c, d < 100,000)。

输出描述:

输出为一行,为“(a+b-c)*d”的计算结果。

示例1
输入

1 3 2 4

输出

8

C参考代码

#include<stdio.h>
int main()
{int a,b,c,d;scanf("%d %d %d %d",&a,&b,&c,&d);printf("%d",(a+b-c)*d);return 0;
}

C++参考代码

#include<iostream>
using namespace std;
int main()
{int a,b,c,d;cin>>a>>b>>c>>d;int ret=(a+b-c)*d;cout<<ret<<endl;return 0;
}

BC81-学好C++

 C++是带类的C语言,这个“++”主要包含三部分内容:对C语言进行语法上的扩展、面向对象(封装、继承和多态),STL(即模板)。这学期你将学习C++,学好C++,其他编程语言都可以很轻松掌握。
输入描述:

输出描述:

I will learn C++ well!

C参考代码

#include<stdio.h>
int main(){printf("I will learn C++ well!");
}

C++参考代码

#include<iostream>
using namespace std;
int main()
{cout<<"I will learn C++ well!";return 0;
}

BC80-登录验证

题目描述
有个软件系统登录的用户名和密码为(用户名:admin,密码:admin),用户输入用户名和密码,判断是否登录成功。
输入描述:

多组测试数据,每行有两个用空格分开的字符串,第一个为用户名,第二个位密码。

输出描述:

针对每组输入测试数据,输出为一行,一个字符串(“Login Success!”或“Login Fail!”)。

示例1
输入

admin admin

输出

Login Success!

示例2
输入

admin abc

输出

Login Fail!

 

C参考代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define MAX 20
int main()
{char user[MAX];char code[MAX];while (~scanf("%s %s", user, code)){char user_right[MAX] = "admin";char code_right[MAX] = "admin";if (strcmp(user,user_right)==0 && strcmp(code,code_right)==0){printf("Login Success!");}else{printf("Login Fail!");}printf("\n");}return 0;
}

C++参考代码

#include <iostream>
using namespace std;
int main(){string username, password;cin >> username >> password;username == "admin" && password == "admin" ? cout << "Login Success!" : cout << "Login Fail!";return 0;
}

BC79-图像相似度

题目描述
给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。

输入描述:

第一行包含两个整数m和n,表示图像的行数和列数,用单个空格隔开。1≤m≤100, 1≤n≤100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色,相邻两个数用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色,相邻两个数用单个空格隔开。

输出描述:

一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。

示例1
输入

3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1

输出

44.44

 

C参考代码

二维数组

#include <stdio.h>
#define MAX 100int main()
{int m, n, A[MAX][MAX], B[MAX][MAX], count = 0;scanf("%d%d", &m, &n);for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)scanf("%d", &(A[i][j]));for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)scanf("%d", &(B[i][j]));for(int i = 0; i < m; i++)for(int j = 0; j < n; j++){if(A[i][j] == B[i][j])count++;}//float percent = (100. * (float)count) / (1.0 * (float)m * (float)n);printf("%.2f\n", 100. * count / (float) (m * n));
}

C语言使用malloc和变长数组即可;

#include <stdio.h>
#include <stdlib.h>void init(int m, int n, int x[m][n]);int main(void)
{int m, n;float percent;int i, j, count;scanf("%d %d", &m ,&n);int (*a)[n] = (int (*)[n])malloc(sizeof(int) * m * n);if (NULL == a){fprintf(stderr, "Memory Allocation failed!\n");exit(EXIT_FAILURE);}int (*b)[n] = (int (*)[n])malloc(sizeof(int) * m * n);if (NULL == b){fprintf(stderr, "Memory Allocation failed!\n");exit(EXIT_FAILURE);}init(m, n, a);init(m, n, b);for (i = 0, count = 0; i < m; i++){for (j = 0; j < n; j++){if (a[i][j] == b[i][j]){count++;}}}percent = (float)count / (m * n);printf("%.2f\n", percent * 100);return 0;
}void init(int m, int n, int x[m][n])
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &x[i][j]);}}return;
}

C++参考代码

//题目要求是相似度,没必要开二维数组,直接初始化长度为长乘宽的一维数组即可
//我们只需要把两个数组都比较一遍,然后统计出有多少相同的数字,最后计算出百分比,结束
#include <iostream>
#include <iomanip>using namespace std;
int pic1[10001];
int pic2[10001];
int main(){int a, b, c;double count = 0;cin >> a >> b;c = a * b;for(int t = 0; t < c; t++){cin >> pic1[t];}for(int t = 0; t < c; t++){cin >> pic2[t];count += pic2[t] == pic1[t] ? 1: 0;}cout << fixed << setprecision(2) << count * 100.00 / c;return 0;
}

BC78-筛选法求素数

题目描述
用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。
输入描述:

多组输入,每行输入一个正整数(不大于100)。

输出描述:

针对每行输入的整数n,输出两行,第一行,输出n之内(包括n)的素数,用空格分隔,

第二行,输出数组中2之后0 的个数。每行输出后换行。

示例1
输入

20

输出

2 3 5 7 11 13 17 19
11

 

C参考代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{int n, a[101];while (scanf("%d", &n) != EOF){//初始化数组for (int i = 2; i <= n; i++) {a[i] = i;}//将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0for (int i = 2; i < n; i++) {for (int j = 2; j < n; j++) {if (a[j] % i == 0 && i != j)a[j] = 0;}}int cout = 0;for (int m = 2; m < n; m++) {if (a[m] != 0) {printf("%d ", a[m]);cout++;}}printf("\n%d\n", n - 1 - cout);}}

C++参考代码

#include<iostream>
using namespace std;
int main()
{int n,k,num=0;cin>>n;for(int i=2;i<n;i++){k=0;for(int j=i-1;j>=2;j--){if(i%j==0)k++;}if(k==0){cout<<i<<" ";num++;}}cout<<"\n"<<(n-num-1);return 0;
}

BC77-有序序列插入一个数

题目描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述:

第一行输入一个整数(0≤N≤50)。

第二行输入N个升序排列的整数,输入用空格分隔的N个整数。

第三行输入想要进行插入的一个整数。

输出描述:

输出为一行,N+1个有序排列的整数。

示例1
输入

5
1 6 9 22 30
8

输出

1 6 8 9 22 30

 

C参考代码

#include <stdio.h>
#define N 50int main(void)
{int i, j, k, t, n, a[N + 1];scanf("%d", &n);getchar();for (i = 0; i < n; i++){scanf("%d", &a[i]);}getchar();scanf("%d", &j);for (i = 0; i < n; i++){if (j <= a[i]){for (k = n - 1 ; k >= i; k--){a[k + 1] = a[k];//数组向后移动;}a[i] = j;//放置添加的数;break;}}if (i == n)//如果要添加的数比原数组所有元素都大;{a[i] = j;//就放置到数组末尾;}for (i = 0; i < n + 1; i++){printf("%d ", a[i]);}return 0;
}

C++参考代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main(){int n;cin >> n;vector<int> ans;for(int i = 0; i < n; i++){int temp;cin >> temp;ans.push_back(temp);}int m;cin >> m;ans.push_back(m);sort(ans.begin(), ans.end());for(int i = 0; i < ans.size(); i++)printf("%d ", ans[i]);return 0;
}

输出的变量名字一般起名为:ans

BC76-公务员面试

题目描述
公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。
输入描述:

一行,输入7个整数(0~100),代表7个成绩,用空格分隔。

输出描述:

一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。

示例1
输入

99 45 78 67 72 88 60

输出

73.00

C参考代码

#include<stdio.h>
int main()
{int i,j,tmp;float a[7],sum=0;scanf("%f %f %f %f %f %f %f",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);//类似冒泡排序找出最大值放在a[6]for(i=0;i<6;i++){if(a[i]>a[i+1]){tmp=a[i];a[i]=a[i+1];a[i+1]=tmp;}}//找出最小值放在a[0]for(j=5;j>0;j--){if(a[j]<a[j-1]){tmp=a[j-1];a[j-1]=a[j];a[j]=tmp;}}for(tmp=j+1;tmp<i;tmp++){sum+=a[tmp];//此时j=0,i=6,求出a[1]~a[5]的和}printf("%.2f",sum/5);return 0;
}

C++参考代码

#include<iostream>
#include <iomanip> 
using namespace std;
int main() 
{int arr[7] = { 0 };int max = 0,min = 100,max_p, min_p;int tmp=0;for (int i = 0; i < 7; i++){cin >> arr[i];if (arr[i] > max){max = arr[i];max_p = i;}if (arr[i] < min){min = arr[i];min_p = i;}}cout << setiosflags(ios::fixed) << setprecision(2);for (int j = 0; j < 7; j++){if (j != max_p && j != min_p){tmp += arr[j];}}cout << tmp / 5.0;return 0;
}

BC75-数字三角形

题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用数字组成的数字三角形图案。
输入描述:

多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。

输出描述:

针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。

示例1
输入

4

输出

1
1 2
1 2 3
1 2 3 4

示例2
输入

5

输出

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

 

C参考代码

#include <stdio.h>int main(void)
{int i, j, n;while (scanf("%d", &n) != EOF && (n >= 3 && n <= 20)){for (i = 1; i <= n; i++){for (j = 1; j <= i; j++){printf("%d ", j);}putchar('\n');}}return 0;
}

C++参考代码

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

BC74-HTTP状态码

题目描述

KiKi访问网站,得到HTTP状态码,但他不知道什么含义,BoBo老师告诉他常见HTTP状态码:200(OK,请求已成功),202(Accepted,服务器已接受请求,但尚未处理。)400(Bad Request,请求参数有误),403(Forbidden,被禁止),404(Not Found,请求失败),500(Internal Server Error,服务器内部错误),502(Bad Gateway,错误网关)。
输入描述:

多组输入,一行,一个整数(100~600),表示HTTP状态码。

输出描述:

针对每组输入的HTTP状态,输出该状态码对应的含义,具体对应如下:
200-OK
202-Accepted
400-Bad Request
403-Forbidden
404-Not Found
500-Internal Server Error
502-Bad Gateway

示例1
输入

200

输出

OK

C参考代码

#include <stdio.h>
int main()
{int n;while(scanf("%d",&n)!=EOF){switch(n){case(200):printf("OK\n");break;case(202):printf("Accepted\n");break;case(400):printf("Bad Request\n");break;case(403):printf("Forbidden\n");break;case(404):printf("Not Found\n");break;case(500):printf("Internal Server Error\n");break;case(502):printf("Bad Gateway\n");break;}}return 0;
}

C++参考代码

#include<bits/stdc++.h>
using namespace std;int main() {string s[7] = {"200-OK","202-Accepted","400-Bad Request","403-Forbidden","404-Not Found","500-Internal Server Error","502-Bad Gateway"};string in;while(cin >> in) {for(int i=0;i<7;i++) {if(s[i].find(in)!=-1) {cout << s[i].substr(4) << endl;}}}return 0;
}

BC73-挂科危险

题目描述:KiKi想知道这学期他的学习情况,BoBo老师告诉他这学期挂的科目累计的学分,根据所挂学分,判断KiKi学习情况,10分以上:很危险(Danger++),4~9分:危险(Danger),0~3:Good。
输入描述:一行,一个整数(0~30),表示KiKi挂的科目累计的学分。

输出描述:一行,根据输入的挂科学分,输出相应学习情况(Danger++,Danger,Good)。

示例1
输入

14

输出

Danger++

示例2
输入

9

输出

Danger

示例3
输入
1

输出

Good

C参考代码

#include <stdio.h>
int main(){int num;scanf("%d",&num);if(num >=10){printf("Danger++");}else if(num >=4 && num <=9){printf("Danger");}else if(num >=0 && num <=3){printf("Good");}
}

C++参考代码

#include<iostream>
using namespace std;
int main()
{int n;cin>>n;switch(n){case 0:case 1:case 2:case 3:cout<<"Good";break;case 4:case 5:case 6:case 7:case 8:case 9:cout<<"Danger";break;default:cout<<"Danger++";}}

BC72-平均身高

题目描述:从键盘输入5个人的身高(米),求他们的平均身高(米)。
输入描述:一行,连续输入5个身高(范围0.00~2.00),用空格分隔。
输出描述:一行,输出平均身高,保留两位小数。
示例1
输入
1.68 1.75 1.82 1.60 1.92
输出
1.75

C参考代码

#include <stdio.h>
int main()
{double a,b,c,d,e;while(~scanf("%lf %lf %lf %lf %lf",&a,&b,&c,&d,&e)){printf("%.2f\n",(a+b+c+d+e)/5.0);}return 0;
}

C++参考代码

#include<bits/stdc++.h>
using namespace std;
int main() {float temp, res = 0;while(cin >> temp) res += temp;printf("%.2f",0.2 * res);return 0;
}
#include<iostream>
#include<iomanip>
using namespace std;
int main() {float temp, res = 0;while (cin >> temp) res += temp;cout << setiosflags(ios::fixed) << setprecision(2); //方法二,c++cout << 0.2 * res << endl;return 0;
}

cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);

合在一起的意思就是,输出一个右对齐的小数点后两位的浮点数。

BC71-新年快乐

题目描述
新年到来,输出信息迎接新年。
输入描述:

输出描述:
Happy New Year*2019*

C参考代码

#include<stdio.h>
int main()
{printf("Happy New Year*2019*");return 0;
}

C++参考代码

#include<iostream>
using namespace std;
int main()
{cout << "Happy New Year*2019*";return 0;
}

BC70-空心三角形图案

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”三角形图案。
输入描述:多组输入,一个整数(3~20),表示输出的行数,也表示组成三角形边的“*”的数量。
输出描述:针对每行输入,输出用“*”组成的“空心”三角形,每个“*”后面有一个空格。

示例1
输入

4

输出

*       
* *     
*   *   
* * * *

示例2
输入
5

输出

*         
* *       
*   *     
*     *   
* * * * *

C参考代码

#include <stdio.h>
int main()
{int n;while(scanf("%d",&n)!=EOF){int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){if(j==0||i==j||i==n-1){printf("* ");}else{printf("  ");}}printf("\n");}}
}

C++参考代码

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

BC69-空心正方形图案

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。
输入描述:多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。

示例1
输入

4

输出

* * * *
*     *
*     *
* * * *

示例2
输入

5

输出
* * * * *
*       *
*       *
*       *
* * * * *

 

C参考代码

#include<stdio.h>
int main()
{int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(i==0||j==0||i==n-1||j==n-1)printf("* ");elseprintf("  ");}putchar(10);}}return 0;
}

C++参考代码

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

BC68-X形图案

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:针对每行输入,输出用“*”组成的X形图案。

示例1
输入

5

输出

*   *
 * *
  *  
 * *
*   *

示例2
输入

6

输出

*    *
 *  *
  **  
  **  
 *  *
*    *

C参考代码

#include <stdio.h>
int main()
{int n;while(~scanf("%d",&n)){for(int i=0;i<n;++i)//看成二维数组{for(int j=0;j<n;++j){if(i==j||j==n-i-1)//对角线与逆对角线printf("*");elseprintf(" ");//其余}printf("\n");}}return 0;
}

C语言多组输入也可以这样写while(~scanf("%d",&n)){}

C++参考代码

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

BC67-正斜线形图案

题目描述KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。

输入描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的正斜线。

示例1
输入

4

输出

   *
  *
 *  
*   

示例2
输入

5

输出

    *
   *
  *  
 *   
*

C参考代码

#include <stdio.h>
int main()
{int n;while (scanf("%d", &n) != EOF) {int i, j;for (i = 0; i < n; i++) {for (j = 0; j < n; j++) {if (i + j == n - 1) {printf("*");}else {printf(" ");}}printf("\n");}}
}

C++参考代码

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

 

BC66-反斜线形图案

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的反斜线形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成反斜线的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的反斜线。

示例1

输入

4

输出

*   *  * *

示例2

输入

5

输出

*    *   *  * *

C参考代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{int n;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (j = 0; j < n; j++){int spaceBeforNum = j;int starnum = 1;int spaceAfterNum = n - starnum - spaceBeforNum;for (i = 0; i < spaceBeforNum; i++){printf(" ");}for (i = 0; i < starnum; i++){printf("*");}for (i = 0; i < spaceAfterNum; i++){printf(" ");}printf("\n");}}return 0;
}

C++参考代码

#include<bits/stdc++.h>
using namespace std;
int main()
{int a;while(scanf("%d",&a) != EOF){for(int i = 0;i<a;i++){for(int j = 0;j<i;j++){printf(" ");}printf("*");//需要注意后面的空格,按每行字符一致原则for(int k = 0;k<a-i;k++){printf(" ");}printf("\n");}}return 0;
}

 

BC65-箭形图案

=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tab=answerKey

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。

输入描述:

多组输入,一个整数(2~20)。

输出描述:针对每行输入,输出用“*”组成的箭形。

示例1

输入

2

输出

    ***
******

示例2

输入

3

输出

      ******
**********

示例3

输入

4

输出

 

        **********
***************

C参考代码

#include <stdio.h>
int main()
{int z;while(scanf("%d", &z) != EOF){/*外层循环控制行 i,内层循环控制列。上半部分:z行先输出第一行6个,第二行4个,第三行2个  空格2z       zz-2      2z-42z-2i+2  2z-2i+2   2z-2i+2在输出i个"*"中间部分z+1个*下半部分:z行先输出2i个 空格在输出z-i+1个 "*"*/for(int i = 1; i <= z; i++){for(int j = 1; j <= 2*z-2*i+2; j++){printf(" ");}for(int k = 1; k <= i; k++){printf("*");}putchar(10);//putchar函数是输出一个字符。所以他代表'\n'也就是换行 }for(int i = 1; i <= z+1; i++){printf("*");}putchar(10);for(int i = 1; i <= z; i++){for(int j = 1; j <= 2*i; j++){printf(" ");}for(int k = 1; k <= z-i+1; k++){printf("*");}putchar(10);}}return 0;
}

深度理解

putchar(10);//putchar函数是输出一个字符。所以他代表'\n'也就是换行

上下对称图形的通用解法:分为上中下三个考虑,通过特例写出不变的数学表达式,循环也规范用i=0;i<数学表达式;i++

C++参考代码

标准的对称图形的处理方法

#include<bits/stdc++.h>
using namespace std;int main() {int n;while(cin >> n) {n++;for(int i=1;i<=2*n-1;i++) {int spaceNum = abs(i-n);int starNum = n-spaceNum;for(int j=0;j<spaceNum*2;j++)cout << " ";for(int j=0;j<starNum;j++)cout << "*";cout << endl;}}return 0;
}

深度理解

C++的多组输入:while(cin>>n){}

#include<bits/stdc++.h>包含了目前c++所包含的所有头文件!!!!

C++中的abs函数为求绝对值的函数

 

本文标签: CC刷题训练营