2.C语言结构

1语句

c语言遇到分号就是一条语句
int main()
{
	;//空语句
	return 0;
}

2分支语句

2.1if语句

if语句的三种形式

if(表达式)
    语句;if(表达式)
      语句1;
else
     语句2;//多分枝
if(表达式1)
       语句1;
else if(表达式2)
       语句2;
else
       语句3;

else和距离最近的if 结合

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	    if (b == 2)
		printf("hehe\n");
	else
		printf("haha\n");
	return 0;
}
//无执行结果

if (a == 1)执行完到return 0,else和离他最近的if(b==2)的if相结合
②判断一个数是不是奇数

int IsOdd(int num)
{
	if (num%2 != 0)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int main()
{
	int num = 0;
	int ret = 0;
	scanf("%d", &num);//!!!这块不能加换行
	ret = IsOdd(num);
	if (ret == 1)
	{
		printf("是奇数");
	}
	else
	{
		printf("不是奇数");
	}
	return 0;
}

③输出100-200的奇数

int IsOdd(int num)
{
	if (num%2 != 0)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int main()
{
	int i = 1;
	for (i = 1; i <= 100; i++)
	{
		int ret = IsOdd(i);
		if (ret == 1)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

2.2switch语句

①switch语句在遇到break才会结束

int main()
{
	int day = 2;
	switch (day)
	{
	case 1:
		printf("周一\n");
		case 2:
			printf("周二\n");
		case 3:
			printf("周三\n");
			break;
		case 4:
			printf("周四\n");
			break;
		case 5:
			printf("周五\n");
			break;
		default:
		printf("周末\n");
		break;
}
}
//打印结果周二周三,输入的是2,应该是case2,但是case2没有break,直到case2遇到break才结束

switch遇到break会结束,不再执行,所以每条语句后面都加break
②switch参数只能是整型,float,double都不能做switch参数
③switch可以嵌套

int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{
		case 1:
			n++;
		case 2:
			m++;//m=4
			n++;//n=3
			break;
		}//break结束之后由于外面的case没有break还有继续往case4走
	case 4:
		m++;//m=5
		break;
	default:
		break;
		}
	printf("m=%d,n=%d\n", m, n);
	return 0;
	}
	//m=5,n=3

switch需要注意的
①每条case后面都加上break
②default语句
当switch表达式的值不匹配case语句时执行default语句

3循环语句

3.1while 语句

3.1.1while基本语法

while(表达式)
循环语句;

输出1-10之间的数字

int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

3.1.2break和continue

break:结束循环
continue:结束本趟循环
①break

int main()
{
	int i = 1;
	while (i <= 10){
		if (i == 5)
			break;//当i=5的时候执行break语句,while循环就会结束打印5以及后续的循环都会结束
		printf("%d ", i);
		i++;
	}
	return 0;
}
//1 2 3 4

②continue

int main()
{
	int i = 1;
 	while (i <= 10){
		if (i == 5)
			continue;//本趟循环结束,后面两句不会执行,然后开始执行while(i <=5)和if(i==5)又到continue然后陷入循环
		printf("%d ", i);
		i++;
	}
	return 0;
}
//1 2 3 4
int main()
{
	int i = 1;
 	while (i <= 10){
		i++;
		if (i == 5)
			continue;
		printf("%d ", i);
		
	}
	return 0;
}
//2 3 4 6 7 8 9 10
int main()
{
	int i = 1;
 	while (i <= 10){
		printf("%d ", i);
		i++;
		if (i == 5)
			continue;//当i =5时本趟循环结束,后续不会执行,但该循环后续没有语句所以continue不会对循环造成影响
	}
	return 0;
}

3.2getchar()函数

getchar():从键盘读取一个字符
!!读字符返回int 类型

#include<stdio.h>
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
		putchar(ch);
	return 0;
}

①EOF:ending of flow,代表文件结尾,从键盘读到EOF结束也就是读到-1结束
EOF=-1
ctrl+z:代表-1
ctrl+c:终止程序
从键盘输入-1就是字符(-1)并不是数字-1
②从键盘输入数据后会放入缓冲区,使用while循环以及getchar()函数会把缓冲区里的字符一个一个读出来

//打印1-9之间的数字
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		if (ch < '0' || ch>'9')
			continue;
		putchar(ch);
	}
	return 0;
}

3.3for循环

for(表达式1;表达式2;表达式3)
循环语句

表达式1:初始化循环变量
表达式2:条件判断,用于终止循环
表达式3:循环条件的调整
表达式1→表达式2→循环语句→表达式3→表达式2→循环语句→表达式3

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

①for循环中也可以用break和continue

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;
		printf("%d ", i);
	}
	return 0;
}
//1 2 3 4
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}
//1 2 3 4 6 7 8 9

②一个表达式里面可以有两个语句

int main()
{
	int x = 0;
	int y = 0;
	for ( x = 0, y = 0; x < 2 && y < 5; x++, y++)
		printf("hehe\n");
	return 0;
}

int main()
{
	int i = 0;
	int k = 0;
	for (i = 0, k = 0; k = 0; i++, k++)
		k++;
	return 0;
}
//不会执行,没有循环条件,=是赋值符号

3.4do…while()循环

do
循环语句;
while(表达式);
int main()
{
	int i = 0;
	do{
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}

do…while()和while区别:do…while()肯定会执行一次上面的代码不执行do…while里的循环i=0也会执行

for,while,do…while三个没有区别;不知道循环次数的时候用while,while必须执行一次的时候用do…while

3.5goto函数

goto语句:跳转到下一个标签
goto常用的用法终止 程序在某些深处嵌套的结构,跳出两层或多层循环

//关机程序
int main()
{
	char input[10] = { 0 };
	system("shutdown -s -t 60");
again:
	printf("电脑将在1分钟内关机,如果输入:我是猪,就取关机!\n请输入:");
	scanf("%s", input);
	if (0 == strcmp(input, "我是猪"))
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}

作业

①n!

do...while
int main()
{
	int i = 0;
	int ret = 1;
	do{
		i++;
		ret *= i;
	} while (i <5);//循环执行完才会判断这里如果是i<=5,i等于5 的时候满足条件会再执行一次i++
	printf("%d ", ret);
	return 0;
}
#if 0
//while
int main()
{
	int i = 0;
	int ret = 1;
	while (i <= 5)
	{
		i++;
		ret *= i;
	}
	printf("%d ", ret);
	return 0;
}
#endif
#if 0
//for
int main()
{
	int i = 0;
	int ret = 1;
	for (i = 1; i <= 5; i++){
		ret *= i;

	}
	printf("%d ", ret);
	return 0;
}
#endif

②1!+2!+3!+n!

#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int ret = 1;
	int sum = 0;
	int n = 0;
	scanf("%d", &n);
	for (j = 1; j <= 5; j++){
		ret = 1;//!!!在j=2嵌套循环结束之后ret=2,j=3的时候ret会从3*1*2,因此每次循环要将ret赋值为1
		for (i = 1; i <= j; i++){
			ret *= i;
		}
		sum += ret;
	}
	printf("%d ", sum);
	return 0;
}

③在一个有序数组中查找具体的某个数字N

int BinarySearch(int arr[], int len, int n)
{
	int left = 0;
	int right = len - 1;
	while (left <= right){
		int mid = (left + right) / 2;
		if (arr[mid] < n){
			left = mid + 1;
		}
		else if (arr[mid] > n)
		{
			right = mid - 1;
		}
		else
			return mid;//不能打印因为函数没有返回值
	}
	return -1;//如果没有找到返回-1
	}
int main()
{
	int arr[] = {6,9,11,13,15,20,25,50};
	int index = BinarySearch(arr, 8, 15);
	printf("%d", index);
}

④模拟用户登录场景,并且只能登录三次

#define _CRT_SECU_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
	int count = 3;
	char password[10];
	while (count > 0)
	{
		printf("请输入您的密码:");
		scanf("%s", password);
		//srcmp(x,y)判断x和y是否相等,如果相等返回0
		if (strcmp(password, "123456") == 0){
			printf("登录成功\n");
			break;
		}
		else
		{
			count--;
			printf("密码出入错误,您还有%d次机会\n", count--);
		}
	}
	return 0;
}


⑤编写代码演示多个字符从两端移动,向中间汇聚

int main()
{
	char str[] = "welcome to xian";
	char str2[] = "###############";
	int len = strlen(str);
	int left = 0;
	int right = len-1;
	while (left <= right){
		Sleep(1000);//每次打印间歇1000毫秒
		str2[left] = str[left];
		str2[right] = str[right];
		left++;
		right--;
		printf("%s\n", str2);
	}
	return 0;
}
//打印结果
w#############n
we###########an
wel#########ian
welc#######xian
welco##### xian
welcom###o xian
welcome#to xian
welcome to xian

⑥1/1-2/i+3/i…1/100


int main()
{
	int i = 1;
	int flg = 1;
	double sum = 0.0;//求和肯定是浮点数
	for (i = 1; i <= 100; i++)
	{
		sum = sum + 1.0 / i*flg;//1/i肯定是浮点数,如果是1的话小数部分就会被舍去
		flg = -flg;
	}
	printf("%lf", sum);
	return 0;
}

⑦交换两个数组的值

int main()
{
	int arr[4];
	int arr2[4];
	int tmp = 0;
	int i = 0;
	for (i = 0; i <4; i++)
	{
		scanf("%d", &arr[i]);
	}
	
	for (i = 0; i <4; i++)
	{
		scanf("%d", &arr2[i]);
	}

	for (i = 0; i <= 3; i++)
	{
		tmp = arr[i];
		arr[i] = arr2[i];
		arr2[i] = tmp;

	}
	printf("\n");
for (i = 0; i <4; i++)
	{
		printf("%d ", arr[i]);
	}
printf("\n");
	for (i = 0; i <4; i++)
	{
		printf("%d ", arr2[i]);
	}
	return 0;
}

作业2

①找出100-200之间的素数

int main()
{
	//i定义的是100-20之间的数字
	int i = 0;
	for (i = 100; i <= 200; i++){
		int j = 0;
		//j是2-i之间的数字,用i除2-i之间的所有数字,如果有结果是0 的情况说明i不是素数
		for (j = 2; j < i; j++){
			if (i%j == 0){
				break;}
			//else{
				//printf("%d\n", i);//i=9,j=2的时候会打印9
			//}
			}
		//如果i把2-i之间的素数除完,没有等于0 的情况说明i是素数
			if (j >= i){
			printf("%d\n", i);}
			}
			return 0;
			}
int main()
{
	//如果i不能被2-i/2之间的素数整除说明i是素数
	int i = 0;
	for (i = 100; i <= 200; i++){
		int j = 0;
		for (j = 2; j < i/2; j++){
			if (i%j == 0){
				break;
			}
		}
		if (j >= i/2){
			printf("%d\n", i);
		}
	}
	return 0;
}

i

nt main()
{
	//如果i不能被2-根号i之间的素数整除说明i是素数
	int i = 0;
	for (i = 100; i <= 200; i++){
		int j = 0;
		for (j = 2; j <sqrt((double)i); j++){
			if (i%j == 0){
				break;
			}
		}
		if (j >= sqrt((double)i)){
			printf("%d\n", i);
		}
	}
	return 0;
}
int main()
{
	//如果i不能被2-根号i之间的素数整除说明i是素数,偶数肯定不是素数
	int i = 0;
	for (i = 101; i <= 200; i+=2){
		int j = 0;
		for (j = 2; j <sqrt((double)i); j++){
			if (i%j == 0){
				break;
			}
		}
		if (j >= sqrt((double)i)){
			printf("%d\n", i);
		}
	}
	return 0;
}

②输出乘法口诀

int main()
{
	int i = 0;
	for (i = 1; i <= 9; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++)
		{
			printf(" %d*%d= %-2d", i, j, i*j);//-代表向左靠齐,-2向左空2格靠齐
		}
		printf("\n");
	}
	return 0;
}

③打印1000-2000之间的闰年

#include<stdio.h>
int main()
{
	int year = 0;
	for (year = 1000; year <= 2000; year++){
		if( (((year % 4) == 0) && ((year % 100)!= 0)) || ((year % 400) == 0)){
			printf("%d\n", year);
		}
	}
	return 0;
}

④换两个数之间的值

int main()
{
	int a = 10;
	int b = 20;
	int tmp = 0;
	tmp = a;
	a = b;
	b = tmp;
	printf("%d\n%d\n", a, b);
	return 0;  
}
//不创建新的 变量,交换2个变量的值,利用加减
#include<stdio.h>
#include<math.h>
int main()
{
	int a = 20;
	int b = 30;
	a = a + b;//a= 20+30=50
	b = a - b;//b=50-30=20
	a = a - b;//a=50-20=30
	printf("%d\n%d\n", a, b);
	return 0;
}
//不创建新的变量,交换2个变量的值,利用异或(相同的为0,不同的为1)
#include<stdio.h>
#include<math.h>
int main()
{
	int a = 4;//0100
	int b = 6;//0110
	a = a^b;//0010
	b = a^b;//0100
	a = a^b;//0110
	printf("%d\n%d\n", a, b);
	return 0;
}

⑤求10个整数里最大的值

#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<limits.h>
int main()
{
	int arr[10];
	int i = 0;
	int max = 0;
	for (i = 0; i < 10; i++){
		scanf("%d", &arr[i]);
	}
		max = arr[0];
		for (i = 1; i < 10; i++)
		{
			if (arr[i]>max){
				max = arr[i];
			}
		}
		printf("%d\n", max);
		return 0;
	}

⑥将三个整数从大到小输出

#include <stdio.h>
int main()
{
	int a = 10;
	int b = 3;
	int c = 6;
	int temp = 0;
	if (a < b){
		temp = a;
		a = b;
		b = temp;
	}
	if (a < c){
		temp = a;
		a = c;
		c = temp;
	}
	if (b < c){
		temp = b;
		b = c;
		c = temp;
	}
	printf("%d\n%d\n%d\n", a,b,c);
	return 0;
}

⑦求2个数的最大公约数(两个数余数为0时的除数)

#include<stdio.h>
int main()
{
	int a = 24;
	int b = 18;
	int c = 0;
	while (a%b != 0){
		c = a%b;
		a = b;
		b = c;
	}
	printf("%d\n", b);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值