C语言学习第四章——选择结构程序设计

比较两个实型数据是否相等(考虑误差)

#include<stdio.h>
#include<math.h>
int main(void){
	float a = 10.2222225,b = 10.2222229;
	//if(a==b)
	if(fabs(a-b)<=1e-6)		//double fabs(double),	int abs(int)
		printf("这两个数相等\n");
	else
		printf("这两个数不相等\n");
	return 0; 
} 

浮点型数据有误差,尽量不用==

求一元二次方程的根

#include<stdio.h>
#include<math.h>
int main(void){
	double a,b,c,d;
	printf("请输入一元二次方程的3个系数:");
	scanf("%lf%lf%lf",&a,&b,&c);
	if(fabs(a-0)<=1e-6){
		printf("输入有误,程序结束运行\n");
		return 0;
	} 
	d=b*b-4*a*c;
	if(d<0)
		printf("此方程无实数根\n");
	else if(fabs(d)<=1e-6)
		printf("此方程的根为%lf\n",-b/(2*a));
	else
		printf("此方程的两个根为%lf,%lf\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
	return 0;
} 

逻辑型数据

//布尔数据类型也是整形数据的一种
//#include<stdbool.h>	//该文件中有_Bool这个数据类型,_Bool与bool是同义词,vc++中没有这个头文件 
#include<stdio.h>
int main(void){
	//定义布尔型变量 ——C99中的新增类型,用它所定义的变量,可以用来表示真假,取值范围为1和0 
	bool a=false;		//false表示常数 0		该句与bool a=0;等价 
	bool b=true;		//true表示常数 1 		该句与bool b=1;等价 
	//_Bool c; 		//和 bool c;等价 
	
	b=3;		//3为真,b的值为 1 
	printf("%d\n",b);		//输出:1 
	printf("%d\n",sizeof(a));		//布尔型数据占1个字节 
}

switch语句

//电梯程序
#include<stdio.h>
int main(void){
	printf("请输入所要到达的楼层:");
	int a;
	scanf("%d",&a);
	switch(a){
		default:
			printf("没有这个楼层\n");
			break;
		case 1:
			printf("上一楼\n");
			break;
		case 2:
			printf("上二楼\n");
			break;
		case 3:
			printf("上三楼\n");
			break; 
	}
	return 0;
} 

可以不用default标号,标号改变顺序,default标号也可以先出现

注意:在执行完一个case标号后面的语句后,就从此标号开始执行下去,不再进行判断

条件编译

#include<stdio.h>
int main(void){
	char ch;
	while((ch=getchar())!='\n'){
	#if 1
		if(ch>='A' && ch <= 'Z')
			ch+=32;
	#else
		if(ch>='a' && ch <= 'z')
			ch-=32;	
	#endif
		putchar(ch);
	}
	return 0;
}

在这里插入图片描述
头文件
文件包含指令:
(1)#include<文件名>系统到存放 c 库函数头文件的目录中寻找要包含的文件,这称为标准方式。
(2)#include"文件名”系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。
注意:头文件的后缀可以为“.h”、“.c” 或者没有后缀。
文件:头文件.h

#define PI 3.1415
int E = 123;
int max(int x,int y){
	if(x>y)
		return x;
	else
		return y;
}

文件:头文件练习.cpp

#include<stdio.h>
#include "D:\桌面\头文件.h"
//#include "D:\桌面\头文件.h"	//重复定义会报错
int main(void){
	printf("%lf\n",PI);		//3.141500
	printf("%d\n",max(1,3));	//3
	printf("%d\n",E);		//123
	return 0;
} 

重复定义会出现错误,解决方法:

文件:头文件.h

#ifndef UI
#define UI 1
#define PI 3.1415
int E = 123;
int max(int x,int y){
	if(x>y)
		return x;
	else
		return y;
}
#endif

文件:头文件练习.cpp

#include<stdio.h>

#include "D:\桌面\头文件.h"
#include "D:\桌面\头文件.h"		//不在报错 

int main(void){
	printf("%lf\n",PI);		//3.141500
	printf("%d\n",max(1,3));	//3
	printf("%d\n",E);		//123
	return 0;
} 

习题一
1.输入3个整数,使用条件编译的方式,让其按从小到大或者从大到小的方式输出

#include<stdio.h>
int main(void){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	if(a>b){
		int d;
		d=a;
		a=b;
		b=d;
	}
	if(a>c){
		int d;
		d=a;
		a=c;
		c=d;
	}
	if(b>c){
		int d;
		d=b;
		b=c;
		c=d;
	}
#if 0
	printf("%d,%d,%d\n",a,b,c);
#else
	printf("%d,%d,%d\n",c,b,a);
#endif
	return 0;
}

习题二
2.使用switch语句,要求输入1,输出abc;输入2,输出bc,输入3,输出c。

#include<stdio.h>
int main(void){
	int a;
	scanf("%d",&a);
	switch(a){
		case 1:
			printf("abc\n");
			break;
		case 2:
			printf("bc\n");
			break;
		case 3:
			printf("c\n");
			break;
		default:
			printf("请输入1,2,3\n");
			break;
	}
	return 0;
}

方法二:

#include<stdio.h>
int main(void){
	int a;
	scanf("%d",&a);
	switch(a){
		case 1:
			putchar('a');
		case 2:
			putchar('b');
		case 3:
			putchar('c');
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shi_jiaye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值