目录标题

  • 前言
  • 编程题
  • 第一题详解
  • 第二题详解
  • 第三题详解
  • 第四题详解
  • 第五题详解
  • 第六题详解
  • 小结

前言

亲爱的小伙伴们大家好啊,这篇文章我们将和c语言入门----详解分支语句(if语句)这篇文章结合到一起帮助大家更好的理解分支语句,这里我们将会根大家详细的讲解六道编程题,带着大家更好的入门,废话不多说我们开始吧。

编程题

第一题:

第二题:

第三题:

第四题:
第五题:

第六题:

第一题详解

第一题:

我们首先可以看到这题目这里要求我们先输入三条边的长度,使其构成一个3角形,那么这里我们是不是就要考虑两个问题,第一个就是创建几个变量?第二个变量的类型是什?那么我们这里题目告诉了我们有三条边,那么我们这里就得创建3个变量,因为3条边的边长不一定为整数,所以我们这里变量的类型使用double类型。我们创建好了变量就得让使用者输入3条边的长度,那么这里我们就要使用到scanf函数来接收使用者输入的值,并且我们还要使用printf函数告诉使用者一些基本的信息,那我们的代码实现如下:

#include <stdio.h>//注明输入输出使用的头文件
int main()
{double a = 1.0;//创建变量double b = 1.0;double c = 1.0;printf("请输入三角形三条边的长度:\n");//告诉使用者基本信息scanf("%d %d %d", &a, &b, &c);//储存使用者输入的值return 0;
}

使用者在输入了三角形的三条边之后我们还得有一个判断的过程,其判断这个三角形能否成立?因为这里有两种情况分别是这个三角形成立和这个三角形不成立,那么我们这里是不是就得使用了if…else语句,那我们这里的判断的条件是什么呢?我们初中学到一个三角形要存在,那么他的三条边必须满足两边之和大于第三边,那么我们这里是不是就可以把这个运用上去,因为我们不知道使用者输入的那条边是最大的,那么我们这里也就得写3个表达式并且使用&&操作符将其并列起来,那么我们的代码实现如下:

#include <stdio.h>//注明输入输出使用的头文件
int main()
{double a = 1.0;//创建变量double b = 1.0;double c = 1.0;printf("请输入三角形三条边的长度:\n");//告诉使用者基本信息scanf("%d %d %d", &a, &b, &c);//储存使用者输入的值if (a+b>c&&a+c>b&&b+c>a)//三角形成立{语句块1 }else//三角形不成立{语句块2}return 0;
}

因为我们题目中指出当三角形不成立的时候得给出错误提示,那么我们这里的语句块2中就可以直接用printf函数打印输入的三角形错误,那我们这里的语句块1呢?它的功能是实现打印出该三角形的面积,那么这里我们就得用到我们高中学到的海伦公式:已知三角形的三边,三角形的面积S=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2,a,b,c是三角形的三条边。那么这里我们还得创建两个变量一个用于储存面积,一个就是p,但是想到这里我们还有一个问题没有解决就是我们如何来表示根号?那么这里我们就得介绍以下sqrt函数
我们可以看一下这个函数的功能就是计算一个数字的平凡根,这个数字的类型是double类型,并且返回值也是double类型,使用这个函数得申明其头文件为<math.h>,那么这里我们就可以实现我们三角形面积的计算。其代码如下

#include <stdio.h>//注明输入输出使用的头文件
#include<math.h>//注明平方根函数使用的头文件
int main()
{double a = 1.0;//创建变量double b = 1.0;double c = 1.0;double p = 1.0;double s = 1.0;printf("请输入三角形三条边的长度:\n");//告诉使用者基本信息scanf("%d %d %d", &a, &b, &c);//储存使用者输入的值if (a+b>c&&a+c>b&&b+c>a)//三角形成立{p = (a + b + c) / 2;s = sqrt(p * (p - a) * (p - b) * (p - c));//计算三角形的面积printf("三角形的面积为%.2f", s);}else//三角形不成立{printf("a,b,c无法构成三角形\n");}return 0;
}

这样我们的第一题就写完了。

第二题详解

第二题:

我们可以看到这是一个分段函数,并且有四种不同的表达式同样也对应着不同的定义域,那么这里我们就可以用else if语句来实现这不同的情况,并且表达式可以根据其分段函数的不同的定义域来填写,首先我们得输入一个x,那么我们先创建变量x,然后将else if语句的大致框架写出来

#include<stdio.h>
int main(){int x = 0;scanf("%d", &x);if (表达式1){语句块1 }else if (表达式2){语句块2}else if (表达式3){语句块3}else{语句块4}return 0;}

因为这是个分段函数,那么我们的表达式可以根据这个不同的定义域来填写,然后大家要注意的一点就是我们这里的分段函数的第四个函数,他的定义域是其他,那么我们就应该把这种情况放到else语句里面,因为这个其他所代表的定义域太多了,我们就直接将这个最复杂的放到最后一个,那么其他比较好写的情况我们就可以将其一一列举出来,语句块里面我们就可以直接用printf函数打印y的值无需再创建变量其代码如下:

#include<stdio.h>
int main(){int x = 0;scanf("%d", &x);if (-5<x&&x<0)//情况1 {printf("y的值为%d",(x-1));}else if (x==0)//情况2 {printf("y的值为%d",x);}else if (0<x&&x<8)//情况3{printf("y的值为%d",(x+1));}else//情况4 {printf("y的值为%d",(10));}return 0;}

第三题详解

第三题:


这道题就有那么点意思了,首先他们要我们输入一个字符,那么这里我们是不是得创建一个变量来接收这个字符,而且这个变量的类型为字符型,那么我们这里就要用到scanf函数,并且我们得告诉使用者一些基本的操作,比如要他输入一个字符,那么这里就得用到printf函数,然后我们看到这里有判断的地方,并且判断的情况有3种,那么这里我们就要使用else if语句,代码实现如下

#include<stdio.h>
int main()
{char x = 'a';printf("请输入一个字符\n");scanf("%c", &x);if ()//情况1 {语句块1 }else if ()//情况2 {语句块2}else//情况3{语句块3}return 0;
}

那我们来看这里的表达式如何实现,首先我们来看看ascall表

不知道大家能不能看清,如果看不清楚的话,大家可以在网上搜索一下,大家通过观察这个ascall表应该可以发现里面的规律,大写的英语字母之间的序号是连续的是从65到90,小写的字母之间的序号也是连续的是97到122,而且我们知道,其实字符在计算机存储的形式就是按照这个序号来存储的,就比如我们输入了一个字符‘a’,我们看到的是a其实电脑就会将这个a转换成所对应的ascall值97,然后把这个97储存到电脑里面,那我们先来看第一个表达式,假设第一个语句块的功能是让输入的小写字母变大写,那我们这里进入语句块1的条件就是:输入的是字符并且还得是小写的,那么我们如何来判断输入的是字符并且是小写呢?我们先来看如何判断是字符?因为我们前面的scanf函数他本来就得输入一个字符才能成功的接收,那么我们这里一定是字符,然后我们知道字符储存的形式也是整形,是整形的话,我们这里就可以使用关系操作符来进行比大小,小写的字母是‘a’到‘z’那我们就可以直接拿来比大小,大写的也一样大家可以看代码

#include<stdio.h>
int main()
{char x = 'a';printf("请输入一个字符\n");scanf("%c", &x);if ('a'<=x&&x<='z')//情况1 {语句块1 }else if ('A'<=x&&x<='Z')//情况2 {语句块2}else//情况3{语句块3}return 0;
}

我们的判断的过程实现了之后我们就想如何实现将大写变成小写,如何将小写变成大写,这里大家再看一下那个表,你们会发现同一个字母的大小写之间的ascall值相差的值为32,那么我们是不是就可以通过这个32来实现大写变小写,小写变大写,如果输入的字符不是字母的话,我们是不是就可以原封不动的再打印一遍,那么对应的代码如下:

#include<stdio.h>
int main()
{char x = 'a';printf("请输入一个字符\n");scanf("%c", &x);if ('a'<=x&&x<='z')//情况1 {printf("%c\n", (x - 32));//将小写变成大写}else if ('A'<=x&&x<='Z')//情况2 {printf("%c\n", (x + 32));//将大写变成小写}else//情况3{printf("%c\n", x);//原样返回}return 0;
}

那么这里我们这道题就结束了。

第四题详解

第四题:
大家看到这个题,首先我们得告诉使用者他应该干嘛所以这里得使用printf函数,然后我们得创建3个变量,使用scanf函数存储输入的数字那我们的代码如下:

#include<stdio.h>
int main()
{printf("请输入三个整数\n")int a = 0;//创建变量int b = 0;int c = 0;scanf("%d", &a);//存储数据scanf("%d", &b);scanf("%d", &c);return 0;
}

然后题目说最大的放到变量c里面,最小的放到变量a里面,那么我们这里是不是就有个判断的过程,那我们这里用什么语句来进行判断呢?这里我们就用一个最简单的方法,因为数据的数量较少那我们每个之间都比较一次不就够了吗,所以这里我们使用3次if语句,那我们先a和b进行比较:如果a大于b,那我们就把a和b的值进行一次互换。比较完之后再a和c进行比较:如果a大于c,那么我们就把a和c的值进行一次互换,我们再把b和c进行一次比较:如果b的值大于c那么就把b和c的值进行一次互换这样我们就可以把最大值放到c里面,最小的值放到a里面代码实现如下:

#include<stdio.h>
int main()
{int a = 0;//创建变量int b = 0;int c = 0;scanf("%d %d %d", &a,&b,&c);//存储数据if (a > b){int t = a;a = b;b = t;}if (a > c)//此时a已经是最小的值{int t = a;a = c;c = t;}if (b > c)//让c成为最大值{int t = b;b = c;c = t;}printf("%d<=%d<=%d",a,b,c);return 0;

第五题详解

第五题:

这里我们首先我们得使用printf函数告诉使用者我们应该干嘛,然后我们得创建一个整型变量用于存储玩家输入的值,既然玩家要输入值那么我们这里也就得使用scanf函数,又因为这里输入的数是有规定的是一个三位数,所以我们这里就得有限制,如果输入的数据不在我们的范围我们就会结束程序,并且告诉使用者输入的数据错误,如果正确的话就会继续进行判断,那么我们这里有两种情况,分别是是三位数和不是三位数,那么我们就可以使用if…else语句其代码如下:

#include<stdio.h>
int main()
{int a = 0;scanf("%d", &a);if (100 <= a && a < 1000)//判断为三位数{语句块}else//判断不是三位数{printf("输入的数据有误\n");}return 0;
}

那么我们输入了一个3位数之后就要进入了判断是否为水仙数的阶段,我们通过题目给的提示就可以知道,要想判断一个数是否为水仙数的话得先得到每一位的数字因为为三位数,所以这里我们这里可以创建3个变量,然后用%和/操作符。要想得到个位数的数字很简单,我们直接用a%10就可以得到,同样的道理,要想得到百位上的数字我们也就可以直接让a/100就可以得到,那我要是想得到十位数上的数字呢?那这里我们就先得到a/10这个结果这样就变成了一个两位数,然后这个两位数上的个位数,是不是就是之前三位数的十位数,那我要想得到这个个位数可以直接再%10,那总的来说就是十位数是a/10%10,那么我们这里就差不多就完成了这道题,最后再进行判断部分,那么这里是不是两种情况一种是是水仙数,另一种就是不是水仙数,那么我们这里就可以使用if…else语句就可以完成判断,再根据判断的条件写出表达式,其判断条件就是我们题目上面的给的其代码实现如下:

#include<stdio.h>
int main()
{int a = 0;int ge = 0;//int bai = 0;//int shi = 0;//scanf("%d", &a);if (100 <= a && a <= 1000)//判断为三位数{bai = a / 100;//计算百位数上的值shi = a/ 10 % 10;//计算十位数上的值ge = a % 10;//计算个位数上的值if (a == ge * ge * ge + bai * bai * bai + shi * shi * shi){//判断是水仙数printf("%d是水仙数\n",a);}else{//判断不是水仙数printf("%d不是水仙数\n",a);}}else//判断不是三位数{printf("输入的数据有误\n");}return 0;
}

第六题详解

第六题:

看到这个题是不是有种梦回初中的感觉,我们首先得用printf函数来告诉使用者一些基本的信息,然后我们得创建三个变量来接收输入的值,那么这里也就得用到scanf函数,我们在求一个一元二次方程的根的时候,是不是会用到一个公式其中一个就叫德尔塔,根据德尔塔大于0,小于0,等于0又将其分成三种情况,所以我们这里就得用到else if语句,如果德尔塔大于0就会有两个根,那么我们这里也就得再创建3个变量,又因为我们解出来的根可能为小数,我们这里有两个变量的类型得为double类型其代码如下:

#include<stdio.h>
int main()
{int a = 0;//输入的三个值int b = 0;int c = 0;int delta = 0;//创建变量deltadouble x1 = 1.0;//创建变量用于储存解出来的值double x2 = 1.0;printf("请输入方程的3个系数\n");scantf("%d %d %d", &a, &b, &c);delta = b * b - 4 * a * c;if (delta > 0){语句块}else if (delta == 0){语句块}else{printf("该方程没有实根\n");}return 0;
}

那么这里的语句块我们就可以结合解方程的公式来得出根的值,这里我们又要用到sqrt函数,这个函数我们上面讲过这里就不多进行讲解,那么其代码如下:

#include<stdio.h>
#include<math.h>
int main()
{int a = 0;int b = 0;int c = 0;int delta = 0;double x1 = 1.0;double x2 = 1.0;printf("请输入方程的3个系数\n");scantf("%d %d %d", &a, &b, &c);delta = b * b - 4 * a * c;if (delta > 0)//如果delta大于0有两个实根{x1 = (-b + sqrt(delta) / 2 * a);//计算根的值x2 = (-b - sqrt(delta) / 2 * a);printf("方程的解为:x1=%.2lf,x2=%.2if\n", x1, x2);}else if (delta == 0)//如果delta等于0有两个相等的实根{x1 = x2 = -b / (2.0 * a);printf("方程的解为:x1==x2=%.2if\n", x1);}else//如果delta小于0没有实根{printf("该方程没有实根\n");}return 0;
}

那么这里我们这道题就写完了

小结

这里我们试着做了6道编程题,带着大家一步一步的写了下去,分享一些自己平时写代码的一些思路,那么这里希望大家能自己下去尝试一下,谢谢大家阅读。我们一起进步。这里为了方便大家学习,这六道题的代码我创建了一个链接大家可以直接拿去使用:

六道题的代码链接点击直接跳转查看
大家在里面找到一个源.c文件就可以路径为分支语句(if语句)的习题—分支语句(if语句)的习题—源.c

c语言习题---(if语句)相关推荐

  1. c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...

    第一章自测练习答案清华大学c语言习题实验指导及课程设计 第一章 自测练习参考答案 一.简答题 1.源程序是程序员创建的,目标程序是编译器创建的,可执行程序是连接器创建的. 2.步骤如下:1)说明程序需 ...

  2. c语言里编译错误c131,C语言习题选择题.doc

    <C语言习题选择题.doc>由会员分享,可在线阅读,更多相关<C语言习题选择题.doc(36页珍藏版)>请在装配图网上搜索. 1.答案试题C1.在C语言源程序中,以下叙述正确的 ...

  3. c语言题查询答案,C语言习题级答案.docx

    C语言习题级答案.docx 测试题3 1.C语言中不合法的字符常量是 C A.65 B.xff C.028 D. B.pa; C.p D.*pa0; 3.若有x22,y26,z0;,则执行下面语句后, ...

  4. 2016c语言模拟试卷A,2016C语言习题模拟试卷一.doc

    2016C语言习题模拟试卷一 模拟试卷一 一.选择题(每题2分,共20分) 1.以下不正确的C语言标识符是 . A. ABC B. abc C. a_bc D. ab.c 2.设有说明:char w; ...

  5. c语言指令ASCA,吉林大学C语言习题.doc

    <吉林大学C语言习题.doc>由会员分享,可在线阅读,更多相关<吉林大学C语言习题.doc(23页珍藏版)>请在装配图网上搜索. 1.C语言程序设计习 题李玲 张海蓉 黄玉兰 ...

  6. c语言switch逻辑用语,C语言习题(前五章)参考答案.doc

    C语言习题(前五章)参考答案.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...

  7. c语言习题-统计指定字符个数

    c语言习题-统计指定字符个数 要求 程序 运行结果 c语言习题-统计指定字符个数 要求 请编写函数fun,它的功能是:求出str所指字符串中指定字符的个数,并返回此值. 程序 #include < ...

  8. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  9. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

最新文章

  1. C语言中控制printf的打印颜色实例及vt100的控制符
  2. 08 | 替换策略: 缓存满了怎么办?
  3. Gauss error function
  4. R,让你的数据分析更简便!
  5. Android 那些年,处理getActivity()为null的日子
  6. html引入css webpack_深入剖析webpack——webpack 基础
  7. MySQL基础总结,认真看完这篇就够了!!!
  8. 缩放图片,解决bitmap 内存溢出out of memory的问题
  9. Pthon入门--range()函数
  10. npoi操作word书签_word进阶小教程,小研全部都给你!
  11. 富文本功能实现vue3.0
  12. PDF文件不支持直接编辑 PDF如何转化为可以编辑的Word文档
  13. Tensorflow 2.0 : FCNN
  14. MySQL 事务四大特性和事务隔离级别
  15. 计算机网络培训心得PPT,ppt培训心得体会(精选3篇)
  16. PDF怎么拆分页面,PDF拆分页面的方法
  17. 如何使用css动画做出剑客行走效果
  18. 存储IP地址,到底用什么数据类型相对比较好
  19. 强化练习200题(二) 本卷共200道试题作答时间为240分钟,总分200分,120分及格
  20. 〖Python WEB 自动化测试实战篇⑦〗- 实战 - selenium的基本元素操作与键盘鼠标模拟事件操作

热门文章

  1. html中repeat的作用,background-repeat属性怎么用
  2. 磁盘IOPS概念及IOPS的计算与测试
  3. 找完工作后的感受总结,用以共勉
  4. UCOSIII的任务管理
  5. AES加解密(ECB模式)
  6. OpenGLGLUT入门学习
  7. 信号完整性的定义、干扰因素及解决方法详解
  8. Redis(上)基础及8种数据类型
  9. []==![]结果为true,探究 == 本质
  10. windows下更改Apache以fastcgi方式运行php