C语言基础语法进阶

        今天主要学习了C语言中的一些基础语法点,包括三目运算符、逗号表达式、switch语句、do-while循环,以及二维数组的基本操作。

(一)三目运算符

三目运算符在C语言中仅有一个,它是一个简洁的条件判断表达式。

int main()
{
	//三目运算符 a < b ? a:b  判断a和b哪个更小
	int a, b,max;
	while (scanf("%d %d", &a, &b)) {
		// 使用三目运算符找出a和b中较小的值,并赋值给max
		printf("%d\n", max = a < b ? a:b);
	}
	return 0;
}

(二)逗号表达式

逗号表达式会从左到右依次执行每个子表达式,整个表达式的值是最后一个子表达式的值。

#include<stdio.h>

int main()
{
	int a = 0;
	int b = 10;
	int c = 10;
	// 这是一个逗号表达式:先执行a++,然后判断b==c
	// if语句的判断条件是逗号表达式的最后一个子表达式b==c
	if (a++, b == c)
	{
		// 因为b==c为真,所以会执行这里的代码
		// a++已经执行,所以a的值是1
		printf("%d",a);
	}
	return 0;
}
#include<stdio.h>

int main()
{
	int a = 0; 
	int c = 9; 
	int b;
	// 逗号表达式:先执行a++,然后执行c,整个表达式的值为最后一个子表达式c的值
	// 但赋值运算符=的优先级高于逗号,所以先执行b = a++,b被赋值为a的旧值0
	b = a++, c;
	printf("b = %d", b); // 输出b=0,因为先执行了b=a++
	return 0;
}

(三)switch语句

switch 语句用于根据表达式的值来执行不同的代码块。这里用一个例子展示了如何判断某年2月的天数(考虑闰年)。

#include<stdio.h>

int main()
{
	int year; 
	int mon;
	while (scanf("%d %d", &year, &mon))
	{
		switch (mon)
		{
		case 2:{
			// 判断是否为闰年的表达式:(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
			// 如果是闰年,该表达式为1,否则为0
			// 2月的天数为 28 + 0(非闰年)或 28 + 1(闰年)
			printf("february,%d have %d days\n", year, 28 + (year % 4 == 0 && year % 100 != 0 || year % 400 == 0));
			break;
		}
		case 3: {
			printf("31\n");
			break;
		}
		default: // 用来处理输入有误的情况
			printf("error\n");
			break;
		}
	}
	return 0;
}

(四)do-while 循环

do-while 循环的特点是,无论while内的表达式是否符合条件,都会先执行一次do内的代码,再进行判断。

#include<stdio.h>

int main()
{
	int i = 0;
	int r = 0;
	do {
		// 先执行一次循环体,r被赋值为i的旧值0,然后i自增为1
		r = i++;
		
	} while (i <= 10 && i > 0); 
	// while条件判断:i=1,符合条件,继续循环
	// ...循环继续,直到i=11,条件不满足,循环结束
	// 最后一轮循环时,i=10,r=9,i++后i=11
	// 然后判断while(i<=10 && i>0),条件不满足,循环终止
	// 所以r的最终值为10
	printf("%d", r); // 最终输出10
}

(五) 二维数组

二维数组是C语言中用于处理表格数据的常见数据结构。

#include<stdio.h>

int main()
{
	int i = 0; 
	int j = 0;
	// 声明一个3行4列的二维数组
	int arr[3][4];
	
	// 嵌套循环,用于从标准输入读取数据填充二维数组
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}

	// 嵌套循环,用于打印二维数组中的所有元素
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]); // 打印每个元素后加一个空格
		}
		printf("\n"); // 每打印完一行,换行
	}
	return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值