首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言刷题】第一天:简单代码入门,熟悉IO模式

【C语言刷题】第一天:简单代码入门,熟悉IO模式

作者头像
艾莉丝努力练剑
发布2025-11-13 09:53:48
发布2025-11-13 09:53:48
1350
举报
文章被收录于专栏:C / C++C / C++

🔥个人主页艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》C语言刷题12天IO强训 🍉学习方向:C/C++方向 ⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平


前言:在正式内容更新前,我们先来说说刷题、写代码的必要性和好处。我们在【C语言刷题】中练习的题目不会特别难,当然肯定有简单的也有难的,重要的是熟悉代码,我们在笔试、面试中考察的算法题基本上是接口型,但是就像我在数据结构专栏第一篇:算法复杂度的开篇唠叨中写到的那样——“大厦岂能构筑于沙丘之上”,我们练习IO模式,再去写接口型,有了基础,写起来才会游刃有余。写代码就应了那句老话“不动笔不读书”,我们程序猿是“不敲键盘不学技术”,而且敲代码好处很多,不仅能训练算法思维,也能快速上手新学习的知识点、技术等,而且在像牛客、力扣(LeetCode)这些刷题网站刷题,当你写出一个复杂度O(n)甚至O(1)的算法,用例全部通过,多么激动人心!这不是正向反馈嘛!学习的动力不就来了吗! 闲话少叙,我们不多赘言啦!接下来就进入正题!希望大家静下心来,认真练习! PS:博主能力有限,本专栏适用于代码小白刷题,大佬们多多包涵(抱拳)!



目录

正文

一、实践出真知

二、我是大V

三、有容乃大

四、缩短二进制

五、反向输出一个四位数

六、大小写转换

结尾


正文

第一天,我们的代码量自然不会很多,一共六道题。

刷题网站:牛客网

一、实践出真知

牛客传送门(之后会直接给出网址传送门):实践出真知

描述 于老师经常告诉我们“学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。” 输入描述: 本题没有输入 输出描述: Practice makes perfect!

很简单,本题是一个没有输入要求的题目,只考察输入,所以只需要准确无误的输出结果就行,我们直接打印输出描述就OK了:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    printf("%s","Practice makes perfect!");
    return 0;
}

二、我是大V

我是大V

描述

每个人都想成为大V (VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输出由小写字母v组成的大V。

输入描述:

输出描述:

v v

v v

v

备注:

代码语言:javascript
复制
换行使用转义字符'\n' 

这个题也是没有输入要求的题目, 只要能够找到输出的规律和掌握 \n 的使用就没问题,这里涉及到转义字符的知识点,我在C语言常见概念、数据类型以及变量的一些重要知识点总结介绍了转义字符的知识点,有兴趣的话可以去看看。代码没什么难度,我们直接写:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    printf("v   v\n");
    printf(" v v\n");
    printf("  v\n");
    return 0;
}

当然,熟悉\n的作用和写法之后 ,我们还可以这样写:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    //输出一行的效果
    printf("v   v\n v v\n v\n");
    return 0;
}

效果是一样的。

三、有容乃大

有容乃大

描述 确定不同整型数据类型在内存中占多大(字节),输出不同整型数据类型在内存中占多大(字节)。 输入描述:输出描述: 不同整型数据类型在内存中占多大(字节),具体格式详见输出样例,输出样例中的?为不同整型数据类型在内存中占的字节数。输出样例如下: The size of short is ? bytes. The size of int is ? bytes. The size of long is ? bytes. The size of long long is ? bytes.

本题的关键是要掌握C语言的 sizeof 这个操作符。sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。博主专门写了一篇文章介绍sizeof和strlen函数,感兴趣的友友们可以去看看:sizeof计算数组元素个数、strlen函数相关的一些知识点以及两者的区别

C语言常见概念、数据类型以及变量的一些重要知识点总结一文中我们也介绍了,只是前者相对来说更加详细一点。

我们直接写出代码:

代码语言:javascript
复制
#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这个操作符。大家发现没有,这类入门题都没有要求输入,会输出就行了。

四、缩短二进制

缩短二进制

描述

我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。

输入描述:

输出描述:

十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X

备注:

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

这里我们需要掌握对个各种数据的格式控制,什么是格式控制?比如这些——

%c - 字符 %hd - 端整型 %d - 整型 %s - 字符串 %f - 单精度浮点数 %lf - 双精度浮点数 %p - 地址格式 等等……

占位符的相关知识我在单目操作符++、--的前置后置知识点总结,printf函数的一些知识点 也介绍了,大家感兴趣可以传送过去看看,整理的还是比较详细的。

关于格式,我们可以参考我们的老朋友:cpprefrence.com

老朋友还十分贴心地给这些格式进行了说明:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    printf("%#o %#X ",1234,1234);
    return 0;
}

我们做题时还是严格按照题目要求的格式输出,才能保证正确性。

五、反向输出一个四位数

反向输出一个四位数

描述 给定一个四位整数 𝑛n(1000≦𝑛≦99991000≦n≦9999),将其各位数字反向输出。若反向后高位为零,也需保留该零。 输入描述: 在一行中输入一个四位整数 𝑛n(1000≦𝑛≦99991000≦n≦9999)。 输出描述: 输出一个四位整数,为 𝑛n 反向后的结果;若高位为零,也需保留。

这里得掌握操作符 % 和 / 的基本使用和特点。其次是循环的使用。这两个操作符博主在C语言专栏就已经介绍过了,感兴趣的朋友可以去看看: 变量的一些知识点整理(续)、算术操作符、赋值操作符:=和复合赋值、单目操作符以及强制类型转换的知识点总结

循环可以去看博主的这两篇文章: 掌握分支与循环(一):if语句、三种操作符、switch语句

掌握分支循环(二):三种循环、break和continue语句、循环的嵌套以及 goto 语句

我们根据题目要求,直接敲代码:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d",&n);
    while(n)
    {
        printf("%d",n % 10);
        n /= 10;
    }
    return 0;
}

六、大小写转换

大小写转换

描述 实现字母的大小写转换,将大写字母转化为小写字母。多组输入输出。 输入描述: 多组输入,每一行输入大写字母。 输出描述: 针对每组输入输出对应的小写字母。

我们先来看看这个代码对不对——

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int ch = 0;
    //循环数据输入
    while((ch=getchar()) != EOF)
   {
       printf("%c\n", (ch+32));
   }
    return 0;
}

我们发现是不对的。

本题主要是两个问题: 1. 多组数据输入的问题; 2. getchar 清理缓冲区的问题,这里得理解输入缓冲区的问题。

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int ch = 0;
    while ((ch = getchar()) != EOF) 
    {
        printf("%c\n", (ch+32));
        getchar();
    }
    return 0;
}

注意getchar()要还给操作系统。我在【文件操作】介绍过,【掌握文件操作】(上):二进制文件和文本文件、文件的打开和关闭、文件的顺序读写

【掌握文件操作】(下):文件的顺序读写、文件的随机读写、文件读取结束的判定、文件缓冲区

本文就是这六道题啦,大家练习一遍就可以了。友友们不要忘了点赞、收藏、关注一键三连哦!


结尾

以后结尾部分会放上往期回顾,本文是第一篇,就不放了,下一篇会放的!

结语:本篇文章到这里就结束了,希望对友友们有所帮助。本文的代码很简单,小白也能直接上手操作,后面的代码题难度上整体是逐渐递增的,友友们能比较丝滑地上手敲下去。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
    • 一、实践出真知
    • 二、我是大V
    • 三、有容乃大
    • 四、缩短二进制
    • 五、反向输出一个四位数
    • 六、大小写转换
  • 结尾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档