牛客比赛官网:https://ac.nowcoder.com/acm/contest/6632
出生日期输入输出
题目描述
输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
输入描述:
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
输出描述:
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
示例1
输入
20130225
输出
year=2013
month=02
date=25
备注:
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
这里要普及一下:C++中substr的用法
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<"year="<<s.substr(0,4)<<endl
<<"month="<<s.substr(4,2)<<endl
<<"date="<<s.substr(6,2);
return 0;
}
字符金字塔
题目描述
输入一个字符,用它构造一个三角形金字塔。
输入描述:
输入只有一行,一个字符。
输出描述:
该字符构成的三角形金字塔。
示例1
输入
1
输出
共5行,每行按格式输出,换行,注意空格
#include<bits/stdc++.h>
using namespace std;
int main()
{
char c;
cin>>c;
cout<<" "<<c<<endl
<<" "<<c<<" "<<c<<endl
<<" "<<c<<" "<<c<<" "<<c<<endl
<<" "<<c<<" "<<c<<" "<<c<<" "<<c<<endl
<<c<<" "<<c<<" "<<c<<" "<<c<<" "<<c;
return 0;
}
大小写转换
题目描述
实现字母的大小写转换。多组输入输出。
输入描述:
多组输入,每一行输入大写字母。
输出描述:
针对每组输入输出对应的小写字母。
示例1
输入
A
B
输出
a
b
备注:
多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。
注意点在备注中已经给出,下面给出两种解法。
#include <stdio.h>
int main()
{
char ch;
while((ch=getchar())!=EOF)
{
if(ch>='A'&&ch<='Z') ch+=32;
putchar(ch);
}
}
/*
另一种解法:用库函数具有可移植性,若是不用ASCII码的程序,+-32是无效的;
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch;
while(scanf("%c", &ch) == 1)
{
putchar(tolower(ch));
getchar();
}
return 0;
}
*/
KiKi和酸奶
题目描述
BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?
输入描述:
多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。
输出描述:
针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。
示例1
输入
8 5 16
输出
4
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n=0, h=0, m=0;
//循环读入n,h,m
while(scanf("%d %d %d", &n, &h, &m) != EOF)
{
//判断是否能够整除,如果可以输出 n-m/h),反之减1
if(m%h == 0) printf("%d\n", n - (m / h));
else printf("%d\n", n-(m/h)-1);
}
return 0;
}
衡量人体胖瘦程度
输入描述:
多组输入,每一行包括两个整数,用空格隔开,分别为体重(公斤)和身高(厘米)。
输出描述:
针对每行输入,输出为一行,人体胖瘦程度,即分类。
示例1
输入
80 170
60 170
90 160
50 185
输出
Overweight
Normal
Obese
Underweight
#include <bits/stdc++.h>
using namespace std;
int main()
{
int weight=0, height=0;
float BMI=0.f;
//循环读入体重和身高
while(scanf("%d %d", &weight, &height) != EOF)
{
//根据公式计算BMI
BMI = weight / (height/100.f * height/100.f);
//使用if else嵌套判断BMI所在的区间,输出即可
if(BMI < 18.5f) printf("Underweight\n");
else if(BMI >=18.5f && BMI <= 23.9f) printf("Normal\n");
else if(BMI > 23.9f && BMI <= 27.9f) printf("Overweight\n");
else printf("Obese\n");
}
return 0;
}
获得月份天数
题目描述
KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。
输入描述:
多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
示例1
输入
2008 2
输出
29
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(b==1||b==3||b==5||b==7||b==8||b==10||b==12) b=31;
else if(b==2) {
b=28;
if((a%400==0)||(a%4==0&&a%100!=0)) b++;
}
else b=30;
printf("%d\n",b);
}
}
竞选社长
题目描述
假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.
输入描述:
一行,字符序列,包含A或B,输入以字符0结束。
输出描述:
一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。
示例1
输入
ABBABBAAB0
输出
B
遍历读入的字符串,统计A和B的个数,最后用 if判断一下,对应输出即可。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[1010];
int cc1 = 0, cc2 = 0;
scanf("%s", a);
int n = strlen(a);
for (int i=0; i<n-1; i++) {
if (a[i]=='A') cc1++;
else cc2++;
}
if(cc1>cc2) puts("A");
else if(cc1<cc2) puts("B");
else puts("E");
}
K形图案
题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的K形图案。
输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用星号组成的K形,每个“*”后面有一个空格。
示例1
输入
2
输出
示例2
输入
3
输出
示例3
输入
4
输出
这题就很奇怪,自己的输出完全符合样例,就是没过…先贴上去做个错误示范,明天五点半起床练车,时间有点赶
#include <stdio.h>
int main()
{
int i,j,k,n;
while(scanf("%d",&n)!=EOF)
{
for(i=1; i<=n; i++)
{
printf("* ");
for(j=1;j<=n-i+1;j++) printf("* ");
for(k=0; k<i-1; k++) printf(" ");
printf("\n");
}
for(i=1; i<=n+1; i++)
{
printf("*");
for(j=1; j<=i-1; j++) printf(" *");
for(k=0; k<=n-i+1; k++) printf(" ");
printf("\n");
}
}
return 0;
}
/*
没通过的
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
for(int i=n+1; i>=1; i--)
{
for(int j=1; j<=i ;j++) cout<<"*"<<" ";
cout<<endl;
}
for(int i=2; i<=n+1; i++)
{
for(int j=1; j<=i; j++) cout<<"*"<<" ";
cout<<endl;
}
}
return 0;
}
*/
正斜线形图案
题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用星号组成的正斜线形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的星号的数量。
输出描述:
针对每行输入,输出用星号组成的正斜线。
示例1
输入
4
输出
示例2
输入
5
输出
与之前斜线图案类似,修改空格的控制即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int n = 0;
while(scanf("%d", &n) != EOF)
{
int space = n-1;
for(int i=0; i<n; ++i)
{
for(int j=0; j<space; ++j) printf(" ");
printf("*");
for(int k=0; k<i; ++k) printf(" ");
printf("\n");
space--;
}
}
return 0;
}
X形图案
题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用星号组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
示例1
输入
5
输出
示例2
输入
6
输出
找出规律,然后判断是否满足情况输出即可。
#include <bits/stdc++.h>
using namespace std;
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==j) printf("*");
else if(j == n-i-1) printf("*");
else printf(" ");
}
printf("\n");
}
}
return 0;
}