Lawliet|C语言学习笔记4——选择结构

C语言学习笔记——选择结构

  1. 求一元二次方程的根

简约版

#include<stdio.h>
#include<math.h>		//程序中要调用求平方根函数sqrt
int main() 
{	double a,b,c,disc,x1,x2,p,q;	//disc是判别式sqrt(b*b-4ac)  
	scanf("%lf%lf%lf",&a,&b,&c);	//输入双精度浮点型变量的值要用格式声明"%lf"  
	disc=b*b-4*a*c;
	if(disc<0)					//若b*b-4ac<0
		printf("This equation hasn't real roots\n");	//输出“此方程无实根”
	else						//b*b-4ac≥0
	{	p=-b/(2.0*a);
		q=sqrt(disc)/(2.0*a);
		x1=p+q;x2=p-q;		//求出方程的两个根  
		printf("real roots:\nx1=%7.2f\nx2=%7.2f\n",x1,x2);	//输出方程的两个根  
	}
	return 0;
}

完整版

#include <stdio.h>
#include <math.h>
int main()
{	double a,b,c,disc,x1,x2,realpart,imagpart;
	scanf("%lf,%lf,%lf",&a,&b,&c);
	printf("The equation ");
	if(fabs(a)<=1e-6)
		printf("is not a quadratic\n");
	else
	{	disc=b*b-4*a*c;
		if(fabs(disc)<=1e-6)//abs函数求整数的绝对值,fabs函数求实数的绝对值
			printf("has two equal roots:%8.4f\n",-b/(2*a));
		else
			if(disc>1e-6)
			{	x1=(-b+sqrt(disc))/(2*a);
				x2=(-b-sqrt(disc))/(2*a);
				printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
			}
			else
			{	realpart=-b/(2*a);			//realpart是复根的实部
				imagpart=sqrt(-disc)/(2*a);	//imagpart是复根的虚部
				printf("has complex roots:\n");
				printf("%8.4f+%8.4fi\n",realpart,imagpart);	//输出一个复数
				printf("%8.4f-%8.4fi\n",realpart,imagpart);	//输出另一个复数
			}
	}
	return 0;
} 

if语句的形式

形式1 没有else子句

if(表达式) 语句1

形式2 有else子句部分

if(表达式)
	语句1else
	语句2

形式3 在else部分嵌套多层if语句

if(表达式1)
	语句1else if(表达式2)
	语句2else if(表达式3)
	语句3;
	……
else
	语句n;

“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式
方括号内的部分(即else子句)为可选的,既可以有,也可以没有
语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是另一个if语句

  1. 判断是否为闰年
#include <stdio.h>
int main()	
{
	int year,leap;
	printf("enter year:");
	scanf("%d",&year);
	if(year%4==0)
	{
		if(year%100==0)
		{
			if(year%400==0)
				leap=1;
			else
				leap=0;
		}
		else
			leap=1;
	}
	else
		leap=0;
	if(leap)
		printf("%d is ",year);
	else
		printf("%d is not ",year);
	printf("a leap year.\n");
	return 0;
}

逻辑结构
简化版

#include <stdio.h>
main()
{
	int year;
	scanf("%d",&year);
	if(year%400==0||(year%4==0&&year%100!=0))
	printf("y");
	else
	printf("n");
}
  1. 成绩等级
#include <stdio.h>
int main()
{
	char grade;
	scanf("%c",&grade);
	printf("Your score:");
	switch(grade)
	{
	case 'A': printf("85~100\n");break;
	case 'B': printf("70~84\n");break;
	case 'C': printf("60~69\n");break;
	case 'D': printf("<60\n");break;    
	default:  printf("enter data error!\n");
	}
	return 0;
}

用switch语句实现多分支选择结构
在这里插入图片描述
注意:break语句务必要带!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值