大家好,我是安然无虞。 

目录

在线OJ

<1>.什么是在线OJ

<2>.为什么训练在线OJ

1.实践出真知

2.我是大V

3.有容乃大

4.缩短二进制

5.反向输出一个四位数

6.大小写转换

补充1:getchar()

补充2:输入缓冲区

7.小飞机

8.十六进制转十进制

9.printf的返回值

10.学生基本信息输入输出

结语:遇见安然遇见你,不负代码不负卿。


【前言】

其实这个在大一下学期的时候就已经刷完了,但是最近看鹏哥讲解的时候发现自己很多答案写的都很繁琐,再加上有段时间没写代码了,所以趁着假期利用几天时间二刷调整一下状态,再将每一道题整理在博客中,可能前面会很简单,后面会慢慢提升难度的哦,废话不多说,直接进入主题。

【声明】

前面题目很简单,非初学者勿看。

在线OJ

<1>.什么是在线OJ

OJ-在线判题系统(英语:online Judge,缩写OJ)是一种在编程竞赛中用来测试竞赛程序的在线系统,也可以用于平时练习。

<2>.为什么训练在线OJ

a.有一些比赛,比如:NOI、NOIP、ACM之类的编程竞赛都是采用在线OJ的方式进行;

b.现在IT大学生就业找工作的笔试环节也采用在线OJ的方式进行(笔试OJ化,这是未来的趋势)


好了,想必大家或多或少都接触过一些,在这里就不过多介绍咯,直接进入题目啦。

1.实践出真知

原题链接:实践出真知_牛客题霸_牛客网

题目描述:

代码执行:

//写主函数
//main函数是程序的入口 - 代码是从main函数的第一行开始执行的!
//一个工程中有且仅有一个main函数
#include<stdio.h>
int main()
{printf("Practice makes perfect!\n");return 0;
}

2.我是大V

原题链接:我是大V_牛客题霸_牛客网

题目描述:

代码执行:

代码1:

#include<stdio.h>int main()
{printf("v   v\n");//'\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");//'\n'- 换行return 0;
}

3.有容乃大

原题链接:有容乃大_牛客题霸_牛客网

题目描述:

代码执行:

#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 long));return 0;
}//sizeof是一个C语言中的操作符,是用来计算变量或者类型所占空间类型大小的,单位是字节
//C语言标准规定:sizeof(long long)>=sizeof(long)>=sizeof(int)

4.缩短二进制

原题链接:缩短二进制_牛客题霸_牛客网

题目描述:

代码执行:

代码1:

#include<stdio.h>
int main()
{printf("0%o 0X%X",1234,1234);return 0;
}

注意:

printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示

代码2:

#include<stdio.h>
int main()
{printf("%#o %#X",1234,1234);return 0;
}

5.反向输出一个四位数

原题链接:反向输出一个四位数_牛客题霸_牛客网

题目描述:

示例:

输入:1234
输出:4321

代码执行:

#include<stdio.h>int main()
{int n = 0;//输入scanf("%d", &n);//1234//输出//1234%10=4//1234/10=123//123%10=3//123/10=12//12%10=2//12/10=1//1%10=1//1/10=0//从上面步骤可知:重复模10除10的操作,所以可以写成循环的形式while (n){printf("%d", n % 10);n /= 10;}return 0;
}

6.大小写转换

原题链接:大小写转换_牛客题霸_牛客网

在讲解本题之前先补充两个概念:

补充1:getchar()

函数原型:

int getchar(void)

功能:

在标准输入缓冲区中读取一个字符,返回读到的字符的ASCII码值,如果读取失败,则返回EOF(-1)

问:为什么getchar()返回的是字符的ASCII码值?函数返回值为什么要放到一个int类型的变量中呢?不是应该放在一个char类型的变量中吗?

如:

int ch = 0;
ch = getchar();

答:

  • getchar()返回了字符的ASCII码值,ASCII码值是整数,存放在整型变量中没有任何问题;
  • 这一点也是最重要的一点,getchar()读取失败的时候返回EOF,EOF本质是-1(#define EOF -1),是一个整型值,在一个char类型中,是存储不下的;
  • 再结合getchat()函数的原型,getchar()的返回类型被定义为int, 那么返回数据应该被存放在int变量中

getchar(): 获取/输入一个字符;

putchar(): 输出一个字符

注意哦,这两个函数一次只能操作一个字符,没有scanf(),printf()功能齐全

补充2:输入缓冲区

引入:

#include<stdio.h>int main()
{char input[20] = { 0 };printf("请输入密码:>");scanf("%s", input);//输入abcdef最后加上一个\nprintf("请确认密码:(Y / N):>");int ch = getchar();if (ch == 'Y'){printf("确认成功\n");}else{printf("确认失败\n");}return 0;
}

此时输入缓冲区中放的是abcdef\n,scanf()函数将abcdef读走了,留下了一个\n,所以\n直接被getchar()读取,所以此时ch里面放的是\n,后面不会等到我们确认密码就直接输出确认失败了。

存在的问题:本题输入abcdef,然后按回车键,还没有等到我们输入字符(Y/ N)就直接输出“确认失败”了,那怎么改才能成为我们想要的呢?

在scanf()下面加上一条语句:getchar();目的只有一个,拿走回车键('\n')

存在的问题:这样改只能保证输入“abcdef”时可以正常执行,但如果输入的是"abcdef hehe"时又会直接输出“确认失败”了,不信你看...

我丢,这什么鬼,怎么又错了!?

注意:

scanf("%s", ...); //scanf()读取字符串的时候遇到空格时就停下来不再读取了 

分析上段代码:

#include<stdio.h>int main()
{char input[20] = { 0 };printf("请输入密码:>");scanf("%s", input);//scanf()只读取了"abcdef"getchar();//getchar()读取了一个空格,所以这里就有问题了,这里的getchar()只能拿走一个字符,我们想要的是它能将缓冲区//里剩下字符全部拿走,直至拿走'\n'printf("请确认密码:(Y / N):>");int ch = getchar();if (ch == 'Y'){printf("确认成功\n");}else{printf("确认失败\n");}return 0;
}

是呀,这里的getchar()只能拿走一个字符,我们想要的是它能将缓冲区里剩下的全部拿走,直至拿走'\n',该怎么改?

#include<stdio.h>int main()
{char input[20] = { 0 };printf("请输入密码:>");scanf("%s", input);//scanf()只读取了"abcdef"//清理缓冲区int tmp = 0;while ((tmp = getchar()) != '\n'){;//空语句,什么事都不干,拿字符就行了}printf("请确认密码:(Y / N):>");int ch = getchar();if (ch == 'Y'){printf("确认成功\n");}else{printf("确认失败\n");}return 0;
}

这样就可以了,注意实现上面清理缓冲区的功能哦。 好,那么现在开始讲解本题。

题目描述:

示例:

输入:AB
输出:ab

代码执行:

#include<stdio.h>int main()
{//EOF - end of file - 文件结束标志 - 通常是放在文件的末尾int ch = 0;while((ch=getchar())!=EOF){printf("%c\n", ch+32);//小写字母的ASCII值比大写字母的大32getchar();//读取输入缓冲区中的\n}return 0;
}

7.小飞机

原题链接:小飞机_牛客题霸_牛客网

题目描述:

代码执行:

//本题考查的是printf()
#include<stdio.h>
int main()
{printf("     **     \n");printf("     **     \n");printf("************\n");printf("************\n");printf("    *  *    \n");printf("    *  *    \n");return 0;
}

8.十六进制转十进制

原题链接:十六进制转十进制_牛客题霸_牛客网

题目描述:

注意:

printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

代码执行:

#include<stdio.h>
int main()
{printf("%15d\n",0XABCDEF);return 0;
}

9.printf的返回值

原题链接:printf的返回值_牛客题霸_牛客网

函数原型:

int printf( const char *format [, argument]... );

返回值:

引入一道笔试题:

#include<stdio.h>int main()
{printf("%d", printf("%d", printf("%d", 43)));return 0;
}

屏幕上打印的是:4321

为什么呢?

因为printf()函数的返回值是打印在屏幕上字符的个数。

好,现在进入题目。

题目描述:

代码执行:

代码1:

#include<stdio.h>
int main()
{int ret=printf("Hello world!");putchar('\n');printf("%d",ret);return 0;
}

其实一行就解决了:

代码2:

#include<stdio.h>int main()
{printf("\n%d\n", printf("Hello world!"));return 0;
}

10.学生基本信息输入输出

原题链接:学生基本信息输入输出_牛客题霸_牛客网

题目描述:

示例:

输入:17140216;80.845,90.55,100.00
输出:The each subject score of No. 17140216 is 80.85, 90.55, 100.00.

注意:小数在内存中可能不能精确保存,float和double精度不一样,一旦四舍五入,得到的结果可能就有差异。

代码执行:

#include<stdio.h>
int main()
{int id = 0;//学号float c_score = 0.0;float math_score = 0.0;float eng_score = 0.0;//输入scanf("%d;%f,%f,%f", &id,&c_score,&math_score,&eng_score);//输出printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", id,c_score,math_score,eng_score);return 0;
}

结语:遇见安然遇见你,不负代码不负卿。

求求了,来个三连吧。

鹏哥手把手带我刷好题 · 编程练习 · I相关推荐

  1. 鹏哥手把手带我刷好题 · 编程练习 · II

    大家好,我是安然无虞. 目录 1.判断字母 2.字符圣诞树 3.ASCII码 4.出生日期的输入输出 5.2的n次方计算 6.按照格式输入并交换输出 7.字符转ASCII码 8.计算表达式的值 9.计 ...

  2. 东哥手把手带你刷二叉树|第三期

    学算法认准 labuladong 后台回复进群一起力扣???? 读完本文,你可以去力扣解决: 652.寻找重复子树(Medium) 接前文 手把手带你刷二叉树(第一期)和 手把手带你刷二叉树(第二期) ...

  3. 手把手带你刷好题(牛客刷题⑤)

    作者:月亮嚼成星~ 博客主页:月亮嚼成星~的博客主页 专栏:手把手带你刷牛客 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客网 点击免费注册和我一起刷题吧 1.类中的数据域使 ...

  4. 【手把手带你刷好题】—— 34.求a+aa+aaa+aaaa+aaaaa之和(非初学者勿看)(作业、非力扣)

    [前言] 今天是刷题打卡第34天! 前两天比较忙,两天没有更新,不好意思哈老铁,今天全部补上! 原题:求a+aa+aaa+aaaa+aaaaa之和 题目描述: 求S = a + aa + aaa + ...

  5. 【手把手带你刷好题】——25.换酒问题(模拟、思维)

    [前言] 今天是刷题打卡第25天! 美好的一天从刷题开始,加油啦! 原题:换酒问题(模拟.思维) 题目描述: 小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒.你购入了 num ...

  6. 【手把手带你刷好题】—— 43.满足条件的两数之和(双指针、非力扣)

    [前言] 今天是刷题打卡第43天! 不好意思哈铁汁们,最近这几周要准备考试,博文更新的可能会不及时,但是一有时间笔者都会补上的哦,抱歉哈. 原题:满足条件的两数之和(双指针) 题目描述: 给定一个有序 ...

  7. 【手把手带你刷好题】—— 48.二叉树的层序遍历(BFS)

    [前言] 今天是刷题打卡第48天! 早成者未必有成,晚达者未必不达.一起都还来得及,加油哦. 原题: 二叉树的层序遍历(BFS) 原题链接:力扣 示例: 代码执行: class Solution { ...

  8. 【手把手带你刷好题】67. 反转链表·深剖

    大家好,我是安然无虞. 文章目录 每篇前言 面试题:反转链表 解题思路1:翻指针方向 解题思路2:头插法 遇见安然遇见你,不负代码不负卿. 每篇前言 博客主页:安然无虞 作者认证:2021年博客新星T ...

  9. 东哥手把手帮你刷通二叉树|第二期

    学算法认准 labuladong 东哥带你手把手撕力扣???? 读完本文,你能去力扣解决如下题目: 654.最大二叉树(难度 Medium) 105.从前序与中序遍历序列构造二叉树(难度 Medium ...

最新文章

  1. [Sdoi2008]沙拉公主的困惑
  2. Extended Euclidean algorithm(扩展欧几里得算法Matlab实现)
  3. JS:两个json数组合并、去重,以及删除某一项元素
  4. 为什么WebUI里新建任务的状态字段下拉框里没有released选项
  5. 深度学习目标检测之 YOLO v3
  6. docker部署webapp的例子
  7. 中国智能卡市场的新机会
  8. 免费题库CISP,NISP,SCSA,SCSP,CISA,CISSP,CISP-PTE
  9. 继电保护原理5-变压器保护
  10. Keil_V5 使用小技巧
  11. matlab 混沌_释放混沌猴子
  12. 微信会员卡-创建会员卡接口post参数字段说明
  13. 零基础学大数据难吗?
  14. 搜索引擎优化SEO专业术语总结(新手篇)
  15. c语言还是python-自学编程应该从c语言还是python入手?
  16. 前传(1):Kafka 的前生今世
  17. SpringBoot公共字段自动填充
  18. 《游戏学习》Java版俄罗斯方块小游戏源码实战
  19. UG/NX二次开发 选择坐标系控件 UF_UI_specify_csys
  20. C++性能之战(3)--emplace_back VS push_back

热门文章

  1. nginx: worker process is shutting down
  2. 深度学习中常用的损失函数
  3. 嵌入式linux ota,嵌入式Linux的OTA更新,基本原理和实现
  4. Cobble Web 页面操作记录
  5. 三、vue3--生命周期、Hook函数、 toRef和toRefs、其他的组合式API
  6. linux上cgconfig服务,linux系统调优-Cgroups
  7. python适合什么发型-下面不属于python特性的是( )。
  8. 开发指南专题六:JEECG微云快速开发平台代码生成
  9. 服务器虚拟化专用ovf模板,科学网—开放虚拟化格式规范2.0.0——OVF package - 唐宏伟的博文...
  10. python- selenium-快眼看书-林深终有路