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 hasnt real roots
");	//输出“此方程无实根”
	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:
x1=%7.2f
x2=%7.2f
",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
");
	else
	{
          
   	disc=b*b-4*a*c;
		if(fabs(disc)<=1e-6)//abs函数求整数的绝对值,fabs函数求实数的绝对值
			printf("has two equal roots:%8.4f
",-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
",x1,x2);
			}
			else
			{
          
   	realpart=-b/(2*a);			//realpart是复根的实部
				imagpart=sqrt(-disc)/(2*a);	//imagpart是复根的虚部
				printf("has complex roots:
");
				printf("%8.4f+%8.4fi
",realpart,imagpart);	//输出一个复数
				printf("%8.4f-%8.4fi
",realpart,imagpart);	//输出另一个复数
			}
	}
	return 0;
}

if语句的形式

形式1 没有else子句

if(表达式) 语句1;

形式2 有else子句部分

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

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

if(表达式1)
	语句1;
else if(表达式2)
	语句2;
else 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.
");
	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
");break;
	case B: printf("70~84
");break;
	case C: printf("60~69
");break;
	case D: printf("<60
");break;    
	default:  printf("enter data error!
");
	}
	return 0;
}

用switch语句实现多分支选择结构 注意:break语句务必要带!

经验分享 程序员 微信小程序 职场和发展