【C语言】牛客网刷题训练-1
针对C语言入门OJ题(牛客网)
https://www.nowcoder.com/
这段时间的刷题训练学习目标:
- 学习和巩固已掌握的C语言知识,加深对C语言的理解和使用。
- 熟练掌握在线OJ刷题,熟悉互联网公司笔试的方式。
了解OJ
什么是在线OJ?
在线判题系统 ( 英语 : Online Judge ,缩写 OJ )是一种在 编程 竞赛中用来测试参赛程序的在线系统, 也可以用于平时练习。为什么训练在线OJ?
- 有一些比赛,比如:全国青少年信息学奥林匹克竞赛(NOI)、全国青少年信息学奥林匹克联赛(NOIP)、国际大学生程序设计竞赛(ACM)之类的编程竞赛都是采用在线OJ的方式进行。
- 现在的IT大学生就业找工作的笔试环节也采用在线OJ的方式进行。(笔试OJ化,这是未来的趋势)。
进入主题
1.(入门) BC1-实践出真知_牛客题霸_牛客网 (nowcoder.com)
解析:
本题是一个没有输入要求的题目,只考察输入,所以只需要准确无误的输出结果就行了。参考代码:
#include
int main()
{printf("Practice makes perfect!");return 0;
} 2. (入门)BC2-我是大V_牛客题霸_牛客网 (nowcoder.com)

解析:
这个题也是 没有输入要求 的题目。题目中只要能够找到输出的规律和掌握 \n 的使用就没问题。 这里简单提及:转义字符,可以做一个拓展。参考代码:
#include
//代码1
int main()
{printf("v v\n");printf(" v v\n");printf(" v\n");return 0;
} //代码2
#include
int main()
{//一行输出的效果printf("v v\n v v\n v\n");return 0;
} 两种思路,结果一致。
3.(简单) BC3-有容乃大_牛客题霸_牛客网

解析:
将题目中所给的 ?替换成%d,同时要记得换行(避免格式错误!)
本题的关键是要掌握C语言的 sizeof 这个操作符。 sizeof 是 C 语言的一个单目操作符, 用来计算不同数据类型所占内存空间的大小 ,运算对象可以是具体的数据类型(如:变量名)或类型,以 字节为单位返回运算对象的大小 。参考代码 :
#include
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;
} 测试结果:

补:

4. (简单)BC7-缩短二进制_牛客题霸_牛客网

解析:
需要我们掌握对个各种数据的格式控制。
参考代码:
#include
int main()
{//写法1printf("0%o 0X%X", 1234, 1234);return 0;
} #include
int main()
{//写法2printf("%#o %#X", 1234, 1234);return 0;
} 测试结果:

补:
% c - 字符 % hd - 短 整形 % d - 整形 % s - 字符串 % f - 单精度浮点数 % lf - 双精度浮点数 % p - 地址格式 ... ... (注:严格按照题目要求的格式输出,才能保证正确性) 格式参考:https://zh.cppreference.com/w/c/io/fscanf5. (简单)BC19-反向输出一个四位数_牛客题霸_牛客网 (nowcoder.com)

解析:
这里得掌握操作符 % (模) 和 /(除) 的基本使用和特点。其次是循环的使用。 % (模)后得到的是余数; /(除) 后得到的是商。参考代码:
#include
int main()
{int n = 0;//输入数据scanf("%d", &n);//获取每一位while(n){printf("%d", n%10);n /=10;}return 0;
}
6. (简单)BC28-大小写转换_牛客题霸_牛客网

解析:
- 多组数据输入的问题。
- 清楚ASCII码表中一些常用字符对应的ASCII值。(计算机中存储的是二进制)
ASCII码一览表,ASCII码对照表 (biancheng.net)
3.getchar清理缓冲区的问题,这里得理解输入缓冲区的问题。
getchar() - EOF:
参考代码:
//代码1-这个代码对吗?(思考)
#include
int main()
{int ch = 0;//循环数据输入//EOF - end of file -- 文件结束标志 -- 通常为文件的末尾while((ch=getchar()) != EOF){printf("%c\n", (ch+32));}return 0;
} //代码2-正确的代码实现
#include
int main()
{int ch = 0;//循环数据输入while((ch=getchar()) != EOF){//简化成一行printf("%c\n", (ch+32));//注释是两行的写法//putchar(ch+32);//printf("\n");getchar();//用来处理多余的\n字符}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
