【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章

2023-05-16

文章目录

  • 零、写在前面
  • 一、【例题1】
    • 1、题目描述
    • 2、解题思路
    • 3、代码详解
  • 二、【例题2】
    • 1、题目描述
    • 2、解题思路
    • 3、代码详解
  • 三、【例题3】
    • 1、题目描述
    • 2、解题思路
    • 3、代码详解
  • 四、【例题4】
    • 1、题目描述
    • 2、解题思路
    • 3、代码详解
  • 五、【例题5】
    • 1、题目描述
    • 2、解题思路
    • 3、代码详解
  • 五、推荐专栏
  • 六、习题练习

零、写在前面

  目前本专栏正在进行优惠活动,在博主主页添加博主好友(好友位没有满的话),可以获取 付费专栏优惠券
  从本节开始,我们就要开始学习 「 C语言 」 了,学习方式很简单,每天我会提供一篇文章供群成员阅读,阅读完本文,做完课后的 「习题练习 」 ,在 万人千题 社区对应的 「打卡帖 」 下打卡,今天的任务就算完成了。
  因为大家都在学习,所以一旦遇到问题都可以在群里问,群成员能够做出更加快速的反馈,高效的达成学习的目的。学有余力的同学可以在 万人千题 社区发布每天练习的解题报告。
  我的学习策略很简单 —— 题海策略。当然,这 100 讲如果都能够自己认认真真把代码写出来,那入门肯定是没问题了,至于后面的进阶就要看 「 个人的天赋 」 以及 「 后天的努力 」 了。
  本文将介绍这套试题的最基础的四种输入方式,题目都是围绕 a + b a + b a+b 进行展开。是适合C语言初学者做的 第一套题,解题过程我会写的非常详细。如果理解不了,可以在群里或者社区,询问咨询!
  这个系列的题目都会以三部分进行呈现,分别是【题目描述】【解题思路】【代码详解】。


  虽然这是你的第一道C语言题,但是你可能会遇到这么多知识点 ,千万不要被劝退哦~~

一、【例题1】

1、题目描述

  【例题1】输入两个正整数 a a a b b b,输出 a + b a + b a+b 的值。 其中 a , b ≤ 10000 a, b \le 10000 a,b10000

2、解题思路

难度:🔴⚪⚪⚪⚪

  • 运用到了最简单的标准输入和标准输出。

3、代码详解

#include <stdio.h>            // (1)
int main() {                  // (2)
    int a, b;                 // (3)
    scanf("%d %d", &a, &b);   // (4)
    printf("%d\n", a + b);    // (5)
    return 0;                 // (6)
} 
  • ( 1 ) (1) (1) #include是包含头文件的语法,stdio.h是输入输出相关的头文件,所有的 scanf和输出函数printf都必须包含这个头文件;
  • ( 2 ) (2) (2) main函数是所有程序执行的入口,程序会检测到这个入口函数,然后开始往下执行;
  • ( 3 ) (3) (3) 声明两个变量ab
  • ( 4 ) (4) (4) 通过控制台输入两个数字,并且赋值给 ab
  • ( 5 ) (5) (5)a+b的结果输出到终端(屏幕)上;
  • ( 6 ) (6) (6) return 0;main函数的返回值语句,返回以后程序就结束了;

二、【例题2】

1、题目描述

  【例题2】先输入一个 t ( t ≤ 100 ) t (t \le 100) t(t100),然后输入 t t t 组数据。对于每组数据,输入两个整数 a a a b b b,输出 a + b a + b a+b 的值。其中 a , b ≤ 10000 a, b \le 10000 a,b10000

2、解题思路

难度:🔴⚪⚪⚪⚪

  • 除了最简单的标准输入和标准输出。还考察了循环语句的使用。

3、代码详解

#include <stdio.h>
int main() {
    int a, b, t;
    scanf("%d", &t);             // (1)
    while (t--) {                // (2)
        scanf("%d %d", &a, &b);
        printf("%d\n", a + b); 
    }
    return 0;
}
  • 和【例题1】的区别在于,这里引入了多组数据的概念。要求先输入一个数 t t t,然后循环 t t t 次输入 a a a b b b 的值。
  • ( 1 ) (1) (1) 输入 t t t
  • ( 2 ) (2) (2) while(expr){ body }是一个循环语句的结构,其中expr表示的是表达式,而body则代表循环的内容。这里expr就是t--了,我们可以这么理解,当 t = 0 t=0 t=0 时,这个表达式的值为 0,所以整个循环就会结束,循环体 body的执行次数就是我们输入的那个 t t t。然后我们把循环体套用【例题1】就能满足我们的题意要求了。
  • 如果没有输入数据组数,我们能否知道何时输入结束呢?
  • 那么,让我们来看下一个例题吧。

三、【例题3】

1、题目描述

  【例题3】循环输入,每输入两个正整数 a a a b b b(其中 a , b ≤ 10000 a, b \le 10000 a,b10000),就输出 a + b a + b a+b 的值。 当没有任何输入时,结束程序。

2、解题思路

难度:🔴⚪⚪⚪⚪

  • 这个问题对于新人的困扰在于:我们如何才能知道当前已经没有任何输入了,这就需要用到输入函数的返回值。
  • 我们知道输入函数为scanf,当这个函数返回EOF时,就代表没有任何输入了。所以我们可以循环判断函数的返回值是否等于 EOF
  • 其中EOF是一个宏,可以认为它的值就是整数 -1
  • 它的定义如下:
#define EOF -1

3、代码详解

#include <stdio.h>
int main() {
    int a, b;
    while(scanf("%d %d", &a, &b) != EOF) {
        printf("%d\n", a + b);
    }
    return 0;
} 
  • 这里,我们先考虑scanf("%d %d", &a, &b)这个函数的返回值,当你从控制台输入两个数时,它会根据输入的格式正确与否,返回输入成功的数的个数,所以正常情况是返回 2 。
  • 当没有任何输入时,它会返回 EOF,所以导致循环语句内的条件变成,从而退出循环,退出循环以后就顺理成章的结束进程了,符合题意要求。

四、【例题4】

1、题目描述

  【例题4】循环输入,每输入两个正整数 a a a b b b(其中 a , b ≤ 10000 a, b \le 10000 a,b10000),就输出 a + b a + b a+b 的值。 当输入的 a a a b b b 都等于零时,程序结束。

2、解题思路

难度:🔴⚪⚪⚪⚪

  • 和【例题3】的区别在于:输入结束条件变成了 " a a a b b b 同时为零"。

3、代码详解

#include <stdio.h>
int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF) {
        if(a == 0 && b == 0)      // (1)
            break;
        printf("%d\n", a + b); 
    }
    return 0;
}
  • ( 1 ) (1) (1) 由于结束条件很明确,所以我们只需要在 【例题3】 的循环体内,加上满足退出循环条件的判断即可, " a a a b b b 同时为零" 的 代码表示为 a==0 && b==0,然后套上 if语句和break;语句就能够实现这个功能了。
  • 这里,介绍另外一种更加简便的写法。
#include <stdio.h>
int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) && (a || b) ) {  // (1)
        printf("%d\n", a + b); 
    }
    return 0;
}
  • ( 1 ) (1) (1) 因为题目确保当 " a a a b b b 同时为零" 时程序结束,所以不满足 " a a a b b b 同时为零" 这个条件的时候,应该一直能够输入,也就是 !(a==0 && b==0)
  • 化简后得到 (a != 0 || b != 0),又表达式expr != 0expr是等价的,所以这个条件又可以表示成(a||b),也就有了这种写法。

五、【例题5】

1、题目描述

  【例题5】要求实现一个函数add,传入参数为 a a a b b b,返回两者之和。

2、解题思路

难度:🔴⚪⚪⚪⚪

  这是 LeetCode OJ,经常需要用到的格式,如果不理解函数的概念,可以暂时认为它就是初中数学中,我们学过的那个概念,传入的参数是 自变量 (只不过可能有多个),返回的参数是 应变量

3、代码详解

int add(int a, int b) {
    return a + b;
}

五、推荐专栏

🌌《LeetCode零基础指南》🌌

(第二讲) 函数

六、习题练习

序号题目链接难度
1加法★☆☆☆☆
2乘法★☆☆☆☆
👇🏻 关注公众号 观看 精彩学习视频👇🏻
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章 的相关文章

  • Eigen构造稀疏矩阵

    Eigen构造稀疏矩阵 xff0c 这里我们对稀疏矩阵采用三元组的存储方式 xff0c 即用 i j value i j 这样的组合把非零元的位置和值表示出来 废话不多说 xff0c 我们直接上例子 include 34 iostream
  • cmake CMakeLists.txt 命令 add_compile_options、add_definitions、target_compile_definitions、build_command

    add compile options 增加源文件的编译选项 add compile options lt option gt 为当前路径和下层路径的目标增加编译器命令行选项 xff0c 选项在此命令被调用后添加 查看文档中关于路径和目标的
  • linux curl编译 arm交叉编译

    虚拟机环境 ubuntu12 04 开发板 EasyARM i MX280A xff1a 64m sdram 128M nandflash 运行官方提供的Linux 2 6 35 3内核linux 首先 xff0c 如果需要使用curl解析
  • c++中 双冒号作用

    1 作用域符号 的前面一般是类名称 xff0c 后面一般是该类的成员名称 xff0c C 43 43 为例避免不同的类有名称相同的成员而采用作用域的方式进行区分 如 xff1a A B表示两个类 xff0c 在A B中都有成员member
  • 解决:CUDA安装程序不成功

    解决 xff1a CUDA安装程序不成功 报错如下分析原因解决方法 报错如下 分析原因 由于电脑里的原版本是11 2 xff0c 可能降到11 0会出现错误 xff0c 因此安装不成功 xff01 解决方法 在 Driver compone
  • linux shell awk BEGIN END 处理文本之前之后执行操作 简介

    目录 简介 1 最简单的action 既没有pattern 有没有options 2 awk是逐行处理 2 1 输出整行 2 2 输出最后一列 2 3 输出倒数第二列 3 pattern 3 1 begin 简单语法 3 2 不添加输入文件
  • ROS使用自定义的msg发送topic

    1 新建工作空间 span class token function mkdir span p catkin ws src span class token function cd span catkin ws catkin make 2
  • snorkel提取关系实验一——英文新闻里面提取配偶

    参考https github com HazyResearch snorkel 代码地址 xff1a https github com HazyResearch snorkel blob master tutorials intro Int
  • 搭建飞控开发环境:ubuntu下pixhawk开发环境搭建(PX4开发)

    搭建飞控开发环境 xff1a ubuntu下pixhawk开发环境搭建 xff08 PX4开发 xff09 关于开发环境 xff0c 可以选择Windows Linux或者Mac xff0c 若选择Linux xff0c 建议安装Ubunt
  • yolov3 批量处理图片获得检测框坐标

    前言 yolov3实现检测 xff0c 需要所有检测框的坐标实现定位 在darknet master项目下实现检测框坐标的获取 前提 系统 xff1a Windows 语言 xff1a C 项目 xff1a darknet master 开
  • Halcon C#联合编程的一种异常的解决方法

    源码为超人视觉联合C 启蒙班中的示例代码 span class token keyword using span span class token namespace System span span class token punctua
  • HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);出现异常

    Halcon C 联合编程中 xff1a HOperatorSet GrabImageAsync out ho Image hv AcqHandle 1 语句出现异常 源码如下 xff1a span class token keyword
  • Halcon联合C#实现相机实时显示采集图像

    窗体如图 xff1a 本窗体功能为打开相机 相机的实时显示采集 关闭相机 HALCON代码 xff1a span class token operator span Image Acquisition span class token nu
  • C#在Winform中显示当前日期、时间、星期

    C 在Winform中显示当前日期 时间 星期 span class token comment 加载窗体时 span span class token class name span class token keyword string
  • Halcon基于灰度的颜色识别

    程序流程如下 xff1a 如下图所示 xff0c 首先读入图像 xff0c 将彩色图像转为灰度图像 xff0c 进行阈值分割 xff0c 利用connection算子将每个区域分离开 xff0c 再求取中心点坐标 xff0c 将颜色名称显示
  • 【Kubernetes实战】K8S集群Pod异常状态排查

    机缘 本文旨在帮助朋友们能快速定位 以最简单可行只法解决遇到的问题 xff0c 希望您能举一反三 xff0c 篇幅有限不能详尽 xff0c 见谅 内容概括 xff1a 实战项目经验 如何有效减少排查解决问题的时间 xff1f 尤其是有些问题
  • Halcon 基于形状的模板匹配

    基于形状的模板匹配 xff08 西动科技Halcon学习笔记 xff09 主要设计流程 xff1a 将彩色图像转为灰度图像 xff0c 进行阈值分割 xff0c 通过面积特征选择ROI区域 xff0c 进行形态学处理后创建模板 xff0c
  • Halcon齿轮测量

    Halcon齿轮测量 xff08 Halcon学习笔记 xff09 齿轮灰度图像如下 xff1a Halcon齿轮测量设计流程 首先进行阈值分割并利用面积特征选取出齿轮部分 xff1a 创建圆的XLD轮廓 xff1a 进行尺寸测量 xff1
  • Halcon相机标定及利用标定结果测距

    Halcon相机标定及导出标定板实际圆心距离 xff08 Halcon学习笔记 xff09 首先 xff0c 采集一组标定板不同位姿图片 xff0c 利用Halcon标定助手进行标定 在Halcon标定助手中可以通过勾选使用示例中 将测量结
  • YOLO-V4 论文学习+唐宇迪博士课程学习笔记

    论文主要贡献 xff1a 1 利用单GPU即可训练一个目标检测器 2 验证了Bag of Freebies 和 Bag of Specials方法在训练目标检测器当中的作用 3 对包括CBN PAN SAM在内的现有方法进行了改进 数据增强

随机推荐