由于有练习C++的需要,所以剩下的题将会提供C语言以及C++的两个参考代码
截止20210330目前更新至BC90
目录
由于有练习C++的需要,所以剩下的题将会提供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++;
else
neg++;
}
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)//如果当前元素大于0
sum+=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和s2
string s2;
cin>>s1>>s2;//依次输入
if(s1==s2)//如果相等
cout<<"same";//输出same
else//否则不相等
cout<<"different";//输出different
return 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和min
for(int i=0;i<num;++i)
{
cin>>a[i];
sum+=a[i];
if(max<a[i])
max=a[i];//比较,将大值赋给max
if(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);
else
printf("%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;//偶数的个数加1
else
++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;//初始化结果个数为0
int main()
{
for (int i=1; i<=2019; ++i) {
int t = i;
while (t > 0) {
if (t%10 == 9) {//余数为9,说明包含9
result++;//结果数就加一
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);
else
printf("%d",-1);
return 0;
}
C++参考代码
#include<iostream>
using namespace std;
int result(int x)//定义了一个返回值为int,形参为int的函数result
{
if(x<0)
return 1;//如果小于0,返回1
else if(x==0)
return 0;//如果等于0,返回0
else
return -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");
else
printf("NO");
return 0;
}
C++参考代码
#include<iostream>
using namespace std;
int main()
{
int m;
cin>>m;//输入要判断的数M
if(m%5)
cout<<"NO";//余数不是0;不能被整除输出NO
else
cout<<"YES";//余数是0,能够被整除输出YES
return 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 100
int 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整除的数清0
for (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 50
int 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 << "* ";
else
cout << " ";
}
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("* ");
else
printf(" ");
}
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("*");
else
printf(" ");//其余
}
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<<"*";
else
cout<<" ";
}
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-箭形图案
题目描述
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-4
2z-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函数为求绝对值的函数