走入C语言的世界3(选择语句和循环语句)

一,选择语句
1.if语句
if语句就是根据给定的条件成立与否选择要执行的语句。
例如:输出一个数,输出其绝对值

if (x <= 0)
		printf("%d", x);
	else
		printf("%d", -x);

例1:求一元二次方程的根

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
	double a, b, c, d, x1, x2, p, q;
	scanf_s("%lf%lf%lf", &a, &b, &c);
	d = b*b - 4 * a*c;
	if (d < 0)
		printf("此方程无解");
	else
	{
		p = -b / (2.0*a);
		q = sqrt(d) / (2.0*a);
		x1 = p + q;
		x2 = p - q;
		printf("输出两个根:x1=%7.2f\nx2=%7.2f\n", x1, x2);
	}
	system("pause");
	return 0;
}

调试结果:
在这里插入图片描述
2,关系运算符与逻辑运算符

  • 在C语言中有以下关系运算符:
    在这里插入图片描述
    关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。 在C语言中,有的运算符有两个操作数,例如
    10+20,10和20都是操作数,+
    是运算符。我们将这样的运算符称为双目运算符。同理,将有一个操作数的运算符称为单目运算符,将有三个操作数的运算符称为三目运算符。
    常见的双目运算符有 +、-、*、/ 等,单目运算符有 ++、-- 等;

  • 逻辑运算符
    &&,||,!
    以上三种逻辑运算符中,逻辑非 ! 的优先级最高,逻辑与 && 次之,逻辑或 || 优先级最低。即算术、逻辑、赋值运算符的优先级顺序为:
    逻辑非 ! >算术 > 逻辑与 &&、逻辑或 || > 赋值=

    逻辑与 && 运算符的运算规则:只有两个操作数均为逻辑真时,结果才为真。其余情况,结果均为假。

    逻辑或 || 运算符的运算规则:只有两个操作数均为逻辑假时,结果才为假。其余情况,结果均为真。

例2:判断是否为闰年

(year%4==0&&year%100!=0||year%400==0

判断非闰年

!(year%4==0&&year%100!=0||year%400==0
(year%4!=0)||(year%100==0&&year%400!=0)

2.switch语句
switch语句是多分支选择语句,括号中的"表达式",其值的类型应为整数类型(包括字符型)。
例3:输入某年某月某日,判断这一天是这一年的第几天?

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int day, month, year, sum, leap;
	printf("please input year,month,day\n");
	scanf_s("%d %d %d", &year, &month, &day);
	switch (month)/*先计算某月以前月份的总天数*/
	{
	case 1:sum = 0; break;
	case 2:sum = 31; break;
	case 3:sum = 59; break;
	case 4:sum = 90; break;
	case 5:sum = 120; break;
	case 6:sum = 151; break;
	case 7:sum = 181; break;
	case 8:sum = 212; break;
	case 9:sum = 243; break;
	case 10:sum = 273; break;
	case 11:sum = 304; break;
	case 12:sum = 334; break;
	default:printf("data error"); break;
	}
	sum = sum + day; //再加上某天的天数
	if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))//判断是不是闰年
		leap = 1;
	else
		leap = 0;
	if (leap == 1 && month>2)//如果是闰年且月份大于2,总天数应该加一天
		sum++;
	printf("It is the %dth day.", sum);
	system("pause");
	return 0;
}

调试结果:
在这里插入图片描述
二.循环语句
1,for语句
若条件表达式的值为真,则执行for语句中的循环体,直到条件为假,跳出循环。
例4:九九乘法表:

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
	int i, j;
	for (i = 1; i < 10; i++)
	{
		for (j = 1; j <= i; j++)
			printf("%d*%d=%-5d", i, j, i*j);
		printf("\n");
	}
	system("pause");
	return 0;
}

调试结果:
在这里插入图片描述
2,while与do…while
两者的区别是while要先判断后执行,do…while先执行一次再进行判断
例5:两者进行比较
while

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i, s=0;
	scanf_s("%d", &i);
	while (i <= 10)
	{
		s = s + i;
		i++;
	}
	printf("s=%d", s);
	system("pause");
	return 0;
}

调试结果:
在这里插入图片描述

do…while

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i, s=0;
	scanf_s("%d", &i);
	do
	{
		s = s + i;
		i++;
	} while (i <= 10);
	printf("s=%d", s);
	system("pause");
	return 0;
}

调试结果:
在这里插入图片描述
while循环,do…while循环和for循环都可以用break语句跳出循环,用continue语句结束本次循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值