1. 程式人生 > >牛客網-程式語言初學練習賽(第一場)題解

牛客網-程式語言初學練習賽(第一場)題解

比賽地址: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     寢室