根据比较的结果,决定做、还是不做某些动作,就要用到if语句。
一个基本的if语句由一个关键字if开头,跟上在括号里的一个表达条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果为true,那么就执行后面跟着的这队大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。
if(表达式){
(语句块);
}
例:提醒用户输入是与否,计算机通过判断来做出回答。(是---》毕业后可以获得好的offer;否---》毕业等于失业。)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main8() {
//1、询问是否好好学习
printf("是否好好学习?");
char answer[10] = { 0 };
scanf("%s",answer);
//2、如果答的是“是”,毕业后就可以获得offer
//选择结构
//=赋值运算符 ==表示相等(比较运算符:> < >= <=)比较运算符的结果就是真或假
//! 非运算符,将真的变成假的,也可以将假的变成真的
/*
if (!strcmp(answer, "是")) {
printf("毕业后就可以获得offer");
}
//3、如果答的是“否”,毕业等于失业
if (!strcmp(answer, "否")) {
printf(" 毕业等于失业");
}
*/
if (!strcmp(answer, "是")){
printf("毕业后就可以获得offer");
printf("你很完美");
}
else{
printf(" 毕业等于失业");
}
retuen 0;
}
将成绩划分称若干个小区间,输入考试成绩,判断输入的成绩属于哪个区间并打印。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main9() {
/*
//输入一个考试成绩,判断是否合格,如果及格,就打印分数及格
//1、输入分数
float score = 0;
printf("请输入你的分数:");
scanf("%f",&score);
//2、进行判断
if (score >= 60) {
printf("及格");
}
*/
/*
//输入一个考试成绩,判断是否合格,如果及格,就打印分数及格,如果不及格,打印不及格
//1、输入分数
float score = 0;
printf("请输入你的分数:");
scanf("%f", &score);
//2、进行判断
if (score >= 60) {
printf("及格");
}
else {
printf("不及格");
}
*/
//升级:0-100 0-59 不及格 60-79 及格 80-89 良好 90-100 优秀
//多分支(将一个大的区间分成若干个连续的小区间)
float score = 0;
printf("请输入你的分数:");
scanf("%f", &score);
if (score<=59) {
printf("不及格");
}
else if (score<=79) { //逻辑运算符 &&与(同时满足) ||或(只满足一个) !非
printf("及格");
}
else if (score<=89) {
printf("良好");
}
else if(score<=100){
printf("优秀");
}
else { //其他情况
printf("输入错误");
}
return 0;
}
if(表达式){
(语句块);
}
else if(表达式){ //else等于:否则的话
(语句块);
}
...........
else if(表达式){
(语句块);
}
else{
}
上述一般用于处理需要进行多种情况判断的问题
switch-case语句
switch(控制表达式){ //控制表达式只能是整数型的结果。
case 常量1: //常量可以是常数,也可以是常数进行计算的表达式。
语句;
break;
........
case 常量2:
语句;
break;
..........
default:
语句;
}
break
.switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完成分支的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。
#define _CRT_SECURE_NO_WARNINGS 1
//函数
//返回值类型 函数名(形参){
//函数体
//}
//判断一个数是否是偶数 num%==0
int isOdd(int num4) {
//判断
return num4 % 2;
}
#include<stdio.h>
//格式化 CTRL+a CTRL+k CTRL+f
int main10() {
/*
//1、输入一个数字
int num;
printf("请输入数字:");
scanf("%d", &num);
//2、根据数字判断星期几。7---星期天 6---星期六 5---星期五.。。。。。。1---星期一 0----输入错误
if (num == 7) {
printf("今天是星期天\n");
}
if (num == 6) {
printf("今天是星期六\n");
}
if (num == 5) {
printf("今天是星期五\n");
}
if (num == 4) {
printf("今天是星期四\n");
}
if (num == 3) {
printf("今天是星期三\n");
}
if (num == 2) {
printf("今天是星期二\n");
}
if (num == 1) {
printf("今天是星期一\n");
}
if (num < 1 || num>7) {
printf("输入错误\n");
}
//if--else if else if
int num2;
printf("请输入数字:");
scanf("%d", &num2);
if (num2 == 7) {
printf("今天是星期天\n");
}
else if (num2 == 6) {
printf("今天是星期六\n");
}
else if (num2 == 5) {
printf("今天是星期五\n");
}
else if (num2 == 4) {
printf("今天是星期四\n");
}
else if (num2 == 3) {
printf("今天是星期三\n");
}
else if (num2 == 2) {
printf("今天是星期二\n");
}
else if (num2 == 1) {
printf("今天是星期一\n");
}
else if (num2 < 1 || num2>7) {
printf("输入错误\n");
}
//3、升级:1-5打印上学时间 6-7打印休息时间
int num3;
printf("请输入数字:");
scanf("%d", &num3);
if (num3 >= 1 && num3 <= 5) {
printf("上学时间\n");
}
else if (num3 >= 6 && num3 <= 7) {
printf("休息时间\n");
}
else {
printf("输入错误\n");
}
*/
int num4;
printf("请输入数字:");
scanf("%d", &num4);
switch (num4) {
case 1:
printf("今天星期一");
break;
case 2:
printf("今天星期二");
break;
case 3:
printf("今天星期三");
break;
case 4:
printf("今天星期四");
break;
case 5:
printf("今天星期五");
break;
case 6:
printf("今天星期六");
break;
case 7:
printf("今天星期天");
break;
default:
printf("数字错误");
}
if (20 == num4) {
printf("num=%d\n", num4);
}
//调用函数 函数名(实参)
int res = isOdd(num4);
printf("%d\n", res);
return 0;
}
嵌套的if-else
找三个数中的最大值:如果要求输入三个整数,输出其中最大的,应该怎么做?
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
int MAX=0;
if(a>b){
if(a>c){
MAX=a;
}else{
MAX=c;
}else{
if(b>c){
MAX=b;
}else{
MAX=C;
}
}
}
printf("The MAX is %d!\n",MAX);
嵌套的判断:当if的条件满足或者不满足的时候需要执行的语句也可以是一条if或if-else语句;这就是嵌套的if语句
else的匹配:else总是和最近的那个if匹配。
缩进:缩进格式不能暗示else的匹配。