牛客网-编程初学者入门训练
Posted 嫚嫚_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网-编程初学者入门训练相关的知识,希望对你有一定的参考价值。
BC51 三角形判断
# include<stdio.h>
int main()
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c)!=EOF)
if(a+b>c&&b+c>a&&a+c>b)
if(a==b&&b==c)
printf("Equilateral triangle!\\n");
else if((a==b)||(a==c)||(b==c))
printf("Isosceles triangle!\\n");
else
printf("Ordinary triangle!\\n");
else
printf("Not a triangle!\\n");
BC52 衡量人体胖瘦程度
# include<stdio.h>
int main()
int weight, height;
while (scanf("%d %d", &weight, &height) != EOF)
float h = height / 100.0;
float BIM = weight /(h * h);
if (BIM < 18.5)
printf("Underweight\\n");
else if (BIM >= 18.5 && BIM <= 23.9)
printf("Normal\\n");
else if (BIM > 23.9 && BIM <= 27.9)
printf("Overweight\\n");
else
printf("Normal\\n");
进制加法
# include<iostream>
using namespace std;
int main()
int a,b;
cin>>hex>>a>>oct>>b;
cout<<dec<<a+b<<endl;
BC117 小乐乐走台阶
用迭代相加
#include<iostream>
using namespace std;
int main()
int a;
cin>>a;
int s[a];
s[1]=1;
s[2]=2;
for(int i=3;i<=a;i++)
s[i]=s[i-1]+s[i-2];
cout<<s[a]<<endl;
BC95 最高分与最低分之差
#include<iostream>
using namespace std;
int main()
int a;
cin>>a;
int s[a];
int max=0;
int min=101;
for(int i=0;i<a;i++)
cin>>s[i];
if(s[i]>max)
max=s[i];
if(s[i]<min)
min=s[i];
cout<<max-min<<endl;
BC65 箭形图案
#include<iostream>
using namespace std;
int main()
int n = 0;
while ((scanf("%d", &n)) != EOF)
int i = 0;
int j = 0;
for (i = 0; i <= n; i++)
for (j = 0; j < n - i; j++)
printf(" ");
for (j = 0; j <= i; j++)
printf("*");
printf("\\n");
for (i = 0; i < n; i++)
for (j = 0; j <= i; j++)
printf(" ");
for (j = 0; j < n - i; j++)
printf("*");
printf("\\n");
return 0;
BC128 小乐乐计算求和
#include<iostream>
using namespace std;
int main()
int num;
int sum=0;//计算结果
int a=1;
cin>>num;
for(int i=1;i<=num;++i)
a=a*i;//从1开始
sum+=a;//计算和
cout<<sum<<endl;
return 0;
#include<iostream>
using namespace std;
int main()
int a;
cin>>a;
int sum=0;
for(int i=1;i<=a;i++)
int sum2=1;
for(int j=1;j<=i;j++)
sum2=sum2*j;
sum+=sum2;
cout<<sum<<endl;
BC111 小乐乐与进制转换
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
int i=0,n,m,num[100];
char a[6]='0','1','2','3','4','5';//也可以用string
cin>>n;
while(n>0)
num[i++]=n%6;//取余数
n=n/6;//短除法
for(i=i-1;i>=0;i--)
m=num[i];
cout<<a[m];//输出
return 0;
BC99 序列中整数去重
#include <iostream>
using namespace std;
int main()
int n;
cin>>n;
int a[n+1];//放置索引越界,数组大一些
int tmp[n+1];// 定义一个和a相同大小的数组,存放去重后的数
for(int i=0;i<n;++i)
cin>>a[i];//依次输入数组a
int m = 0; // 记录当前tmp到底存了多少个元素
for (int k = 0; k < n; ++k)
int j = 0;
for (; j < m; j++)//可以省略j=0
if (a[k] == tmp[j])//拿a[i]依次与tmp里的元素对比
break; // 找到相同的了就break
if (j == m)
// 没有找到一个相同的,把a中此元素放入tmp里
tmp[m] = a[k];
m++;
for (int ii = 0; ii < m; ii++)
cout << tmp[ii] << " ";//输出
return 0;
BC85 包含数字9的数
#include<iostream>
using namespace std;
int main()
int sum=0;
for(int i=0;i<=2019;i++)
int d=i;
while(d)
if(d%10==9)
sum++;
break;
else
d/=10;
cout<<sum<<endl;
BC77 有序序列插入一个数
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
int a ;
cin>>a;
vector<int>v;
for(int i=0;i<a;i++)
int d;
cin>>d;
v.push_back(d);
int e;cin>>e;
v.push_back(e);
sort(v.begin(),v.end());
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
cout<<*it<<" ";
BC109 杨辉三角
#include <iostream>
#include <iomanip>
using namespace std;
/*杨辉三角最终显示效果是一个等腰三角形,两个最外边都是1
杨辉三角的根本在于,每个数等于它上方两数之和
*/
int main()
int n;//变量n在此处起到了限制输出行数的作用,可优化成用户输入
cin>>n;
int i,j,a[n][n];
//使第一列和对角线元素的值为1
for (i=0;i<n;i++) //前两行全为1,拿出来单独处理
a[i][i]=1;//使最右侧边全为1
a[i][0]=1;//使最左侧边全为1
//从第三行开始处理
for (i=2;i<n;i++) //三行开始出现变化
for (j=1;j<=i-1;j++) //j始终慢i一步
a[i][j]=a[i-1][j-1]+a[i-1][j];//每个数等于它上方两数之和,如a32=a21+a22
//输出数组各元素的值
for (i=0;i<n;i++) //从第一行开始
for (j=0;j<=i;j++) //利用j将每一行的数据全部输出
cout<<setw(5)<<a[i][j]; //在C++中,setw(int n)用来控制输出间隔,这里是指前元素末尾与后元素末尾之间有个5空格位
cout<<endl;
//cout<<endl;
return 0;
BC55 简单计算器
#include <bits/stdc++.h>
using namespace std;
int main()
double a = 0.0, b = 0.0;
char op = 0;
//循环输入表达式
while(scanf("%lf%c%lf", &a, &op, &b) != EOF)
//如果表达式中存在非法的运算符则跳过
if(op != '+' && op != '-' && op != '*' && op != '/')
printf("Invalid operation!\\n");
continue;
//依次判断运算符为加减乘除的情况,输出结果
if(op == '+')
printf("%.4lf+%.4lf=%.4lf\\n", a,b,a+b);
else if(op == '-')
printf("%.4lf-%.4lf=%.4lf\\n", a,b,a-b);
else if(op == '*')
printf("%.4lf*%.4lf=%.4lf\\n", a,b,a*b);
else
//除法运算注意分子不能为0
if(b == 0.0)
printf("Wrong!Division by zero!\\n");
else
printf("%.4lf/%.4lf=%.4lf\\n", a,b,a/b);
return 0;
BC70 空心三角形图案
#include<iostream>
using namespace std;
int main()
int a;
while(cin>>a)
char s[a][a];
for(int i=0;i<a;i++)
for(int j=0;j<i+1;j++)
if(i==j||i==0||i==a-1||j==0)
cout<<"* ";
else
cout<<" ";
cout<<endl;
BC96 有序序列判断
#include<iostream>
using namespace std;
int main()
int n;
cin>>n;
int a[n+1];//放置索引越界,将数组定义的大一些
for(int i=0;i<n;++i)
cin>>a[i];//依次输入数组a中的元素
for(int j=2;j<n;++j)
if(a[1]>a[0])//判断开头是升还是降,进入if表示是升序
if(a[j]<a[j-1])//如果有不符合的
cout<<"unsorted";//则不是有序的
break;
else if(j==n-1)//一直到最后都是符合的
cout<<"sorted";//则整个数组都是升序,输出有序
else//如果开头是降序
if(a[j]>a[j-1])//有相邻元素不满足降序排列
cout<<"unsorted";//则不是有序的
break;
else if(j==n-1 )//一直到最后,整个数组都是降序的
cout<<"sorted";//输出有序
return 0;
BC118 小乐乐与序列
#include<iostream>
#include<algorithm>//sort需要包含的头文件
using namespace std;
int main()
int n,t;
cin>>n;
int k[n+1];//数组,把n个数都放进去
for(int i=0;i<n;++i)
cin>>k[i];//逐个输入
sort(k,k+n);//sort可以排序
for(int j=0;j<n;++j)
if(k[j]==k[j+1])
continue;//重复的不输出
cout<<k[j]<<" ";
return 0;
BC119 小乐乐与字符串
#include<iostream>
using namespace std;
int main()
ios::sync_with_stdio(0);//而这段语句可以来打消iostream的输入 输出缓存,可以节省许多时间
string s;
cin >> s;//输入s
long long ans = 0;//初始化为0
long long sum = 0;//初始化为0
int c=0, h=0;//初始化为0
int u;
for (int i = 0; i < s.size(); i++)//s.size(),字符串s的长度
if (s[i] == 'C')//如果第一个符合C
c++;
else if (s[i] == 'H')//遇到H的话就组成CH此时有C个"CH”序列
h += c;
else if(s[i]=='N')//找到“N”的时候,就是“CH“还有"N组成的“CHN”
ans +=h;//个数做累加
cout << ans << endl;//输出结果
return 0;
BC116 小乐乐改数字
#include <stdio.h>
#include<math.h>
int main()
int n = 0;
scanf("%d", &n);
int ret = 0;
int i = 0;
while (n)
int w = n % 10;
if (0 == w % 2)
w = 0;
else
w = 1;
ret += w * pow(10, i++);
n /= 10;
printf("%d\\n", ret);
return 0;
BC108 矩阵交换
#include <iostream>
#include <string>
using namespace std;
int main()
int n,m, i, j;
cin>>n>>m;
int a[12][12];
for(i = 0;i < n;i++)
for(j = 0;j < m;j++)
cin>>a[i][j];//输入矩阵的每个元素
int num;//要交换的次数
cin>>num;//输入要交换的次数
int n1,n2;
char c;
while(num)//num不为0的话就进while
cin>>c>>n1>>n2;//输入要交换的三个关键参数
if(c=='r')//交换行
for(i=0;i<m;++i)//搞明白行交换是怎么进行的
int temp=a[n1-1][i];//有一个temp就可以了
a[n1-1][i]=a[n2-1][i];
a[n2-1][i]=temp;
else if(c=='c')//交换列
for(i=0;i<n;++i)//搞明白列交换是怎么进行的
int temp=a[i][n1-1];//temp进行过度
a[i][n1-1]=a[i][n2-1];
a[i][n2-1]=temp;
--num;//交换一次就减一次
for(i = 0;i < n;i++)
for(j = 0;j < m;j++)
cout<<a[i][j]<<" ";//输入矩阵的每个元素
cout<<endl;
return 0;
以上是关于牛客网-编程初学者入门训练的主要内容,如果未能解决你的问题,请参考以下文章