1.(入门) BC1-实践出真知_牛客题霸_牛客网 (nowcoder.com)
解析:
本题是一个没有输入要求的题目,只考察输入,所以只需要准确无误的输出结果就行了。
参考代码:
#include <stdio.h> int main() { printf("Practice makes perfect!"); return 0; }
2. (入门)BC2-我是大V_牛客题霸_牛客网 (nowcoder.com)
解析:
这个题也是 没有输入要求 的题目。题目中只要能够找到输出的规律和掌握 \n 的使用就没问题。
这里简单提及:转义字符,可以做一个拓展。
参考代码:
#include <stdio.h> //代码1 int main() { printf("v v\n"); printf(" v v\n"); printf(" v\n"); return 0; }
//代码2 #include <stdio.h> int main() { //一行输出的效果 printf("v v\n v v\n v\n"); return 0; }
两种思路,结果一致。
3.(简单) BC3-有容乃大_牛客题霸_牛客网
解析:
将题目中所给的 ?替换成%d,同时要记得换行(避免格式错误!)
本题的关键是要掌握C语言的 sizeof 这个操作符。
sizeof 是 C 语言的一个单目操作符, 用来计算不同数据类型所占内存空间的大小 ,运算对象可以是具体的数据类型(如:变量名)或类型,以 字节为单位返回运算对象的大小 。
参考代码 :
#include <stdio.h> int main() { printf("The size of short is %d bytes.\n", sizeof(short)); printf("The size of int is %d bytes.\n", sizeof(int)); printf("The size of long is %d bytes.\n", sizeof(long)); printf("The size of long long is %d bytes.\n", sizeof(long)); return 0; }
测试结果:
补:
解析:
需要我们掌握对个各种数据的格式控制。
参考代码:
#include <stdio.h> int main() { //写法1 printf("0%o 0X%X", 1234, 1234); return 0; }
#include <stdio.h> int main() { //写法2 printf("%#o %#X", 1234, 1234); return 0; }
测试结果:
补:
% c - 字符
% hd - 短 整形
% d - 整形
% s - 字符串
% f - 单精度浮点数
% lf - 双精度浮点数
% p - 地址格式
... ...
(注:严格按照题目要求的格式输出,才能保证正确性)
格式参考:https://zh.cppreference.com/w/c/io/fscanf
5. (简单)BC19-反向输出一个四位数_牛客题霸_牛客网 (nowcoder.com)
解析:
这里得掌握操作符 % (模) 和 /(除) 的基本使用和特点。其次是循环的使用。
% (模)后得到的是余数;
/(除) 后得到的是商。
参考代码:
#include <stdio.h> int main() { int n = 0; //输入数据 scanf("%d", &n); //获取每一位 while(n) { printf("%d", n%10); n /=10; } return 0; }
解析:
- 多组数据输入的问题。
- 清楚ASCII码表中一些常用字符对应的ASCII值。(计算机中存储的是二进制)
ASCII码一览表,ASCII码对照表 (biancheng.net)
3.getchar清理缓冲区的问题,这里得理解输入缓冲区的问题。
getchar() - EOF:
参考代码:
//代码1-这个代码对吗?(思考) #include <stdio.h> int main() { int ch = 0; //循环数据输入 //EOF - end of file -- 文件结束标志 -- 通常为文件的末尾 while((ch=getchar()) != EOF) { printf("%c\n", (ch+32)); } return 0; }
//代码2-正确的代码实现 #include <stdio.h> int main() { int ch = 0; //循环数据输入 while((ch=getchar()) != EOF) { //简化成一行 printf("%c\n", (ch+32)); //注释是两行的写法 //putchar(ch+32); //printf("\n"); getchar();//用来处理多余的\n字符 } return 0; }