牛客網-程式語言初學練習賽(第一場)題解
比賽地址: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 <stdio.h>
#include <stdlib.h>
#include <string.h>
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 寢室