3.1流程控制之if语句
一、选择语句
if (x>100) //满足这个条件,则为1(真)。可继续执行括号中的内容---------如下
//括号中的内容,终究会被转换成0或1,是1(ture)才执行大括号中的代码语句{}。
{
printf("1111111\n");
}
例1、你富有不
#include <stdio.h>
int main ()
{
int money;
printf("请问你有多少钱\n");
scanf("%d",&money);
if (money>100)
{
printf("youqian de \n");
}
return 0;
}
例2、另外场景和认知补充
#include<stdio.
int main()
{
int zaibu;
puts("zai :1.在家,2.不在");
scanf ("%d",&zaibu);
if (zaibu==1) //1成立。执行{}中的内容
{
puts("zhaodao");
puts("lou");
}
return 0;
}
最大值公式:
z=(data1>data2)?data1:data2;
最小值公式:
z=(data1>data2)?data2:data1;
3.2 if经典案例代数法交换值
(1) 内存中后两个数,用代数值按从小到大输出两数
#include <stdio.h>
int main ()
{
int data1;
int data2;
int tmp;
int z;
puts("请输入两个数值:");
scanf("%d %d",&data1,&data2);
//z=(data1>data2)?data2:data1;
if (data1>data2)
{
tmp=data1;
data1=data2;
data2=tmp;
}
printf("%d %d ",data1,data2);
return 0;
}
#include <stdio.h>
int main()
{ int a; int b; int tmp;
puts("请输入a和b两个数字:");
scanf("%d %d",&a,&b);
printf("a=%d,b=%d\n",a,b);
if (a>b)
{
tmp=a;
a=b;
b=tmp;
printf("从小到大顺序为:%d,%d\n",a,b);
}
return 0;
}
(2)不交换的土办法
#include<stdio.h>
int main()
{
int data1;
int data2;
int datatmp;//不管怎么输入,data1中存放最小数
printf ("请输入两个数:\n");
scanf("%d,%d",&data1,&data2);
if(data1>data2){
datatmp=data1;//不管怎么输入,data1中存放最小数
data1=data2;
data2=datatmp;
printf("最大值为%d\n",data2);
printf("最小值为%d\n",data1);
}
return 0;
}
作业:三个数呢?怎么实现
#include<stdio.h>
int main()
{
int data1;
int data2;
int data3;
int datatmp;//不管怎么输入,data1中存放最小数
printf ("请输入三个数:\n");
scanf("%d,%d,%d",&data1,&data2,&data3);//不加\n
if (data1>data2)
{
datatmp=data1;//不管怎么输入,data1中存放最小数
data1=data2;
data2=datatmp;
}
if (data1>data3)
{
datatmp=data1;//不管怎么输入,data1中存放最小数1
data1=data3;
data3=datatmp;
}
if (data2>data3)
{
datatmp=data2;//不管怎么输入,data2中存放最小数1
data2=data3;
data3=datatmp;
}
printf ("%d,%d,%d\n",data1,data2,data3);
return 0;
}
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int tmp;
puts("请输入a,b,c三个数字:");
scanf("%d,%d,%d",&a,&b,&c);
printf("%d,%d,%d",a,b,c);
if(a>b)
{
tmp=a;
a=b;
b=tmp;
}
if(a>c)
{
tmp=a;
a=c;
c=tmp;
}
if(b>c)
{
tmp=b;
b=c;
c=tmp;
}
printf("%d,%d,%d\n",a,b,c);
return 0;
}
结果:
D:\code\3>a.exe
请输入三个数:
7,10,4
4,7,10
3.3 逻辑判断与或非
<2 >逻辑运算符
1为真,0为假
(1)多重条件或/与
课程现敲代码:
#include <stdio.h>
int main()
{
int a;
int b;
printf("请输入两个数字:");
scanf("%d,%d",&a,&b);
if(a==1 && b==0)
{
printf ("逻辑与成功");
}
if(a==1 || b==0)
{
printf ("逻辑或成功");
}
if(!a)
{
printf ("逻辑非成功");
}
return 0;
}
结果:
请输入a,b两个数:
0 7
逻辑非
(2)既有钱又有颜才合格、
#include <stdio.h>
int main()
{
int havemoneyornot;
int handsomeyesornot;
printf("你有钱么:有的话扣1,没有的话扣0\n");
scanf("%d",&havemoneyornot);
printf("你帅么,帅的话扣1,不帅的话扣0\n");
scanf("%d",&handsomeyesornot);
if ( havemoneyornot==1 && handsomeyesornot==1 )
{
puts("不错的\n");
}
printf("相亲结束");
return 0;
}
结果:
D:\code\3>a.exe
你有钱么:有的话扣1,没有的话扣0
1
你帅么,帅的话扣1,不帅的话扣0
1
不错的
相亲结束
#include<stdio.h>
int main()
{
int richyesornot;
int handyesornot;//帅气
printf("是否富裕?帅气?输入两个数1或0\n");
scanf("%d %d",&richyesornot,&handyesornot);
if(richyesornot==1&&handyesornot==1)
{
printf("成功\n");
}
else if(richyesornot==1||handyesornot==1)
{
printf("不成功\n");
}
return 0;
}
非 !
好女不嫁莆田男,好男不娶福州女**
#include <stdio.h>
int main()
{
int havemoneyornot;
int handsomeyesornot;
int putianpyesornot;
printf("你是莆田的么:是的话扣0,不是的话扣1\n");
scanf("%d",&putianpyesornot);
if(!putianpyesornot)
{
printf("好女不嫁莆田男");
return -1;//-1!!!
}
printf("你有钱么:有的话扣1,没有的话扣0\n");
scanf("%d",&havemoneyornot);
printf("你帅么,帅的话扣1,不帅的话扣0\n");
scanf("%d",&handsomeyesornot);
/*if ( havemoneyornot==1 && handsomeyesornot==1 )
{
puts("不错的\n");
}*/
printf("相亲结束");
return 0;
}
结果:
D:\code\3>a.exe
你是莆田的么:是的话扣0,不是的话扣1
0
好女不嫁莆田男
#include<stdio.h>
int main()
{
int richyesornot;
int handyesornot;//帅气
printf("是否富裕?帅气?输入两个数1或0\n");
scanf("%d %d",&richyesornot,&handyesornot);
if(richyesornot==1&&handyesornot==1)
{
printf("成功\n");
}
else if(richyesornot==1||handyesornot==1)
{
printf("不成功\n");
}
return 0;
}
#include <stdio.h>
int main ()
{
int money;
int look;
int putian;
puts("你是莆田的么:不是的话扣1,是的话扣0\n");
scanf("%d",&putian);
if( !putian)
{
printf("好女不加莆田男\n");
return -1;
}
puts("请输入是(1)和否(0):");
scanf("%d %d",&money,&look);
if(money==1 &&look==1)
{
printf("合格的\n");
}
else
{
printf("不合格的\n");
}
return 0;
}
return -1;代表函数非正常终止
return 1; 代表函数非正常终止
3.4 if else编程练习
1、输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。
/*A 十进制为 65 , a 十进制为 97*/
#include <stdio.h>
int main ()
{
char data;
puts("请输入一个字符:");
scanf("%c",&data);
if(data>=65 && data<=97)
{
printf("%c",data+32);
}
else if(data>=97 && data<=122)
{
printf("%c",data);
}
else{
printf("输入错误,请输入正确字符");
}
return 0;
}
//字母用 %c
2、身体好吗: (1) 好----- 帅吗,有钱吗 ---- 满足--------愿意跟我花吗------愿意---- 完美
不愿意----- 不完美
不满足------不做朋友
(2) 不好-- 不做朋友
if判断后,**先写else内容**
#include <stdio.h>
int main ()
{
int look;
int health;
int rich;
int geting;
puts("身体好吗?1或0");
scanf("%d",&health);
if(health==1)
{
puts("富裕吗?帅气么?1或0");
scanf("%d %d",&rich,&look);
if(rich==1&&look==1)
{
puts("愿意跟我花吗-1或0");
scanf("%d",&geting);
if(geting==1)
{
puts("完美\n");
}
else{
puts("不完美\n");
}
}
else{
printf("不满足 ");
}
}
else{
printf("不能做p-engyou");
}
return 0;
}
结果
D:\code\复习\notpad++\if>a.exe
身体好吗?1或0
1
富裕吗?帅气么?1或0
1 1
愿意跟我花吗-1或0
1
完美
注:puts(“ ”),不加\n
3.6 列表选择
1、switch...case 并列关系
####
支持整型数,也支持字符
char a;
case 'a':
printf("11111")
break;
1、整型
#include <stdio.h>
int main ()
{
int data;
printf("请输入一个数字");
scanf("%d",&data);
switch(data)
{
case 1:
case 2:
puts("满足了条件1和2的情况");
break;
case 3:
puts("满足了条件3的情况");
break;
case 4:
puts("满足了条件4的情况");
break;
case 5:
puts("满足了条件5的情况");
break;
default:
puts("满足其他的情况");
}
return 0;
}
2、字符 注意: getchar(); //吸收回车符,上个回车符,到字符型这边,回车当成一个字符
#include <stdio.h>
int main ()
{
int data1;
printf("请输入一个数字\n");
scanf("%d",&data1);
char data;
switch(data1)
{
case 1:
case 2:
puts("满足了条件1和2的情况");
break;
case 3:
puts("满足了条件3的情况");
break;
case 4:
puts("满足了条件4的情况");
break;
case 5:
puts("满足了条件5的情况");
break;
default:
puts("满足其他的情况");
}
printf("请输入一个字符\n");
getchar(); //吸收回车符,上个回车符,到字符型这边,回车当成一个字符
scanf("%c",&data);
switch(data)
{
case 'a':
case 'b':
puts("满足了条件a和b的情况");
break;
case 'c':
puts("满足了条件c的情况");
break;
case 'd':
puts("满足了条件d的情况");
break;
case 'f':
puts("满足了条件f的情况");
break;
default:
puts("满足其他的情况");
}
return 0;
}
3.7 学生成绩等级划分
#include <stdio.h>
int main()
{
int score;
puts("请输入成绩数:");
scanf("%d",&score);
switch(score/10)
{
case 1: //case 空格 1:
case 2:
case 3:
case 4:
case 5:
printf("等级为D,不及格\n");
break;
case 6:
printf("等级为c\n");
break;
case 7:
printf("等级为B\n");
break;
case 8:
printf("等级为B\n");
break;
case 9:
case 10:
printf("等级为A\n");
break;
default:
printf("请重新输入\n");
}
return 0;
}
结果:
D:\code\3>a.exe 请输入成绩数: 30 等级为D
3.8 路程算折扣
s路程 s<250,没有折扣
250<=s<500 2%折扣
500<=s<1000 5%折扣
1000<=s<2000 8%折扣
2000<=s<3000 10%折扣
2000<s 15%折扣
不能写成 250<=s<500,用逻辑与
一、if
#include<stdio.h>
int main()
{
int zhekou;
int lucheng;
puts("请输入路程为:");
scanf("%d",&lucheng);
if(lucheng<250)
{
zhekou=0;
}else if(lucheng>=250 && lucheng<500)//不能写成250<s<500
{
zhekou=2;
}else if(lucheng>=500 && lucheng<1000){
zhekou=5;
}else if(lucheng>=1000 && lucheng<2000){
zhekou=8;
}else if(lucheng>=2000 && lucheng<3000){
zhekou=10;
}else {
zhekou=15;
}
printf("折扣为%f",(float)zhekou/100);
return 0;
}
二、switch
#include <stdio.h>
int main()
{
int lucheng;
puts("请输入路程:");
scanf("%d",&lucheng);
int zhekou;
switch(lucheng/250)
{
case 0:
zhekou=0;
break;
case 1: //case 空格 1
zhekou=2;
break;
case 2:
case 3:
zhekou=5;
break;
case 4:
case 5:
case 6:
case 7:
zhekou=8;
break;
case 8:
zhekou=10;
break;
default:
zhekou=15;
break;
}
printf("%.2f\n",(float)zhekou/100);
return 0;
}