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

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

大家好,又见面了,我是你们的朋友全栈君。

零、写在前面

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

【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章
  虽然这是你的第一道C语言题,但是你可能会遇到这么多知识点 ,千万不要被劝退哦~~

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

一、【例题1】

1、题目描述

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

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) 声明两个变量a和b;
  • ( 4 ) (4) (4) 通过控制台输入两个数字,并且赋值给 a和b;
  • ( 5 ) (5) (5) 将a+b的结果输出到终端(屏幕)上;
  • ( 6 ) (6) (6) return 0;是main函数的返回值语句,返回以后程序就结束了;
    【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章

二、【例题2】

1、题目描述

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

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,b≤10000),就输出 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,b≤10000),就输出 a + b a + b a+b 的值。 当输入的 a a a 和 b b b 都等于零时,程序结束。

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

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 != 0和expr是等价的,所以这个条件又可以表示成(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 乘法 ★☆☆☆☆


?? 关注公众号 观看 精彩学习视频??

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163836.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu经常使用的命令摘要

    ubuntu经常使用的命令摘要

    2022年1月8日
  • 开源阅读书源_阅读3.20.0518追书神器 海量书源 免费开源无广告[通俗易懂]

    开源阅读书源_阅读3.20.0518追书神器 海量书源 免费开源无广告[通俗易懂]特别声明所有软件皆来源于网上收集整理,仅供学习与交流技术,不得用作其它用途,如有侵犯你的权益,请联系我们,我们将于24小时内进行删除,谢谢你的配合!1阅读是一款开源免费的无人维护的电子书阅读应用程序。作者感言:如今的电子小说阅读应用总是在不断的添加广告,作为一个程序猿这是受不了的,于是开源的阅读软件来,你不用再担心广告。本软件fork一个无人维护的阅读软件,经过大量修改,实现自定义书源,…

    2022年6月21日
  • MVC三层架构的实现

    MVC三层架构的实现在MVC设计模式中认为,任何软件都可以分为三部分组成:1.控制程序流转的控制器Controller2.封装数据处理数据的模型Model3.负责展示数据的视图View在MVC设计思想中要求符合MVC设计思想的软件应该保证MVC这三部分相互独立,互不干扰,每一部分只负责自己擅长的部分。即某一个模块发生变化,应该尽量做到不影响其他两个模块,这样有利于后期的扩展和维护,代码也可复用…

    2022年6月25日
  • centos7.4安装docker_爬虫为什么要用docker

    centos7.4安装docker_爬虫为什么要用docker前言当我们在一台电脑上搭建了python3.6的环境,下次换台电脑,又得重新搭建一次,设置环境变量等操作。好不容易安装好,一会提示pip不是内部或外部命令,一会又提示pip:commandno

    2022年7月29日
  • sftp使用方法_sftp服务

    sftp使用方法_sftp服务参考: https://baike.baidu.com/item/sftp参考:https://www.jianshu.com/p/64d571913185    要谈sftp(SSHFileTransferProtocol),首先要谈ftp(FileTransferProtocol),大家都知道ftp是文件传输协议,它基于tcp协议,可以用来发送文件。刚开始学web开发的时候,接…

    2022年10月7日
  • ksweb使用教程_html5websocket查改

    ksweb使用教程_html5websocket查改0x01介绍nim一键木马免杀项目,目前能完美过360、火绒等杀软。作者使用纯nim语言编写的shellcode记载器,代码基本是从之前c++版本平移过来,作者并没有提供部署教程,踩坑记录下。0x02使用教程环境:ubuntu20.4安装:#下载代码库cd/rootgitclonehttps://github.com/M-Kings/BypassAv-web.git #起个Ubuntu的docker安装do…

    2022年8月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号