(入门)BC6-小飞机_牛客题霸_牛客网 (nowcoder.com)
解析:
- 严格按照合适去打印就行。
- 注意*后边的空格可不可以不打印?(无影响,加了空格更加美观)
参考代码:
#include <stdio.h> int main() { printf(" ** \n"); printf(" ** \n"); printf("************\n"); printf("************\n"); printf(" * * \n"); printf(" * * \n"); return 0; }
(简单)BC8-十六进制转十进制_牛客题霸_牛客网 (nowcoder.com)
解析:
本题考查的是 %d 的格式控制指定域宽。
代码参考:
#include <stdio.h> int main() { printf("%15d\n", 0XABCDEF); return 0; }
解析:
本题的重点是要严格按照题目要求的格式,输出 2 行,先打印字符串,再打印字符串长度。这里就要控制好格式,写法有多种。
代码参考:(主要区别是\n和printf("Hello world!")的位置)
//代码1 #include <stdio.h> int main() { int ret = printf("Hello world!"); printf("\n"); printf("%d\n", ret); return 0; }
//代码2 #include <stdio.h> int main() { printf("\n%d\n", printf("Hello world!"));//Hello world打印完之后,换行,再返回12 return 0; }
补:
解析:
- 这个题需要注意对格式的指定。
- 因为题目中规定的学号的范围满足int类型(-2147483648——2147483647),所以可以用int类型来表示学号。
- 精度要求高用double;
精度要求不高用float。
参考代码:
#include <stdio.h> int main() { int id = 0; float score_c = 0.0; float score_math = 0.0; float score_eng = 0.0; //输入 scanf("%d;%f,%f,%f", &id, &score_c, &score_math, &score_eng); //输出 printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", id, score_c, score_math, score_eng); return 0; }
(简单)BC35-判断字母_牛客题霸_牛客网 (nowcoder.com)
解析:
- 本地是多组输入,一定要注意循环输入的问题
- 字符的判断可以自己写,也可以借助于库函数,需要熟悉库函数都有哪些。
isalpha()函数 - 用来专门判断一个字符是不是字母 —— 是字母返回非0,不是字母返回0。
参考代码:
#include <stdio.h> //代码1 int main() { int ch = 0; //多组输入 while((ch=getchar()) != EOF) { //判断并输出 if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z')) printf("YES\n"); else printf("NO\n"); getchar();//处理\n } return 0; }
//代码2 #include <ctype.h>//isalpha()函数需要用到该头文件 int main() { int ch = 0; //多组输入 while((ch=getchar()) != EOF) { //使用库函数判断并输出 if(isalpha(ch)) printf("YES\n"); else printf("NO\n"); getchar();//处理\n } return 0; }
(简单)BC12-字符圣诞树_牛客题霸_牛客网 (nowcoder.com)
解析:
- 每一行的输出是前边空格,后边1。
- 这道题的难点就是精确的控制空格的个数和1的个数。(理清楚思路再敲代码)
参考代码:
#include <stdio.h> int main() { //输入一个字符 char ch = 0; scanf("%c",&ch); //输出圣诞树 int i = 0; //每循环一次,打印一行 //每一行由两部分组成,空格和字符 for(i=0; i<5; i++) { //处理一行 //空格 int j = 0; for(j=0; j<5-i-1; j++) { printf(" "); } //字符 for(j=0; j<=i; j++)//第一行打印一个字符,第二行打印两个字符,以此类推 { printf("%c ", ch); } printf("\n");//一行打印完后换行 } return 0; }
(简单)BC13-ASCII码_牛客题霸_牛客网 (nowcoder.com)
解析:
这里得先了解清楚 ASCII 编码。如果采用 ASCII 编码,每个字符都有一个对应的数字,这个数字被称为这个字符的ASCII 码,如果把这个数字按照 %c 打印,打印的就是字符。
参考代码:
#include <stdio.h> int main() { char arr[] = {73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33}; //arr是数组,数组是用来访问下标的 int i = 0; //计算数组的元素个数 int sz = sizeof(arr)/sizeof(arr[0]); //循环遍历输出每一个元素 for(i=0; i<sz; i++) { //%c 控制打印字符 printf("%c", arr[i]);//每个字符不要隔开 } return 0; }
(简单)BC14-出生日期输入输出_牛客题霸_牛客网 (nowcoder.com)
解析:
这道题的难点在于如何按照指定域宽读取数据,如何按照指定格式打印数据。
参考代码:
#include <stdio.h> int main() { int year=0; int month = 0; int date = 0; //按照格式输入 scanf("%4d%2d%2d", &year, &month, &date);//%4d就是读取4位整数 //输出 printf("year=%4d\n", year); printf("month=%02d\n", month);//输出不够2位时,左边拿0填充 printf("date=%02d\n", date); return 0; }
(简单)BC29-2的n次方计算_牛客题霸_牛客网 (nowcoder.com)
解析:
- 本题为多组输入,要使用循环输入。
- 注意<<(左移操作符的使用,左移一位有乘2的效果,左移n位有乘2^n的效果)。
参考代码:
#include <stdio.h> int main() { int n = 0; //多组输入 - 整型 while(scanf("%d", &n) != EOF) { //2的n次方计算 printf("%d\n", 1<<n);//移动的是二进制位 } return 0; }
(简单)BC15-按照格式输入并交换输出_牛客题霸_牛客网 (nowcoder.com)
解析:
输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
参考代码:
#include <stdio.h> int main() { int a = 0; int b = 0; int c = 0; scanf("a=%d,b=%d", &a, &b); //交换 c = a; a = b; b = c; //输出 printf("a=%d,b=%d\n",a, b); return 0; }
(简单)BC16-字符转ASCII码_牛客题霸_牛客网 (nowcoder.com)
解析:
直接按照%d打印,就是字符对应的ASCII码。
参考代码:
#include <stdio.h> int main() { char ch = 0; //输入(两种方式) //ch = getchar();//第一种方式 scanf("%c", &ch);//第二种方式 printf("%d\n",ch); return 0; }
(入门)BC17-计算表达式的值_牛客题霸_牛客网 (nowcoder.com)
解析:
- 按照操作符的优先级直接设计表达式,计算输出就行。
- 数学中的 × 对应计算机中的 * , ÷ 对应的 / 。
参考代码:
#include <stdio.h> int main() { int a = 40; int c = 212; int ret = (-8+22)*a-10+c/2; printf("%d\n", ret); return 0; }
(简单)BC18-计算带余除法_牛客题霸_牛客网 (nowcoder.com)
解析:
掌握 %(取模操作符) 和 /(除法操作符)两个操作符的使用,按照格式输出就行。
参考代码:
int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int m = a/b;// / - 除法操作符 - 得到的是商 int n = a%b;// % - 取余(取模)操作符 - 得到的是余数 printf("%d %d\n", m, n); return 0; }