C语言学习第三章
写在课前,提醒自己写代码的时候一定要注意不能漏写符号!提醒自己写代码的时候一定要注意不能漏写符号!提醒自己写代码的时候一定要注意不能漏写符号!
今天主要学习掌握if...else条件结构,多重if条件分支结构if….else if…else if…else。和switch条件结构.
我们知道程序就是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,而这一系列的有序指令是需要按照一定的顺序进行执行的,不然也没办法组成一个强大的程序,if.....else就是为了给计算机规定运行命令的顺序,if.....else的意思和我们平常所说的“如果.....否则”是一样的意思()如果怎样怎样就怎样怎样,否则就怎样)。
示例:
#include <stdio.h>
void main(){
int i,j,k;
i=1;
j=2;
k=3;
if(j<i){
printf("算错了");
}
else{
printf("算对了");
}
这其中还用到了运算符(j<i),< 就是一个运算符,就是平常用的小于符号。其他的还有前一天学习的一元运算符( ++,-- (i++,++i,i--,--i))
和二元运算符:+,/,*,/, %(求余或取模)。还有赋值运算符: = ,和你看到的一样这就是一个等于符号。复合赋值运算符:+=,-=,*=,/=,%=这些的意思就像
sum=sum+1就等于sum+=1最后出来的sum结果是一样的,后面的-=,*=,/=,和前面的+=都是一样的意思,%=则是先求余再等。
比较运算符:比较数值的大小和关系(>,>=,<,<=,!=,==)。!=是不等的意思,再程序中比较等于要用==,单独一个=是赋值用的!
逻辑运算符:连接多个条件与&&,或||,非!可以理解成并且(&&)或者(||)非真即假(!)示例:if(i<j&&i<k||k>i&&j>i) 只是示例逻辑运算符的运用,大家不要纠结这有点弱的写法哈:-D
与(并且):多个条件同时为真结果才为真,总结为一假比假。
或(或者):在多个条件中只要有一个条件为真,其结构为真,总结为一真必真。
非(取反): 非真比假,非假必真。
If条件结构:如果条件成立将执行其下大括号中的语句
语法:
if(条件)
{
//语句;
}
示例:
int age; printf("请输入年龄:"); scanf("%d",&age); if(age>=18) { printf("你已经成年,可以进入!"); } if(age<18) { printf("你是未成年人,禁止入内!!"); } |
一个极其重要的练习:
计算用户输入的数字是不是水仙花数的小程序,水仙花数就是一个三位数的个位的三次方+ 十位数的三次方+ 百位数的三次方等于这个三位数。面试可能会考。
int num,ge,shi,bai,he;
printf("请输入三位数");
scanf("%d",&num);
//用户输入的数=个位的三次方+ 十位数的三次方+ 百位数的三次方
//1.从num获取个位
ge=num%10;
//2.从num获取十位
shi=num/10%10;
//3.从num获取百位
bai=num/100;
he=ge*ge*ge+shi*shi*shi+bai*bai*bai;
if(he==num)
{
printf("%d是水仙花数:",num);
}
else
{
printf("%d不是水仙花数:",num);
}
下面开始学If…else 结构:如果条件成立执行if中的语句,否则执行else中的语句
示例:
if(age>=18) { printf("你已经成年,可以进入!"); } else { printf("你是未成年人,禁止入内!!"); } |
小练习:
//学习使用&&和||这两个逻辑运算符的小程序,算用户输入的是不是小写字母。
char l;
printf("输入一个字母;");
scanf("%c",&l);
if(l>'a'&&l<'z'){
printf("%c这是一个小写字母",l);
}
else{
printf("%c这不是一个小写字母",l);
}
分割
if(l<'a'||l>'z'){
printf("%c这不是一个小写字母",l);
}
else{
printf("%c这是一个小写字母",l);
}
实现猜拳游戏: 用户A和用户B分别输入要出的拳(0:剪刀,1:石头,2:布)老师讲解版。
int userA,userB; printf("******************************************\n"); printf("************郑州尚学堂猜拳游戏**************\n"); printf("******************************************\n"); //1.分别获取用户A和用户B所出的拳 printf("请1号选手出拳:0代表剪刀,1代表石头,2代表布\n"); printf("请用户A出拳:\n"); scanf("%d",&userA); printf("请用户B出拳:\n"); scanf("%d",&userB); //2.根据用户A和用户B所出的拳进行比较 //用户A胜==>(用户A:0(剪刀)&&用户B:2(布));(用户A:1(石头)&&用户B:0(剪刀));(用户A:2(布)&&用户B:1(石头)) if((userA==0&&userB==2)||(userA==1&&userB==0)||(userA==2&&userB==1)) { printf("恭喜用户A获胜~~~~~~~~~~\n"); } //平局==>用户A==用户B if(userA==userB) { printf("真衰,平局~~~~~~~~~\n"); } //用户B胜==>(用户A:0(剪刀)&&用户B:1(石头));(用户A:1(石头)&&用户B:2(布));(用户A:2(布)&&用户B:0(剪刀)) if((userA==0&&userB==1)||(userA==1&&userB==2)||(userA==2&&userB==0)) { printf("恭喜用户B获胜~~~~~~~~~~\n"); } |
自己练习写的,有点小恶搞..
int a,b;
printf("0代表剪刀,1代表石头,2代表布\n");
printf("请一号出拳");
scanf("%d",&a);
printf("二号出拳");
scanf("%d",&b);
if(a==0&&b==2||a==1&&b==0||a==2&&b==1)
{
printf("一号更傻\n");
}
if(a==0&&b==1||a==1&&b==2||a==2&&b==0)
{
printf("二号更二\n");
}
if(a==b){
printf("你俩一样二了\n");
}
if(a>2||b>2){
printf("看规则啊 傻逼");
练习.判断输入的5位数字是否是回文数字:像46564或者12321一样的数字。
int num,ge,shi,qian,wan; printf("请输入一个五位数:"); scanf("%d",&num); //判断是否为5位数 if(num>=10000&&num<=99999) { //获取个位,十位,千位,万位 ge=num%10;//个位 shi=num/10%10;//十位 qian=num/1000%10;//千位 wan=num/10000;//万位 if((ge==wan)&&(shi==qian)) { printf("%d是一个回文数!",num); } else { printf("%d不是一个回文数!",num); } } else { printf("您输入的数字不是5位数,请重新输入!"); } |
自己练手版
int num,ge,shi,qian,wan;
printf("请输入一个五位数;");
scanf("%d",&num);
if((num>=10000)&&(num<=99999))
{
ge=num%10;
shi=num/10%10;
qian=num/1000%10;
wan=num/10000;
if((ge==wan)&&(shi==qian))
{
printf("%d是一个回文数",num);
}
else
{
printf("%d不是回文数",num);
}
}
else {
printf("%d不是一个五位数",num);
}
*/
下面是多重if…else if….else if….else 结构,要开始循环嵌套喽。
语法:
if(条件1)
{
语句1;
}
else if(条件2)
语句2;{
}
else if(条件3)
{
语句3;
}
else
{
语句N;
}
示例:
根据用户输入的成绩,给出该成绩对应的级别(90~100:A;80~90:B;70~80:C;60~70:D;60以下:E)
int score; printf("请输入您的成绩:"); scanf("%d",&score); if(score>=90&&score<=100){ printf("A类"); }else if(score>=80&&score<90){ printf("B类"); }else if(score>=70&&score<80){ printf("C类"); }else if(score>=60&&score<70){ printf("D类"); }else{ printf("E类"); } |
自己练习版:*成绩分类小程序,
else if 注意事项,
int cheng;
printf("输入你的成绩;\n");
scanf("%d",&cheng);
if(cheng>=90&&cheng<=100){
printf("A级,不错还不傻\n");
}
else if(cheng>=80&&cheng<90){
printf("B级,有点傻啊\n");
}
else if(cheng>=70&&cheng<80){
printf("C级,傻吊啊你\n");
}
else if(cheng>=60&&cheng<70){
printf("D级,是不是傻?是不是傻?\n");
}
else{
printf("E级,你还是吞粪自尽吧\n");
}
我自己犯得错及注意事项.
*1,else if中间有空格
*2,else if表示这是if的分支语句,不能省略else,省略的话就变成了多个if语句并列。
*3,这类语句的顺序不同,预算的结果就会产生差别,必须注意条件的限定。
接下来是switch条件结构:它只能代替多重if条件结构做等值判断。小心case穿透(遇到break跳出switch语句)有时候case穿透也是有用的,所以一定要小心,区别自己是不是需要它穿透。
示例:
令狐冲参加武林大会: 第一名:奖励葵花宝典; 第二名:辟邪剑谱;第三名:独孤九剑;前三名之外:逐出师门。
int num; printf("请输入获得名次:"); scanf("%d",&num); switch(num){ case 1: printf("奖励葵花宝典一本\n"); break; case 2: printf("奖励辟邪剑谱一本\n"); break; case 3: printf("奖励独孤九剑一本!\n"); break; default: printf("逐出师门!\n"); break; |
自己练习版本:
int num;
printf("你获得了第几?\n");
scanf("%d",&num);
switch(num){
case 1:
printf("奖励你个美女\n");
break;
case 2:
printf("奖励你一打金币\n");
break;
case 3:
printf("奖励你一本葵花宝典\n");
break;
*注意事项,容易犯错的地方
*1.case跟后面的序数中间要加空格
*2.case语句后面用的冒号:不是结束用的;
*3.还是要小心case穿透。
当天课后作业
- 输入一个整数day代表星期几,根据day的值输出对应的星期几,比如day==1,就输出“星期一”(用两种方式实现)
int day;
printf("请输入1~7的数字");
scanf("%d",&day);
if(day>0&&day<8)
{
//多重if...else if条件分支实现
if(day==1){
printf("星期一");
}else if(day==2){
printf("星期二");
}else if(day==3){
printf("星期三");
}else if (day==4){
printf("星期四");
}else if (day==5){
printf("星期五");
}else if(day==6){
printf("星期六");
}else{
printf("星期天");
}
switch(day){
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
default:
printf("星期天");
}
}else{
printf("您输入的数字有误!请重新输入!");
}
2.输入一个整数score代表分数,根据分数输出等级(A-E)
if(score<0||score>100){ printf("输入的分数有误,分数应该在0~100之间!"); }else{ switch(grade){ case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; case 6: printf("D\n"); break; default: printf("E\n"); break; } } |
3.根据用户输入的年份,月份,日期计算该日期是一年中的第几天?这个例子的下面会试验上面所说的case穿透的有利一面,利用好了会很有帮助。
int isRun=0;//是否为闰年(计算2月的天数) printf("请输入年份:\n"); scanf("%d",&year); printf("请输入月份:\n"); scanf("%d",&month); printf("请输入日期:\n"); scanf("%d",&day); //判断当前输入的年份是否是闰年:闰年2月为29天,平年2月为28天 if((year%4==0&&year%100!=0)||(year%400==0)){ isRun=1; }//2月份的总天数=28+isRun; /* if(month==1){ total=day;//1月15日===> }else if(month==2){ total=31+day; }else if(month==3){ total=31+28+isRun+day;//1月份的天数+2月份的天数+日期 }else if(month==4){ total=31+28+isRun+31+day; }else if(month==5){ total=31+28+isRun+31+30+day; }else if(month==6){ total=31+28+isRun+31+30+31+day; }else if(month==7){ total=31+28+isRun+31+30+31+30+day; }else if(month==8){ total=31+28+isRun+31+30+31+30+31+day; }else if(month==9){ total=31+28+isRun+31+30+31+30+31+31+day; }else if(month==10){ total=31+28+isRun+31+30+31+30+31+31+30+day; }else if(month==11){ total=31+28+isRun+31+30+31+30+31+31+30+31+day; }else if(month==12){ total=31+28+isRun+31+30+31+30+31+31+30+31+30+day; } */ //利用switch的case穿透特性实现==>3月16号 switch(month) { case 12: total+=30;//加上11月份的30天 case 11: total+=31;//加上10月份的31天 case 10: total+=30;//加上9月份的30天 case 9: total+=31;//加上8月份的31天 case 8: total+=31;//加上7月份的31天 case 7: total+=30;//加上6月份的30天 case 6: total+=31;//加上5月份的31天 case 5: total+=30;//加上4月份的30天 case 4: total+=31;//加上3月份的31天 case 3: total+=28+isRun;//加上2月份的28或29天 case 2: total+=31;//加上1月份的31天 case 1: total+=day; //加上输入的日期 } printf("%d年%d月%d日是一年中第%d天",year,month,day,total); |
扩展练习:
1.将用户输入的三个数字进行排序(升序),这个程序要点在于比较两个数字大小并交换顺序,引入了一个第三方中间变量的一种方法。要牢记!
int a,b,c,temp; printf("请输入第一个数字:\n"); scanf("%d",&a); printf("请输入第二个数字:\n"); scanf("%d",&b); printf("请输入第三个数字:\n"); scanf("%d",&c); printf("排序前:a=%d,b=%d,c=%d\n",a,b,c); //比较a和b的大小 if(a>b){ temp=a; a=b; b=temp; } // 比较a和c if(a>c){ temp=a; a=c; c=temp; } //比较b和c if(b>c){ temp=b; b=c; c=temp; } printf("排序后:a=%d,b=%d,c=%d\n",a,b,c); |
2.个人所得税计算器: (工资-起征税额)*税率-速算扣除数,这个程序是一堆循环的嵌套,因数量较多要注意符号一定不能搞错了,大括号不能弄错。
float totalSalary;//税前工资 float tax;//个税 float realSalary;//税后工资 float taxSalary;//应缴税的工资=(税前工资-起征税额); printf("请输入您的税前工资:\n"); scanf("%f",&totalSalary); taxSalary=totalSalary-3500; if(totalSalary<3500){ printf("对不起,你属于贫农,不需要交税!"); }else{ if(taxSalary<=500){ tax=taxSalary*0.05; }else if(taxSalary>500&&taxSalary<=2000){ tax=taxSalary*0.1-25; }else if(taxSalary>2000&&taxSalary<=5000){ tax=taxSalary*0.15-125; }else if(taxSalary>5000&&taxSalary<=20000){ tax=taxSalary*0.2-375; }else if(taxSalary>20000&&taxSalary<=40000){ tax=taxSalary*0.25-1375; }else if(taxSalary>40000&&taxSalary<=60000){ tax=taxSalary*0.3-3375; }else if(taxSalary>60000&&taxSalary<=80000){ tax=taxSalary*0.35-6375; }else if(taxSalary>80000&&taxSalary<=100000){ tax=taxSalary*0.4-10375; }else{ tax=taxSalary*0.45-15375; } realSalary=totalSalary-tax; printf("您的税前工资为%7.2f,应缴个税%7.2f,税后工资:%7.2f",totalSalary,tax,realSalary); } |
下面是我自己的练习版本:
//输入三个数之后按照升序排列
#include <stdio.h>
void main(){
int a,b,c,num;
printf("输入一个数:\n");
scanf("%d",&a);
printf("再输入一个数:\n");
scanf("%d",&b);
printf("再输入一个数:\n");
scanf("%d",&c);
printf("排序前:%d,%d,%d\n",a,b,c);
if(a>b){
num=a;
a=b;
b=num;
}
if(a>c){
num=a;
a=c;
c=num;
}
if(b>c){
num=b;
b=c;
c=num;
}
printf("排序后:%d,%d,%d\n",a,b,c);
}
*/
//个税计算器。
#include <stdio.h>
void main(){
float gongzi;//税前工资
float jiao;;//个税
float shuihou;;//税后工资
float ji;//应缴税的工资
printf("你的工资有多少呀?骚年\n");
scanf("%f",&gongzi);
ji = gongzi-3500;
if(gongzi>3500){
if(ji<=500){
jiao = ji*0.05;
}
else if(ji<=2000&&ji>500){
jiao = ji*0.1-25;
}
else if(ji<=5000&&ji>2000){
jiao = ji*0.15-125;
}
else if(ji<=20000&&ji>5000){
jiao = ji*0.2-375;
}
else if(ji<=40000&&ji>20000){
jiao = ji*0.25-1375;
}
else if(ji<=60000&&ji>40000){
jiao = ji*0.3-3375;
}
else if(ji<=80000&&ji>60000){
jiao = ji*0.35-6375;
}
else if(ji<=100000&&ji>80000){
jiao = ji*0.4-10375;
}
else{
jiao = ji*0.45-15375;
}
shuihou = gongzi-jiao;
printf("以你的工资%7.2f算,你应该缴%7.2f块钱,剩下%7.2f块钱",gongzi,jiao,shuihou);
}
else{
printf("等我给你推荐个卖肾的地儿赶紧挣钱去吧\n");
}
}
C语言学习第三章的更多相关文章
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- Go语言学习笔记三: 常量
Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...
- Java基础知识二次学习--第三章 面向对象
第三章 面向对象 时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...
- Struts2框架学习第三章——Struts2基础
本章要点 — Struts 1框架的基本知识 — 使用Struts 1框架开发Web应用 — WebWork框架的基本知识 — 使用WebWork框架开发Web应用 — 在Eclipse中整合To ...
- c语言学习笔记三
第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) { while(*str1 = = *str2) /*不可用while(* ...
- C#高级编程 (第六版) 学习 第三章:对象和类型
第三章 对象和类型 1,类和结构 类存储在托管堆上 结构存储在堆栈上 2,类成员 类中的数据和函数称为类成员 数据成员 数据成员包括了字段.常量和事件 函数成员 方法:与某个类相关的函数,可以 ...
- C语言进阶学习第三章
以下记录动态内存分配: 1.malloc和free malloc和free分别用于执行动态内存分配和释放.这些函数维护一个可用内存池,当一个程序需要一些内存时,调用malloc函数,malloc从内存 ...
- C语言学习第五章
今天要进行一个重要元素数组的学习了.这一章要掌握什么是数组,数组怎么样命名,数组怎么样使用,以及一些常见的错误和需要注意的事项. 一. 数组的基本概念 数组是可以在内存中连续存储多个元素的结 ...
- C 语言学习 第三次作业总结
本次作业内容: For循环的使用 If判断语句的使用 常用数学运算表达式的使用 数学函数库中几个常见函数的使用及自我实现 将操作代码提交到coding 作业总结: For循环是C语言中一种基本的循环语 ...
随机推荐
- ajax 实现三级联动
ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...
- 关于在链路聚合下做smart,monitor link的转发测试
关于在链路聚合下做smart,monitor link的转发测试 这次又要开始瞎折腾了.没事找事了.毕竟我还是很无聊的: 这个实验主要要涉及到以下几个方面: 1.gvrp的应用: 2.Smart Li ...
- 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe
[故障|监听]TNS-12518.TNS-00517和 Linux Error:32:Broken pipe 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱 ...
- lnmp pathinfo问题
location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 ...
- <abbr>标签的
表示一个缩写形式,比如 "Inc."."etc.".通过对缩写词语进行标记,您就能够为浏览器.拼写检查程序.翻译系统以及搜索引擎分度器提供有用的信息. 将一个标 ...
- dreamweaver中的 map怎么调用?_制作热点图像区域
我们浏览网页时,经常看到一些图片上会出现特别的超链接,即在一张图片上有多个局部区域和不同的网页链接,比如地图链接. 这就是映射图像(Image Map),它是指一幅根据链接对象不同而被人为划分为若干指 ...
- mui学习链接
http://dev.dcloud.net.cn/mui/snippet/ http://www.bcty365.com/content-146-2453-1.html hbuilder转rem值: ...
- 转换器5:参考Python源码,实现Php代码转Ast并直接运行
前两个周末写了<手写PHP转Python编译器>的词法,语法分析部分,上个周末卡文了. 访问器部分写了两次都不满意,没办法,只好停下来,参考一下Python的实现.我实现的部分正好和Pyt ...
- 如何在RecyclerView上面实现"拖放"和"滑动删除"-2
拖动手柄 在设计一个支持"拖放"的列表时, 通常提供一个在触摸时初始化拖拽的"拖动手柄". 因其可发现性和可用性而被Material Guidelines所推荐 ...
- JVM中堆内存和栈内存的区别
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...