if语句的常见概念

C语言是结构化的程序设计语言
这里的结构指的是顺序结构,选择结构,循环结构
分支结构可以使用if ,switch 实现
循环结构可以使用for,while,do while

1.if语句

if语句的语法形式如下:
1. if(表达式)
2. 语句
表达式为真,则语句执行,表达式为假,则语句不执行
在C语言中,0表示假,非0表示真,也就是表达式的结果如果是0,则语句不执行表达式结果为非0则语句执行

下面举个例子:判断一个数是否是奇数

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
	{
		printf("%d为奇数\n",n);
	}
	return 0;
}

2.else语句

如果一个数不是奇数,那就是偶数了,这里判断是奇数还是偶数
就需要if…else… 语句了,语法形式如下
> 1.if(表达式)
2. { 语句}
3. else { }

下面还是举判断奇偶数的例子:

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
	{
		printf("%d为奇数\n",n);
	}
	else
	{
		printf("%d是偶数\n", n);
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述

2.1分支中包含多条语句

默认在if 和 else语句中默认都只控制一条语句

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	printf("成年了\n");
	printf("可以谈恋爱了\n");
    return 0;
}

在这里插入图片描述
在这里插入图片描述
上面的代码,你会发现不管时输入>=18 还是 <18 都会打印可以谈恋爱了
出现上面这两种情况的原因:
是因为 if 默认控制它后面的第一条语句printf(“成年了\n”);
if 中的表达式成立,则执行第一条语句printf(“成年了\n”); 反之不然
但是 printf(“可以谈恋爱了\n”); 是独立存在的,这条语句不受if 语句控制,程序运行就会打印

如果想是if 语句同时控制2条语句,就需要用{ }将代码括起来,else后也可以跟上大括号,如下图代码所示:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年了\n");
		printf("可以谈恋爱了\n");
	}
	else 
	{
		printf("未成年\n");
		printf("不可以谈恋爱了\n");
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述

3.嵌套if

一个 if 语句后可跟一个可选的 else if… else 语句,这可用于测试多种条件。

当使用 if…else if…else 语句时,以下几点需要注意:
一个 if 后可跟零个或一个 else,else 必须在所有else if 之后。
一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
一旦某个 else if匹配成功,其他的 else if 或 else 将不会被测试。

模版如下代码所示:

if(判断条件1)
{
  
}
else if(判断条件2)
{
   
}
else if(判断条件3)
{
  
}
else 
{
   /* 当上面条件都不为真时执行 */
}

下面举一个 嵌套if 的例子:
输入一个整数,如果正数再判断是奇数还是偶数,并输出
反之则是非正数

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num > 0)
	{
		if (num % 2 == 0)
		{
			printf("%d是偶数\n",num);
		}
		else
		{
			printf("%d是奇数\n", num);
		}
	}
	else
	{

		printf("%d是非正数\n", num);
	}

	return 0;
}

3.1 if…else if…else 语句

下面举个具体的例子
在这里插入图片描述

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else if (age >= 18 && age <= 44)
	{
		printf("青年\n");
	}
	else if (age >= 45 && age <= 59)
	{
		printf("中老年\n");
	}
	else if (age >= 60 && age <= 89)
	{
		printf("老年\n");
	}
	else 
	{
		printf("老寿星\n");
	}
	return 0;
}

一旦前面的if 或者某个 else if 匹配成功,其后面的的 else if 或 else 将不会被测试。在这里插入图片描述

3.2 悬空else问题

分析下面这段代码,有什么问题呢
很多初学者上来就判断a=0,不等于1,那就执行else语句,直接打印haha,但结果是什么都不打印

int main()
{
	int a = 0;
	int b = 0;
	if (a == 1)
		if (b == 2)
		printf("hehe\n");
	else
		printf("haha\n");
	return 0;
}

在这里插入图片描述
出现上面这种情况的原因,这种悬空else的问题,如果有多个if 和 else
可以记住这样一条规则,else总是与最接近的if 匹配
上述代码的排版,会让我们误以为else 是与第一个if(a==1)匹配的
当if语句不成立时,自然想到就是执行else语句,打印haha.
但实际上else是和第二个if进行匹配的,因为else与第二个if是最接近的,进行匹配,所以后面的if…else语句其实是嵌套到了第一个if语句中的,如果第一个语句就不成立,嵌套的if 和 else 就没机会执行了,所以最终什么都不打印

写成下面这样的方式更加容易理解

int main()
{
	int a = 0;
	int b = 0;
	if (a == 1)  //不成立,则后面不执行
	{
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}
	return 0;
}

在这里插入图片描述

如果需要else与第一个if进行匹配,也可以像下面这样写
if(a==1)不成立,则执行else语句打印haha

int main()
{
	int a = 0;
	int b = 0;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
    }
	else
	{
			printf("haha\n");
	}
	return 0;
}

在这里插入图片描述

### CSS 实现换行展示的使用方法 在CSS中,可以通过多种方式实现文本的换行以及超出容器范围时的处理效果。以下是几种常见的解决方案: #### 方法一:单行文本溢出并显示省略号 当需要让单行文本不换行,并且超出部分以省略号形式表示时,可以采用以下样式[^1]: ```css .text { position: relative; width: 200px; /* 容器宽度 */ height: 20px; /* 单行高度 */ white-space: nowrap; /* 强制文本不换行 */ overflow: hidden; /* 隐藏溢出的内容 */ text-overflow: ellipsis; /* 显示省略号代替被修剪的文本 */ } ``` 对于某些低版本浏览器可能无法支持`text-overflow`的情况,还可以通过伪元素模拟省略号的效果[^1]: ```css .text::after { content: '...'; display: block; position: absolute; top: 0; right: 0; width: 30px; height: 20px; background: white; /* 背景色需与父级一致 */ } ``` --- #### 方法二:多行文本溢出并显示省略号 如果目标是使多行文本在指定行数后截断并显示省略号,则可利用`-webkit-line-clamp`属性[^2]: ```css .ellipsis-style { width: 200px; /* 固定宽度 */ display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */ -webkit-box-orient: vertical; /* 设置或检索伸缩盒对象的子元素排列方式 */ -webkit-line-clamp: 3; /* 控制显示几行 */ overflow: hidden; /* 隐藏多余内容 */ text-overflow: ellipsis; /* 添加省略号 */ } ``` 需要注意的是,该方案仅适用于WebKit内核的浏览器。 --- #### 方法三:强制文本换行 为了确保文本能够正常换行而不是一直延伸到一行结束,可以使用`word-wrap`或者`word-break`属性[^3]: ```css .example { word-wrap: break-word; /* 当单词过长时自动换行 */ word-break: break-all; /* 强制单词内部换行 */ } ``` 此外,若希望文本保持默认换行行为而不受其他干扰,只需移除可能导致异常的行为声明即可[^3]: ```css .normal-text { white-space: normal; /* 默认情况下允许自然换行 */ } ``` --- #### 方法四:针对输入框内的文字换行 如果是涉及表单控件(如`<input>`或`<textarea>`),则其本身具有不同的换行机制。例如,`<textarea>`天然支持多行编辑而无需额外配置;而对于`<input>`来说,默认为单行不可换行,除非借助JavaScript动态调整尺寸或其他手段来间接达成目的[^4]. --- ### 总结 以上介绍了四种主要场景下的CSS换行策略及其对应解决办法。具体应用时应视实际需求选择合适的方案组合运用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值