自学C语言3day

一、C语句
一个函数应该包含声明部分执行部分;基础阶段,应该熟知的几种语句为:选择语句:if(表达式)…else…(条件语句)、switch(多分支选择语句)
for(表达式)…(循环语句)、while(表达式)…(循环语句)、do…while(循环语句),虽然只有简单的几个控制语句,但是一种语句却可以产生不同的结果,从而实现各种各样的功能;所以本次主要记录if (表达式) else,和switch多分支选择语句,其所涉及的内容十分丰富动人。
二、if语句的基本分类及功能叙述
(1)第一种(没有else子句部分)

if(表达式)//表达式中返回的是逻辑值,1(逻辑值为真)执行,0(逻辑值为假)跳过
{........}//逻辑值为真所执行的语句,程序块
.....//其他语句

简单的if语句,没有else,只要满足小括号返回逻辑值的表达式的条件,就可以执行下面的程序块。
下面是实例演示,当输入的数大于或等于18(年龄超过18岁)时,则满足if表示式,返回的逻辑值为1,从而执行if语句下的大括号内的语句;反之,当输入的数小于18时,则返回逻辑值为0,没有输出。

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
printf("请问您的年龄是:");
scanf("%d",&i);
if(i>=18)
{printf("欢迎光临!\n");}//输入i的值大于或等于18时,执行该语句“欢迎光临!”,反之不能执行
getchar();
system("pause");
}

(2)第二种(有else子句部分)

if(表达式)
{........}//逻辑值为真所执行的语句,程序块
else
{........}//逻辑值为假所执行的语句,程序块
.....//其他语句

在if(表达式)后加入了else语句,当小括号中返回的逻辑值为真时,执行if(表达式)下大括号中的语句,程序块;当小括号返回的逻辑值为假时,执行else下大括号的语句。
与第一种if语句的区别就在于加入了else语句,当if(表达式)的条件不能满足时,就会执行else下大括号的语句。就像当你在访问某些网站时,就会收到这样的提示;实例演示如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
printf("请问您的年龄是:");
scanf("%d",&i);
if(i>=18)
{printf("欢迎光临!\n");}//当返回逻辑值为真(年龄大于等于18)时,执行该语句。
else printf("未成年不得查看!请退出页面。\n");//当返回逻辑值为假(未成年)时,则执行该语句。
getchar();
system("pause");
}

(3)第三种(在else部分又嵌套了多层的if语句)

.....//其他语句
if(表达式1){........}//判断是否符合其中的某一个条件
else if(表达式2){.......}
else if(表达式3){.......}
.......
else if(表达式4){.......}
else {.......}
.....//其他语句

此为多条件的if语句,else if(表达式)的含义是“或者满足该条件”;判断输入的语句满足其中的某一条件,程序从上往下执行;若满足该条件(返回逻辑值为真),则执行在该条件下的大括号中的语句,程序块;若上面的条件都不满足,则执行else下大括号的语句。
下面是一个学生学习成绩等级评定程序,借此可以说明if() …else if…语句的功能,即可以实现条件选择执行,只能执行满足条件的语句,当所以条件都不满足时,执行else 语句。实例演示:
此外,本程序还可以通过Switch语句逆向表达,通过输入评定等级就可以知道学生的成绩处于哪个范围。

#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
printf("请输入你的考试成绩:");
scanf("%d",&a);
if(a>=90)
{printf("您的综合素质评定为:A等\n");}//当学生成绩在90分及以上,执行该语句,输出'A'
else if(a >=80 && a< 90)//该程序使用了“与”&&运算符,当两个关系运算符的逻辑值同时为1(全部为真)时,才能满足条件,继而执行其后的语句。
{printf("您的综合素质评定为:B等\n");}//当学生成绩在80-90分,但没有达到90,执行该语句,输出'B'
else if(a >=70 && a< 80)
{printf("您的综合素质评定为:C等\n");}//当学生成绩在70-80分,但没有达到80,执行该语句,输出'C'
else if(a >=60 && a< 70)
{printf("您的综合素质评定为:D等\n");}//当学生成绩在60-70分,但没有达到70,执行该语句,输出'D'
else {printf("您的综合素质评定为:E等\n");}//当学生成绩在60分以下,执行该语句,输出'E'
getchar();
system("pause");
}

三、Switch 多分支选择语句
if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。虽然if语句可以通过嵌套来增加分支,但是会导致程序冗长而且可读性降低。因此,通过Switch语句直接处理多分支选择。
case和default事实上都是标签,但case的所谓标签,就是标记一处位置,而switch语句就是负责跳转到这些标签指定的位置,然后就会一直往下执行,比如跳转到第一个case1,执行完后,后面的case语句也会执行;处理方法:在每一个case语句后面加上break;当代码执行带break时就会跳出整个switch语句,从而跳过了后面所以的case和default语句。

....//其他语句
switch(表达式)//从表达式中得到的值匹配到某一列表达式
{ 
case 常量表达式1: 语句或方程块1;break;
case 常量表达式2: 语句或方程块2;break;
case 常量表达式3: 语句或方程块3;break;
.......
case 常量表达式n: 语句或方程块n;break;
default :语句或程序块n+1 }//若没有匹配到符合的常量表达式,则跳到default,执行本行语句
....//其他语句

下面实例是通过Switch语句逆向表达,if语句是通过输入成绩从而得知学生的成绩评定等级,而此处的switch语句可以通过输入评定等级就可以知道学生的成绩处于哪个范围。可以清晰的看出switch语句的优点,就是比if 语句更加简洁。

#include<stdio.h>
#include<stdlib.h>
int main()
{
char i;//定义了字符型的输入变量
printf("请输入您的成绩:");
scanf("%c",&i);
switch(i)
{
case 'A':printf("您的成绩大约在90分以上\n");break;//当输入的字符为A时,就会执行该语句,下面语句同理。
case 'B':printf("您的成绩大约在80---90分之间\n");break;
case 'C':printf("您的成绩大约在70---80分之间\n");break;
case 'D':printf("您的成绩大约在60---70分之间\n");break;
default:printf("您的成绩在60分以下\n");
}
getchar();
system("pause");
}

四、设计一个简单的四则运算计算器(加减乘除)
下面是自己设计的一个程序,能够实现基本功能

#include<stdio.h>
#include<stdlib.h>
int main()
{
float a,b;
char ch;
float z;
printf("请输入式子:");
scanf("%f %c %f",&a,&ch,&b);//此处为本程序的重点,也是细节,运算符为字符型
switch(ch)
{
case '-': b=-b;//当输入的式子为减法运算时,b会被赋值自身的相反数,没有break语句,就会执行下一个语句,此时的a+b就变成了a+(-b)。
case '+': z=a+b;printf("结果是:%f\n",z); break;
case '*': z=a*b;printf("结果是:%f\n",z); break;
case '/':
	if (b!=0)  //在switch语句中嵌套了if语句
		{ z=a/b;printf("结果是:%f\n",z);}
else printf("很遗憾,除数不能为零!\n");
}
getchar();
system("pause");
}

总结:本节主要讲的是if语句和switch语句的基本功能和实例演示;注意程序中的各处细节,比如定义的变量类型,每一处标点符号都必须是英文符号;下一节将重点学习有关选择语句的多层嵌套。继续加油!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值