C:3.1-3.3 if-else语句、逻辑判断、习题

  • if语句:
#include <stdio.h>
//问题:float为什么不会超过内存最大空间

/*知识点:

   小于< 大于> 小于或等于<= 大于或等于>=  等于== 不等于!=
   注:等于==才是判断,只有一个=编译可以过,但是if()里的内容会被转化为0,1,当为1时才会执行{}中的语句

*/
int main()
{
	int money;
	
	printf("请输入你的余额\n");
	scanf("%d",&money);
	if(money>=100)
	{
		
		printf("厉害\n");  //int内存空间最大为2的32次方,超过该值则循环内的语句不输出
		puts("有钱");  //put自带换行,若添加了\n则会多出来一行空行
		
	}
	puts("结束");  //语句在循坏外,不论if条件是否满足,均会输出
	
	printf("测试结果:%d\n",money>100); //判断条件放在输出语句里会执行0/1操作,满足输出为1,不满足为0,例如编译2
	
	return 0;
}
D:\C语言\code\第三章>gcc test_if.c

D:\C语言\code\第三章>a.exe
请输入你的余额
100
厉害
有钱
结束
测试结果:0

D:\C语言\code\第三章>a.exe
请输入你的余额
101
厉害
有钱
结束
测试结果:1

D:\C语言\code\第三章>
  • 例1:两数交换,按照数值从小到大输出
#include <stdio.h>

//例1:两数交换,按照数值从小到大输出

int main()
{
	int data1;
	int data2;
	int datamax;  //用于交换方法
	
	printf("请输入两个数:\n");
	scanf("%d%d",&data1,&data2);

//方法1:交换	
	if(data1>data2)
	{
		datamax=data1;
		data1=data2;
		data2=datamax;	
	}
	printf("从小到大依次为:%d<%d\n",data1,data2);

//方法2:	
	if(data1>data2)
	{
		printf("从小到大输出为:%d<%d\n",data2,data1);		
	}

	else   //else有自己的{}括号,在if{}括号外
	{
		printf("从小到大依次为:%d<%d\n",data1,data2);				
	}
	
	puts("输出完毕");
	
	return 0;
}
D:\C语言\code\第三章>gcc ex1_if_else.c

D:\C语言\code\第三章>a.exe
请输入两个数:
100 99
从小到大依次为:99<100
从小到大依次为:99<100
输出完毕

D:\C语言\code\第三章>a.exe
请输入两个数:
99
100
从小到大依次为:99<100
从小到大依次为:99<100
输出完毕

D:\C语言\code\第三章>
  • 例二:输入三个数,按照从小到大输出   (ex2_if_else.c )
  • 1.方法一:交换
#include <stdio.h>

//例:输入三个数,按照从小到大输出

int main()
{
	float data1;
	float data2;
	float data3;
	float datamax;
	
	puts("请依次输入三个数字:");
	scanf("%f%f%f",&data1,&data2,&data3);

//方法一:交换
    if(data1>data2)
	{
		datamax=data1;
		data1=data2;
		data2=datamax;
	}
	if(data1>data3)
	{
		datamax=data1;
		data1=data3;
		data3=datamax;
	}
	if(data2>data3)
	{
		datamax=data2;
		data2=data3;
		data3=datamax;
	}
	
	printf("方法一这三个数从小到大依次为:%.2f<%.2f<%.2f\n",data1,data2,data3);		
	puts("输出完毕");
		
	return 0;
}

      D:\C语言\code\第三章>a.exe
	  请依次输入三个数字:
	  2.1 4.9 2.7
	  方法一这三个数从小到大依次为:2.10<2.70<4.90
	  输出完毕

  • 2.方法二:列出情况
#include <stdio.h>

//例二:输入三个数,按照从小到大输出

int main()
{
	float data1;
	float data2;
	float data3;
	
	puts("请依次输入三个数字:");
	scanf("%f%f%f",&data1,&data2,&data3);	

//方法二:列出比较  (注:不加retuern -1会六条均输出)	
	if(data1<data2 && data2<data3) //不能用data1<data2<data3,当两个判断时必须用逻辑符号连接
	{
		printf("方法二从小到大依次为:%.2f<%.2f<%.2f\n",data1,data2,data3);
		return -1;
	}
	if(data1<data3 && data3<data2)
	{
		printf("方法二从小到大依次为:%.2f<%.2f<%.2f\n",data1,data3,data2);
		return -1;
	}
	if(data2<data1 && data1<data3)
	{
		printf("方法二从小到大依次为:%.2f<%.2f<%.2f\n",data2,data1,data3);
		return -1;
	}
	if(data2<data3 && data3<data1)
	{
		printf("方法二从小到大依次为:%.2f<%.2f<%.2f\n",data2,data3,data1);
		return -1;
	}
	if(data3<data1 && data1<data2)
	{
		printf("方法二从小到大依次为:%.2f<%.2f<%.2f\n",data3,data1,data2);
		return -1;
	}
	if(data3<data2 && data2<data1)
	{
		printf("方法二从小到大依次为:%.2f<%.2f<%.2f\n",data3,data2,data1);
		return -1;  //因为有return —1,程序会提前结束,因此不输出该行
	}	
	puts("输出完毕");
		
	return 0;
}
D:\C语言\code\第三章>a.exe
请依次输入三个数字:
2.3 0.4 2.9
方法二从小到大依次为:0.40<2.30<2.90
  • 逻辑判断:与 &&   或 ||   非 !
#include <stdio.h>

/*
   内容:逻辑判断 与&& 或|| 非!    
*/

int main()
{
	int a;
	int b;
	puts("请输入a和b的值");
	scanf("%d%d",&a,&b);
	
	if(a==100&&b==99)  //赋值要两个等于号,因为==才是判断逻辑是否符合
	{
		printf("逻辑与成功\n");  //两者都满足才输出
	}
	if(a==100||b==99)
	{
		printf("逻辑或成功\n"); //两者满足其一就会输出
	}
	if(!a)  //非0即a,只有a为0时才会满足!a,然后输出,与b值无关
	{
		printf("逻辑非成功\n");  
	}
	
	return 0;
}
D:\C语言\code\第三章>gcc test_luoji.c

D:\C语言\code\第三章>a.exe
请输入a和b的值
100 99
逻辑与成功
逻辑或成功

D:\C语言\code\第三章>a.exe
请输入a和b的值
1 99
逻辑或成功

D:\C语言\code\第三章>a.exe
请输入a和b的值
0 99
逻辑或成功
逻辑非成功

D:\C语言\code\第三章>a.exe
请输入a和b的值
0 102
逻辑非成功
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值