BC13 出生日期输入输出
题目链接:出生日期输入输出_牛客题霸_牛客网
首先是我看到题目自己写的代码:
#include <stdio.h>
int main() {
int x=0,y=0,z=0;
scanf("%4d%2d%2d",&x,&y,&z);
printf("year=%d\n",x);
if(y<10)
printf("month=0%d\n",y);
else
printf("month=%d\n",y);
if(z<10)
printf("date=0%d\n",z);
else
printf("date=%d\n",z);
return 0;
}
考察的是scanf的输入格式控制与输出
但我最开始写的代码是错误的,运行不出来,看了给的提示之后再写了一遍,可以运行,但是很冗长 ,而且之前不了解输入也可以指定读取多少位数字,就像之前了解的浮点数float在输出是要是只保留两位小数,就可以写成: float x=2.189; printf("%.2f",x);
下面是官方给的代码,比我的简短的多。
#include <bits/stdc++.h>
using namespace std;
int main() {
int year = 0, month = 0, day = 0;
scanf("%4d%2d%2d", &year, &month, &day);
//使用%0可以填充前导0
printf("year=%d\n", year);
printf("month=%02d\n", month);
printf("date=%02d\n", day);
return 0;
}
不过是C++的写法,除了头部不同,其他是可以直接照搬的,就比如这样,(仅我这次的代码可以,其他时候不确定)
#include <stdio.h>
int main() {
int year = 0, month = 0, day = 0;
scanf("%4d%2d%2d", &year, &month, &day);
//使用%0可以填充前导0
printf("year=%d\n", year);
printf("month=%02d\n", month);
printf("date=%02d\n", day);
return 0;
}
然后是官方给出的具体解析,有关于输入输出:
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
BC15 大小写转换(完成版)
题目链接:大小写转换_牛客题霸_牛客网
这道题要记得大小写字母的ASCII码值
一些要记得的:(我认为)
0~9 对应的ASCII码值:48~57
A~Z 对应的ASCII码值:65~90
a~z 对应的ASCII码值:97~122
其中,大小写字母之间相差32,在写这道题时可以利用这个数字32来进行大小写字母间的转化
#include <stdio.h>
int main() {
char a=0;
while((scanf("%c",&a))!=EOF)
{
getchar();
printf("%c\n",a+32);
}
return 0;
}
具体getchar的用法在我的 5_6 5_7C语言(初阶)这篇博客中详细讲解了