比赛地址:https://ac.nowcoder.com/acm/contest/310#question
A.B.C没什么好说的,根据题目要求输出就行,注意换行
D-显示Hello World的代码
注意双引号, 反斜杠的输出(转义序列的使用)
核心代码:
printf("printf(\"Hello, world!\\n\");\n");
E也不用说
F-缩短二进制
根据题目要求输出即可
核心代码:
int a = 1234;
printf("%#o %#X\n", a, a);
G-十六进制转十进制
算就完事儿了
提示:%md(这里m代表数字)表示输出字宽为m的十进制整数
小技巧:题目要求输出十六进制ABCDEF的十进制数,你先写个程序,以十六进制形式输入ABCDEF,然后以十进制形式输出,看一下输出结果,复制粘贴,按格式输出这个数就OK啦,傻蛋才去硬算,如下
int n;
scanf("%x", &n);
printf("%15d\n",n );
H和I不用说
说一下 J - printf的返回值
这个题很多人卡住了奥,一看就是基础不行
大家要知道一件事儿:printf是个函数,他是有返回值的,printf的返回值是它的第一个参数(即双引号里面的)字符的个数,数据类型是int
而且还要注意一点,看好输出的格式
核心代码:
int a = printf("Hello world!");
printf("\n");
printf("%d\n", a);
K不用说
看L和M,这俩是一个事儿
要知道,scanf的第一个参数,双引号里如果有除了转换符等那些你常写的,比如%d %c %s %f等,的字符,你输入的时候必须得输入相同的字符,才能输入正确
反之,你想按照题目的格式,就在scanf第一个参数里按照格式写
L和M的输入部分核心代码:
int a, b;
scanf("a=%d,b=%d", &a, &b); // L
float id, a, b, c;
scanf("%f;%f,%f,%f", &id, &a, &b, &c); // M
N题,看好备注
代码:
#include
#include
#include
int main(){
int a, b, c;
scanf("%4d%2d%2d", &a, &b, &c);
printf("year=%d\n",a);
if(b < 10) printf("month=0%d\n",b);
else printf("month=%d\n", b);
if(c < 10)
printf("date=0%d\n",c);
else
printf("date=%d\n",c);
//system("pause");
return 0;
}
O题,注意输出格式就行了
PS:
关于做这些题的一些个人建议:
这些题是帮助我们学习的,我们要在做题中学习,而不是为了做题而做题
遇到不会的地方,去查相关的知识点,百度 谷歌等搜索引擎走一套呗,不要急着找别人,要养成自学能力,自己动手解决问题带来的收获是巨大的
千万不要,千万不要,千万不要自己不思考,不动手,而跟别人要代码,这样即使你看会了,你的收获与记忆是很小的,毫不夸张的说,这个比赛现在是到了第五场,还没到那种特别需要动脑子的问题,没有没思路这一说
这些题都是很基础,很基础的,非常适合初学者学习和熟练代码能力,所以请以这种去学习的态度去做这些题,而不是要为了做题而做题
2018.12.27 15:19 寝室