20240315,逻辑类型,条件和逗号,函数,数组

刚好看到逻辑类型,今天早上有个很好玩的事情,一早上醒来圆圆的小狗跑到了床下,然后她说
“你是不是打我的小狗了”
我;”我没有,我什么都不知道”
”他的屁股都扁了“
我:“我怎么知道,他的屁股扁了关我什么事"
“你怎么知道他的屁股扁了”
我“不是你说的嘛”
“我诈你的”,然后走了
我“……”不是,自己的妹妹是个傻子,怎么破????

一,逻辑类型

#include<stdbool.h> 
int main(){
	bool a=true;
	bool b=false;
	printf("%d\n",a);
	printf("%d\n",b);

实际上并没有真正的BOOL量的类型,还是整数?反正输出1 0

1.1 逻辑运算

!【逻辑‘非’】,&&【这个念AND AND,逻辑‘与’】,||【这个念OR OR,逻辑’或‘】

1.2 短路

说,从左到右边运算,左边不行了,就不算右边了,说不要把赋值和复合赋值写进去
但是???&&就算算出右边,左边的也不满足条件啊,那不还是不行,算不算有什么意义,我没懂为撒特意说?

int a=-1;
	if(a>0&&a==0){
		printf("OK\n");
	}else{
		printf("A\n");
	}
	printf("%d\n",a);
int b=0;
	if(a>0&&b==0){
		printf("OK\n");
	}else{
		printf("A\n");
	}
	printf("%d\n",a);

 二,条件运算和逗号运算

2.1 条件

条件  【问号】  条件符合的值(操作)【冒号】  条件不符合的值(操作)
==IF(条件){条件符合的值}ELSE{条件不符的值}
什么从右边向左算
不建议用

2.2 逗号

//int a=3+4,5+6;
	int b=(3+4,5+6);
	
	//printf("%d\n",a);
	printf("%d\n",b);

括号里面的,逗号运算,就是后面那个,11,?
说主要是FOR用到

三,函数

3.1 求和

#include<stdio.h>

	void sum(int begin,int end)
	{
		int i;
		int sum=0;
		for(i=begin;i<=end;i++){
			sum+=i;
		}
		printf("%d到%d的和是%d",begin,end,sum);
	}
int main(){
	
	sum(1,10);
	sum(20,30);
	sum(35,45);
	 
	return 0;
}

3.2 定义和调用

void cheer()
	{
		printf("cheer\n");
	}
int main(){
	
	cheer();

反正要带那个小括号
????他知道是哪里调用他,会返回第二次调用他的地方??

3.3 返回

#include<stdio.h>
int max(int a,int b)
{
	int ret;
	if (a > b) {
		ret = a;
	}
	else {
		ret = b;
	}
	return ret;
}
int main() {
	int a, b, c;
	a = 5;
	b = 6;
	c = max(10, 12);
	c = max(a, b);
	c = max(c, 23);
	printf("%d\n", max(a, b));
	return 0;
}

求和是没有返回值的,输出的结果是函数自己运算的结果,但是!没有能产生一个int变量给下面的语句进行其他操作,也不能输出
返回会产生一个变量,能带入其他的运算

3.4 先后关系

#include<stdio.h>
int max(int a, int b);//声明
int main() {

	int a, b, c;
	a = 5;
	b = 6;
	c = max(10, 12);
	c = max(a, b);
	c = max(c, 23);
	printf("%d\n", max(a, b));
	return 0;
}
int max(int a, int b)//定义
{
	int ret;
	if (a > b) {
		ret = a;
	}
	else {
		ret = b;
	}
	return ret;
}

 可以放后面,先给出一个生命,但是,函数定义INT MAIN(){}里面都不行,原型可以放里面外面,
定义和声明都要一致

int max(int f, int t);//声明
int max(int , int );//声明

不检查参数名称,只检查参数类型,对机器没什么意义,对人有

3.5 参数传递

类型管的不严,会自动类型转换

	void swap(int a,int b)
	{
		int c=a;
		a=b;
		b=c;
	}
	
int main(){
	swap(5,6);
	printf("a=%d,b=%d",a,b);
	return 0;
}

平行空间?类似CAD的图纸和视图?
只能传值!!!!而不是把变量A B传进去

#include<stdio.h>

	void swap(int a,int b)
	{
		int c=a;
		a=b;
		b=c;
	}
	
int main(){
	int a=5;
	int b=6;
	swap(a,b);
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

3.6 本地变量

int a = 0;
int b = 0;
printf("a=%d\n", a);
{
	printf("a=%d\n", a);
	int a = 7;
	printf("a=%d\n", a);
}
{
	int a = 7;
	int i = 7;
}
printf("a=%d\n", a);

 3.7 其他

3.7.1,没有参数时

#include<stdio.h>

void swap(void);
//原型要把参数写全,不写,视为不确定用什么参数
//但是,刚注意我写了VOID,不懂
int sum();

int main() {
	int a = 5;
	int b = 6;
	swap(a, b);
	printf("a=%d b=%d\n", a,b);
	return 0;
}

void swap(double a, double b) {
	int c = a/2;
	a = b/2;
	b = c;
	printf("a=%f b=%f\n", a, b);
}

int sum(int a, int b) {
	int i = a + b;
	return i;
}

总结就是,好好写,都对上

3.7.2 逗号

f(a,b)//只是一个标点符号,输入两个值
f((a,b))//一个值

3.7.3 其他

不可以嵌套函数,INT MAIN()也是一个函数,return0还是有人看的

四,数组

4.1 平均数和输出

int x = 0;
double sum=0 ;
double ret = 0;
int i = 0;

scanf_s("%d", &x);
while (x > 0) {
	sum += x;
	i++;
	ret = sum / i;
	scanf_s("%d", &x);//我又忘了捏
}
printf("和是%.0f,平均数是%.3f\n",sum, ret);

scanf放在循环里面真的可以把我整神,还有输出,double不可以%d输出,但是可以%。0F

#include<stdio.h>
int main(){
	int x = 0;
	double sum=0 ;
	double ret = 0;
	int i = 0;
	int number[100];
	//能放100个数的数组
	scanf_s("%d", &x);
	while (x > 0) {
		number[i] = x;
		//i会不断递增,把X的值放进,I的位置上的那个单元?
		{
			int t;
			printf("%d", i);
			for (t = 0; t < i; t++) {
				printf("%d\t", number[t]);
			}
			printf("\n");
		}//检查数组的内容,大循环里面的小循环,进入这个循环就会把数组的数挨个输出一遍
         //所以除了开头,number【1】只代表这个数组里面,序号为1的一个变量
		sum += x;
		i++;
		ret = sum / i;
		scanf_s("%d", &x);
	}
	printf("和是%.0f,平均数是%.3f\n大于平均数的数是",sum, ret);
	int cnt ;
	for (cnt = 0; i > cnt; cnt++) {
		//遍历他?循环判断,大于平均数输出!
		if (number[cnt] > ret) {
			printf("%d\t", number[cnt]);
		}
	}
	printf("\n");
	return 0;
}

4.2 定义

数组——变量类型【数组里面的东西的变量类型】变量名称[元素数量]
数组的单元——变量名称[下标OR索引,从0开始计数],0——下标-1

#include<stdio.h>

void f();
int main() {
	f();
	printf("here\n");
	return 0;
}

void f() {
	int a[10];
	a[10] = 0;
}

越界!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值